feat: Audio-Streaming als Default (Admin abschaltbar via AUDIO_STREAM_DEFAULT)

- Config audio_stream_default=True; _run_turn nutzt es, wenn die Anfrage audio_stream
  nicht explizit setzt (explizite Anfrage gewinnt)
- voice_loop: immer durchgehender Player (spielt 1 oder N Haeppchen luekenlos);
  --stream-audio / --no-stream-audio als Tri-State (sonst entscheidet der Server-Default)
- conftest: audio_stream_default=False fuer deterministische Tests; neuer Test fuer
  Default-an-Streaming ueber /ws/voice; 67 Tests gruen
- Doku + .env.example aktualisiert (AUDIO_STREAM_DEFAULT, --no-stream-audio)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-06-17 18:07:36 +02:00
commit 7c1f00662c
7 changed files with 52 additions and 28 deletions

View file

@ -92,7 +92,9 @@ async def _run_turn(websocket, store, user, session_id, route, orchestrator, out
voice = options.get("voice") or settings.openrouter_tts_voice
stream = bool(options.get("stream"))
audio_stream = bool(options.get("audio_stream"))
# audio_stream: explizite Anfrage gewinnt, sonst der serverseitige Default (Admin).
audio_stream = bool(options["audio_stream"]) if "audio_stream" in options \
else settings.audio_stream_default
on_token = None
if stream: