my_voice_assistant_v3/scripts
Dieter Schlüter 0d907a1886 feat(barge-in): Unterbrechen der KI-Antwort per Mikrofon-Button und Enter
Web-Interface (app.js):
- Mic-Button hat jetzt 3 Zustände: idle (grün 🎤) / Aufnahme (rot pulsierend) /
  KI antwortet (amber ⏹, klicken = Barge-in)
- Barge-in sendet {"type":"interrupt"} auf der aktiven WS-Verbindung (activeWs)
  und stoppt alle laufenden AudioBufferSourceNodes sofort (stopAudio)
- busy + Button-Reset erfolgen automatisch wenn die WS schliesst

Terminal (voice_loop.py):
- _stdin_watcher(): polling via select.select (nicht-blockierend, kein Thread-Leak)
  wartet auf Enter-Tastendruck waehrend Server antwortet
- _send_and_play() raced one_turn gegen _stdin_watcher mit asyncio.wait;
  bei Barge-in: interrupt-Frame an Server, Player.terminate(), feeder beenden
- Feedback: "↩ Unterbrochen — drücke [Enter] für neue Aufnahme …"

Server-Seite war bereits vollstaendig implementiert (ws.py, kein Handlungsbedarf).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 18:38:33 +02:00
..
llm-server feat(llm): lokales llama.cpp-Modell (va_llm) als zentrale, sprachoptimierte KI 2026-06-18 02:57:57 +02:00
add_pronunciation.py feat(tools): scripts/add_pronunciation.py zum bequemen Pflegen des Aussprache-Lexikons 2026-06-17 23:25:49 +02:00
diag_record.py ux(voice_loop): Aufnahmedauer anzeigen + korrekt berechnen; Diagnose-Skript 2026-06-17 15:53:51 +02:00
smoke_e2e.py test: manuelles End-to-End-Smoke-Skript gegen OpenRouter (scripts/smoke_e2e.py) 2026-06-17 09:49:04 +02:00
voice_loop.py feat(barge-in): Unterbrechen der KI-Antwort per Mikrofon-Button und Enter 2026-06-18 18:38:33 +02:00