feat: 실시간 음성대화 GPU 엔진(whisper+XTTS) + Ollama 쿼터 자동 폴백

- voice_engine.py: faster-whisper(STT)+XTTS-v2(TTS)를 상시 로드해 로컬에서
  서빙하는 WebSocket 엔진 (배치/스트리밍 프로토콜)
- routes-voice-realtime.ts: 브라우저 WS를 voice_engine.py로 그대로 프록시
- voice-call.js/worklets: 실시간 연속 대화 모드(VAD 기반 발화 감지,
  barge-in), 마크다운/표/URL을 정리하고 읽는 sanitizeForSpeech 포함
- tts.ts/stt.ts: xtts_gpu/whisper_gpu provider 분기 추가
- ollama-client.ts/factory.ts: Ollama Cloud 세션 쿼터 초과 시
  설정된 fallback 모델로 자동 재시도

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
kim
2026-07-09 18:05:55 +09:00
co-authored by Claude Sonnet 5
parent 94caf1c4da
commit 22c692fec3
14 changed files with 1153 additions and 14 deletions
+9 -3
View File
@@ -232,16 +232,22 @@
"path": "/hooks"
},
"voice": {
"enabled": false,
"enabled": true,
"stt": {
"provider": "whisper_cpp",
"provider": "whisper_gpu",
"model": "ggml-base.bin",
"language": "ko"
},
"tts": {
"provider": "edge_tts",
"provider": "xtts_gpu",
"model": "ko_KR-kss-medium",
"voice": "ko-KR-SunHiNeural"
},
"engine": {
"port": 8765,
"sttModel": "medium",
"speakerWav": "/home/kim/homeclaw/.smallclaw/voice/speaker_ko.wav",
"device": "cuda"
}
},
"telegram": {