Gate loopback logs behind DEBUG env

This commit is contained in:
2026-05-02 21:54:49 +09:00
parent 962ff7037b
commit 48937c684b
4 changed files with 23 additions and 8 deletions

View File

@@ -6,6 +6,7 @@ LOCAL_AI_PYTHON=python
# Linux: pactl list sources short 에서 monitor/source 이름
AUDIO_SOURCE=
DEBUG=false
WHISPER_MODEL=large-v3-turbo
WHISPER_LANGUAGE=ko
WHISPER_DEVICE=auto

View File

@@ -37,6 +37,9 @@ bun run start:loopback
- `AUDIO_SOURCE`
- `bun run devices` 에서 보이는 `ffmpeg dshow` 오디오 장치 이름
- 보통 `Stereo Mix`, 오디오 인터페이스 loopback 채널, 가상 케이블 입력 같은 이름을 넣습니다
- `DEBUG`
- `true`면 상세 로그 출력
- `false`면 전사 결과만 출력
- `WHISPER_MODEL`
- 기본값 `large-v3-turbo`
- `WHISPER_LANGUAGE`
@@ -79,6 +82,7 @@ bun run start:loopback
```env
LOCAL_AI_PYTHON=python
AUDIO_SOURCE=
DEBUG=false
WHISPER_MODEL=large-v3-turbo
WHISPER_LANGUAGE=ko
WHISPER_DEVICE=auto

View File

@@ -15,6 +15,10 @@ const envSchema = z.object({
LOCAL_AI_VENV_PATH: z.string().min(1).default(".local-ai/.venv"),
LOCAL_AI_PYTHON: emptyToUndefined,
AUDIO_SOURCE: emptyToUndefined,
DEBUG: z
.string()
.optional()
.transform((value) => value?.trim().toLowerCase() === "true"),
WHISPER_MODEL: z.string().min(1).default("large-v3-turbo"),
WHISPER_LANGUAGE: z.string().min(1).default("ko"),
WHISPER_DEVICE: z.enum(["auto", "cuda", "cpu"]).default("auto"),

View File

@@ -10,7 +10,7 @@ const mode = process.argv[2] ?? "loopback";
async function runLoopback(): Promise<void> {
const config = loadConfig();
const logger = new Logger(config.LOG_LEVEL);
const logger = new Logger(config.DEBUG ? config.LOG_LEVEL : "error");
const stt = new FasterWhisperSttService(config, logger);
let capture = null as ReturnType<typeof spawnLoopbackCapture> | null;
let shuttingDown: Promise<void> | null = null;
@@ -95,8 +95,12 @@ async function runLoopback(): Promise<void> {
logger.info("빈 전사 결과");
} else {
logger.info("Transcript", { index: next.index, text });
if (config.DEBUG_TRANSCRIPTS) {
console.log(`\n[text] ${text}\n`);
if (config.DEBUG) {
if (config.DEBUG_TRANSCRIPTS) {
console.log(`\n[text] ${text}\n`);
}
} else {
console.log(text);
}
}
} catch (error) {
@@ -183,11 +187,13 @@ async function runLoopback(): Promise<void> {
}
});
console.log("실시간 출력장치 STT를 시작합니다. Ctrl+C 로 종료합니다.");
console.log(`source: ${config.AUDIO_SOURCE ?? "unset"}`);
console.log(`model: ${config.WHISPER_MODEL}`);
console.log(`language: ${config.WHISPER_LANGUAGE}`);
console.log(`beam: ${config.WHISPER_BEAM_SIZE}`);
if (config.DEBUG) {
console.log("실시간 출력장치 STT를 시작합니다. Ctrl+C 로 종료합니다.");
console.log(`source: ${config.AUDIO_SOURCE ?? "unset"}`);
console.log(`model: ${config.WHISPER_MODEL}`);
console.log(`language: ${config.WHISPER_LANGUAGE}`);
console.log(`beam: ${config.WHISPER_BEAM_SIZE}`);
}
setInterval(() => {
const now = Date.now();