Commit graph

2 commits

Author SHA1 Message Date
Dieter Schlüter
0074593002 feat(tts): Aussprache-Lexika für alle 8 Piper-Sprachen — Eigenname Dieter Schlüter
Neue Dateien: pronunciation.fr/es/it/nl/ru/zh.yaml
Erweitert:    pronunciation.en.yaml

Strategie: Textersetzung in der Zielsprach-Orthographie (kein IPA nötig).
- EN: "Deeter Schlueter" (ie→/aɪ/ umgehen, ü als ue)
- FR: "Chluteur" (ch=/ʃ/, u=/y/=ü, eur=/œʁ/ → /ʃlytœʁ/)
- NL: "Schluuter" (uu=/yː/=ü, sch=/sx/)
- ES/IT: "Schlueter" (kein /ʃ/ verfügbar, beste Näherung)
- RU: Kyrillisch "Дитер Шлютер" (espeak-ru liest Latein schlecht)
- ZH: Hanzi "迪特 施吕特" (施=/ʃɨ/, 吕=lǚ=/ly/=ü — trifft Klang genau)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-19 14:29:22 +02:00
Dieter Schlüter
c9d8552ec7 feat(tts): Aussprache-Normalisierung vor Piper (Ordinalia/Einheiten/Abk./Lexikon)
In-Process-Layer ausgebaut statt neuer Lib/CLI. Leitprinzip: nicht duplizieren,
was espeak-ng schon kann (Kardinal-/Dezimalzahlen bleiben unangetastet) -- nur die
belegten Luecken fuellen.

- german_numbers.py: deutsche Ordinalzahlen 1.-31. (attributiv/adverbial)
- tts_normalizer.py: Ordinalia (Datum '1. Mai'->'erster Mai', Folgen '1. 2. 3.'->
  'erstens, zweitens, ...'), Einheiten nach Zahl (kg/km/km-h/...), Abkuerzungen
  (Dr./z.B./usw.), optionales YAML-Lexikon (config/pronunciation.<lang>.yaml).
  Provider-abhaengige Stufen auto|full|light|off (TTS_NORMALIZE_LEVEL): piper=full,
  Cloud=light (laesst Zahlen/Abk. fuer das Cloud-Modell in Ruhe).
- spoken_response_adapter.py: nummerierte Listen -> Ordinalwoerter statt Loeschen.
- sentence_chunker.py: trennt nicht mehr nach Ziffer+Punkt, Einzelbuchstabe+Punkt
  ('z. B.', Initialen) oder bekannten Abkuerzungen -> behebt das Streaming-Symptom
  ('1.' wurde als eigener 'Satz' zu 'eins').
- orchestrator/dependencies: normalize_level durchgereicht (auto: piper->full).
- Tests: tests/test_tts_normalizer.py + Chunker-Faelle (85 gruen).
- Doku: BEDIENUNGSANLEITUNG (Aussprache verbessern), .env.example.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 23:01:41 +02:00