llmrouter: Sprechtext-Normalisierung vor TTS — Postleitzahl als Ziffernfolge mit Pause
"Bergstraße 7, 83646 Bad Tölz" -> "Bergstraße 7; Postleitzahl 8 3 6 4 6, Bad Tölz" (Andreas 2026-09-06, Variante 4 nach Hörtest mit Fish S2 Pro). Betraege, Daten, Einheiten und Bindestrich-Nummern bleiben unberuehrt; 10 Tests. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -130,6 +130,23 @@ Der erste Lauf mit leerem State prüft jeden Alias unter Last, das ist gewollt.
|
||||
- Upstream-Schlüssel aus der Umgebung: `OPENROUTER_API_KEY`, `MISTRAL_API_KEY`.
|
||||
- `ADMIN_KEY` schützt `GET /stats?days=N`, `GET /zuordnung`, `POST /auffrischen`.
|
||||
|
||||
## Sprechtext-Normalisierung (TTS)
|
||||
|
||||
Vor jeder Synthese über `/v1/audio/speech` läuft `input` durch
|
||||
`src/sprechtext.ts`, für alle TTS-Ziele gleich (lokales Qwen-TTS, Mistral
|
||||
Voxtral, künftig Fish). Befund 2026-09-06 mit Fish S2 Pro: Beträge
|
||||
(„1.248,50 Euro") und Daten („14. August 2026") liest das Modell richtig, eine
|
||||
Postleitzahl nicht, und die Hausnummer davor verschmilzt damit. Regel (Andreas,
|
||||
Variante 4 von vier gehörten):
|
||||
|
||||
Bergstraße 7, 83646 Bad Tölz → Bergstraße 7; Postleitzahl 8 3 6 4 6, Bad Tölz
|
||||
|
||||
Ziffern bleiben Ziffern (übersetzbar), mit Leerzeichen getrennt; das Semikolon
|
||||
erzwingt die Pause, die Ansage macht die Folge eindeutig. Greift nur bei fünf
|
||||
Ziffern vor einem großgeschriebenen Ortsnamen; Einheiten („83646 Euro"),
|
||||
Bindestrich-Nummern („2026-83646") und Zahlen ohne Ortsnamen bleiben
|
||||
unberührt. Tests: `bun test` im Router-Verzeichnis.
|
||||
|
||||
## Log und Statistik
|
||||
|
||||
Je Anfrage eine Zeile in `log/requests.jsonl` und in `log/requests.sqlite`:
|
||||
|
||||
Reference in New Issue
Block a user