Gate loopback logs behind DEBUG env
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"),
|
||||
|
||||
22
src/index.ts
22
src/index.ts
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user