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:
parent
5296459b07
commit
7c1f00662c
7 changed files with 52 additions and 28 deletions
|
|
@ -109,8 +109,8 @@ Ablauf je Runde:
|
|||
|
||||
Nützliche Optionen:
|
||||
```bash
|
||||
python scripts/voice_loop.py --stream-audio # satzweises Vorlesen: Antwort beginnt frueher
|
||||
python scripts/voice_loop.py --stream-text # Antworttext live anzeigen (kombinierbar mit --stream-audio)
|
||||
python scripts/voice_loop.py --stream-text # Antworttext live anzeigen, waehrend die KI generiert
|
||||
python scripts/voice_loop.py --no-stream-audio # satzweises Vorlesen abschalten (Audio erst komplett)
|
||||
python scripts/voice_loop.py --recorder pw-record # PipeWire-Aufnahme (Standard bei 'auto')
|
||||
python scripts/voice_loop.py --recorder arecord --device hw:1,0 # ALSA, bestimmtes Mikrofon
|
||||
python scripts/voice_loop.py --llm-provider openrouter --tts-provider openrouter
|
||||
|
|
@ -177,11 +177,11 @@ curl -s -X POST "$URL/api/chat?debug=true" \
|
|||
Wie viele Nachrichten einfließen, steuert `HISTORY_MAX_MESSAGES` (Standard 10).
|
||||
- **Echtzeit-Streaming:** WebSocket `/ws/chat` mit `{"text":"…","stream":true}` liefert
|
||||
die Antwort wortweise; `"audio_stream":true` zusätzlich das Audio satzweise. Im
|
||||
Sprech-Loop aktivierst du das satzweise Vorlesen mit `--stream-audio` (das Vorlesen
|
||||
beginnt dann schon nach dem ersten Satz, statt erst nach der ganzen Antwort) und die
|
||||
**Live-Anzeige des Antworttextes** mit `--stream-text` (erscheint Wort für Wort,
|
||||
während die KI generiert — beides kombinierbar). Provider-Overrides, `--stream-audio`
|
||||
und `--stream-text` wirken auch über `/ws/voice` (start-Frame).
|
||||
**Satzweises Vorlesen ist jetzt Standard** (das Vorlesen beginnt schon nach dem ersten
|
||||
Satz; abschaltbar serverseitig mit `AUDIO_STREAM_DEFAULT=false` oder pro Aufruf mit
|
||||
`--no-stream-audio`). Die **Live-Anzeige des Antworttextes** aktivierst du mit
|
||||
`--stream-text` (erscheint Wort für Wort, während die KI generiert). Provider-Overrides
|
||||
und diese Schalter wirken auch über `/ws/voice` (start-Frame).
|
||||
- **Unterbrechen (Barge-in):** während der Assistent spricht `{"type":"interrupt"}`
|
||||
senden → laufende Antwort wird abgebrochen.
|
||||
- **Automatische Sprechpausen-Erkennung (VAD):** im Start-Frame von `/ws/voice`
|
||||
|
|
@ -232,14 +232,14 @@ echo 'LOCAL_LLM_MODEL=llama3.2:latest' >> .env
|
|||
make run
|
||||
# in Terminal 2 — Sprech-Loop mit der Hybrid-Kombi (MOTU = plughw:5,0):
|
||||
python scripts/voice_loop.py --recorder arecord --device plughw:5,0 --session hybrid \
|
||||
--stream-audio \
|
||||
--stream-text \
|
||||
--stt-provider faster-whisper \
|
||||
--llm-provider local-openai-compatible \
|
||||
--tts-provider openrouter
|
||||
```
|
||||
Erster Turn ist langsamer (Whisper- und Ollama-Modell laden), danach zügig. STT-Modell
|
||||
und Gerät steuern `FASTER_WHISPER_MODEL`/`FASTER_WHISPER_DEVICE` in `.env`. `--stream-audio`
|
||||
lässt das Vorlesen schon nach dem ersten Satz beginnen (geringere Wartezeit bis zum Ton).
|
||||
und Gerät steuern `FASTER_WHISPER_MODEL`/`FASTER_WHISPER_DEVICE` in `.env`. Satzweises
|
||||
Vorlesen ist Standard (früher Ton); `--stream-text` zeigt den Text live dazu.
|
||||
|
||||
## B2. Soundquelle & Ausgabe-Gerät wechseln (Mikrofon, Lautsprecher, Bluetooth, Handy)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue