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 이름
|
# Linux: pactl list sources short 에서 monitor/source 이름
|
||||||
AUDIO_SOURCE=
|
AUDIO_SOURCE=
|
||||||
|
|
||||||
|
DEBUG=false
|
||||||
WHISPER_MODEL=large-v3-turbo
|
WHISPER_MODEL=large-v3-turbo
|
||||||
WHISPER_LANGUAGE=ko
|
WHISPER_LANGUAGE=ko
|
||||||
WHISPER_DEVICE=auto
|
WHISPER_DEVICE=auto
|
||||||
|
|||||||
@@ -37,6 +37,9 @@ bun run start:loopback
|
|||||||
- `AUDIO_SOURCE`
|
- `AUDIO_SOURCE`
|
||||||
- `bun run devices` 에서 보이는 `ffmpeg dshow` 오디오 장치 이름
|
- `bun run devices` 에서 보이는 `ffmpeg dshow` 오디오 장치 이름
|
||||||
- 보통 `Stereo Mix`, 오디오 인터페이스 loopback 채널, 가상 케이블 입력 같은 이름을 넣습니다
|
- 보통 `Stereo Mix`, 오디오 인터페이스 loopback 채널, 가상 케이블 입력 같은 이름을 넣습니다
|
||||||
|
- `DEBUG`
|
||||||
|
- `true`면 상세 로그 출력
|
||||||
|
- `false`면 전사 결과만 출력
|
||||||
- `WHISPER_MODEL`
|
- `WHISPER_MODEL`
|
||||||
- 기본값 `large-v3-turbo`
|
- 기본값 `large-v3-turbo`
|
||||||
- `WHISPER_LANGUAGE`
|
- `WHISPER_LANGUAGE`
|
||||||
@@ -79,6 +82,7 @@ bun run start:loopback
|
|||||||
```env
|
```env
|
||||||
LOCAL_AI_PYTHON=python
|
LOCAL_AI_PYTHON=python
|
||||||
AUDIO_SOURCE=
|
AUDIO_SOURCE=
|
||||||
|
DEBUG=false
|
||||||
WHISPER_MODEL=large-v3-turbo
|
WHISPER_MODEL=large-v3-turbo
|
||||||
WHISPER_LANGUAGE=ko
|
WHISPER_LANGUAGE=ko
|
||||||
WHISPER_DEVICE=auto
|
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_VENV_PATH: z.string().min(1).default(".local-ai/.venv"),
|
||||||
LOCAL_AI_PYTHON: emptyToUndefined,
|
LOCAL_AI_PYTHON: emptyToUndefined,
|
||||||
AUDIO_SOURCE: 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_MODEL: z.string().min(1).default("large-v3-turbo"),
|
||||||
WHISPER_LANGUAGE: z.string().min(1).default("ko"),
|
WHISPER_LANGUAGE: z.string().min(1).default("ko"),
|
||||||
WHISPER_DEVICE: z.enum(["auto", "cuda", "cpu"]).default("auto"),
|
WHISPER_DEVICE: z.enum(["auto", "cuda", "cpu"]).default("auto"),
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ const mode = process.argv[2] ?? "loopback";
|
|||||||
|
|
||||||
async function runLoopback(): Promise<void> {
|
async function runLoopback(): Promise<void> {
|
||||||
const config = loadConfig();
|
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);
|
const stt = new FasterWhisperSttService(config, logger);
|
||||||
let capture = null as ReturnType<typeof spawnLoopbackCapture> | null;
|
let capture = null as ReturnType<typeof spawnLoopbackCapture> | null;
|
||||||
let shuttingDown: Promise<void> | null = null;
|
let shuttingDown: Promise<void> | null = null;
|
||||||
@@ -95,9 +95,13 @@ async function runLoopback(): Promise<void> {
|
|||||||
logger.info("빈 전사 결과");
|
logger.info("빈 전사 결과");
|
||||||
} else {
|
} else {
|
||||||
logger.info("Transcript", { index: next.index, text });
|
logger.info("Transcript", { index: next.index, text });
|
||||||
|
if (config.DEBUG) {
|
||||||
if (config.DEBUG_TRANSCRIPTS) {
|
if (config.DEBUG_TRANSCRIPTS) {
|
||||||
console.log(`\n[text] ${text}\n`);
|
console.log(`\n[text] ${text}\n`);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
console.log(text);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.warn("STT failed", error);
|
logger.warn("STT failed", error);
|
||||||
@@ -183,11 +187,13 @@ async function runLoopback(): Promise<void> {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (config.DEBUG) {
|
||||||
console.log("실시간 출력장치 STT를 시작합니다. Ctrl+C 로 종료합니다.");
|
console.log("실시간 출력장치 STT를 시작합니다. Ctrl+C 로 종료합니다.");
|
||||||
console.log(`source: ${config.AUDIO_SOURCE ?? "unset"}`);
|
console.log(`source: ${config.AUDIO_SOURCE ?? "unset"}`);
|
||||||
console.log(`model: ${config.WHISPER_MODEL}`);
|
console.log(`model: ${config.WHISPER_MODEL}`);
|
||||||
console.log(`language: ${config.WHISPER_LANGUAGE}`);
|
console.log(`language: ${config.WHISPER_LANGUAGE}`);
|
||||||
console.log(`beam: ${config.WHISPER_BEAM_SIZE}`);
|
console.log(`beam: ${config.WHISPER_BEAM_SIZE}`);
|
||||||
|
}
|
||||||
|
|
||||||
setInterval(() => {
|
setInterval(() => {
|
||||||
const now = Date.now();
|
const now = Date.now();
|
||||||
|
|||||||
Reference in New Issue
Block a user