Files
realtime_voice_bot/src/index.ts

42 lines
1.5 KiB
TypeScript

import process from "node:process";
import { loadConfig, requireAssistantRuntimeConfig, requireDiscordRuntimeConfig } from "./config.js";
import { runDiscordBot } from "./discord-main.js";
import { Logger } from "./logger.js";
import { dumpLocalTtsWave, printLocalAudioDevices, runLocalAssistant, runLocalTtsSmokeTest } from "./local-main.js";
const mode = process.argv[2] ?? "discord";
const config = loadConfig();
const logger = new Logger(config.LOG_LEVEL);
async function main(): Promise<void> {
switch (mode) {
case "discord":
await runDiscordBot(requireDiscordRuntimeConfig(config), logger);
return;
case "local":
await runLocalAssistant(requireAssistantRuntimeConfig(config), logger);
return;
case "local-devices":
await printLocalAudioDevices();
return;
case "local-say": {
const text = process.argv.slice(3).join(" ").trim() || "안녕하세요. TTS 단독 재생 테스트입니다.";
await runLocalTtsSmokeTest(requireAssistantRuntimeConfig(config), logger, text);
return;
}
case "local-say-dump": {
const text = process.argv.slice(3).join(" ").trim() || "안녕하세요. TTS WAV 파일 테스트입니다.";
await dumpLocalTtsWave(requireAssistantRuntimeConfig(config), logger, text);
return;
}
default:
throw new Error(`알 수 없는 실행 모드입니다: ${mode}. 사용 가능: discord, local, local-devices, local-say, local-say-dump`);
}
}
void main().catch((error) => {
logger.error("Fatal startup error", error);
process.exit(1);
});