feat(voice): push-to-talk button — браузерный mic+VAD pipeline
All checks were successful
Deploy / deploy (push) Successful in 6m53s

Шаг 2 миграции: убираем зависимость от Python-агента для базового
голосового сценария. Тап на круглую кнопку-микрофон в правом нижнем
углу → MicVAD (Silero v5) ловит речь → автостоп по тишине → /api/voice/stt
→ /api/voice/chat → ответ через SSE и TTS как раньше.

- components/VoiceController.tsx — push-to-talk UI + MicVAD orchestration
- VoiceOverlay теперь слушает window CustomEvent('voice-local'), чтобы
  орб моргал ещё до round-trip на сервер (wake/listening мгновенно).
- public/vad/ — silero v5/legacy onnx + ort wasm + audio worklet,
  раздаются через baseAssetPath: '/vad/' (не зависит от внешнего CDN,
  важно если планшет без интернета или с RU-блоком).

Что осталось от home-voice-assistant: только wake-word. После Шага 3
(onnxruntime-web + перенос openwakeword .onnx) Python-агент уйдёт целиком.
This commit is contained in:
Cosmo
2026-04-27 08:48:22 +00:00
parent eeac2eefb3
commit 93bf34f216
10 changed files with 509 additions and 51 deletions

View File

@@ -10,6 +10,7 @@
},
"dependencies": {
"@anthropic-ai/sdk": "^0.65.0",
"@ricky0123/vad-web": "^0.0.30",
"clsx": "^2.1.1",
"framer-motion": "^11.1.7",
"googleapis": "^171.4.0",
@@ -17,6 +18,7 @@
"https-proxy-agent": "^7.0.6",
"lucide-react": "^0.376.0",
"next": "14.2.3",
"onnxruntime-web": "^1.24.3",
"react": "^18",
"react-dom": "^18",
"undici": "^7.16.0"