feat: Audio-Eingang über WebSocket (/ws/voice) - Sprach-zu-Sprach (#4 Ausbau)
- /ws/voice: binaere Audio-Frames puffern, {"type":"end"} -> STT-Transkription
-> transcript-Event -> bestehende Antwort-Pipeline (ack/token/audio/semantic/done)
- ws.py refaktoriert: gemeinsame _resolve + _run_turn fuer /ws/chat und /ws/voice
- stream/audio_stream auch fuer Sprach-Turns nutzbar; mehrere Utterances pro Verbindung
- Tests: 47 gruen (+2: Transkript->Antwort, leerer Puffer)
- Doku aktualisiert (README, BEDIENUNGSANLEITUNG, Architektur)
Hinweis: STT pro Aeusserung (gepuffert); partielle Live-Transkripte (Streaming-STT
mit VAD) bleiben naechster Increment.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
b5913b0a44
commit
9340d3f998
5 changed files with 233 additions and 98 deletions
13
README.md
13
README.md
|
|
@ -88,7 +88,8 @@ Aktive Konfiguration prüfen: `curl http://localhost:8080/api/config`.
|
|||
| `GET /api/me` | aktueller Nutzer + Präferenzen |
|
||||
| `PUT /api/me/prefs` | dauerhafte Routing-Präferenzen des Nutzers setzen |
|
||||
| `GET/POST/DELETE /api/me/memories` | Langzeit-Erinnerungen des Nutzers verwalten |
|
||||
| `WS /ws/chat` | Echtzeit-Chat über WebSocket (Streaming-Events) |
|
||||
| `WS /ws/chat` | Echtzeit-Chat über WebSocket (Text rein, Streaming-Events) |
|
||||
| `WS /ws/voice` | Echtzeit-Sprache (Audio rein → Transkript → Antwort) |
|
||||
|
||||
Beispiel (Sprachausgabe an den Test-Loopback, lokaler TTS-Stub):
|
||||
|
||||
|
|
@ -142,8 +143,14 @@ via SSE; Provider ohne Streaming liefern die komplette Antwort als ein `token`-E
|
|||
mit `seq` + binärer Frame) gesendet — die Ausgabe beginnt, bevor die Antwort fertig
|
||||
ist. `stream` und `audio_stream` lassen sich kombinieren.
|
||||
|
||||
> Audio-Eingang/Streaming-STT, Barge-in/Turn-Manager und WebRTC sind als nächste
|
||||
> Increments vorgesehen (siehe Architektur-Dokument).
|
||||
**Sprach-Eingang (`/ws/voice`):** Der Client streamt Mikrofon-Audio als binäre
|
||||
Frames; ein `{"type":"end"}`-Control-Frame schließt die Äußerung ab. Der Server
|
||||
transkribiert (STT), sendet ein `transcript`-Event und durchläuft dann dieselbe
|
||||
Antwort-Pipeline wie `/ws/chat` (inkl. `stream`/`audio_stream`). Damit ist
|
||||
Sprach-zu-Sprach-Konversation über einen Kanal möglich.
|
||||
|
||||
> Partielle Live-Transkripte (Streaming-STT mit VAD), Barge-in/Turn-Manager und
|
||||
> WebRTC sind als nächste Increments vorgesehen (siehe Architektur-Dokument).
|
||||
|
||||
## Authentifizierung
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue