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
|
|
|
|
# Aussprache-Lexikon (Deutsch) für die TTS-Normalisierung vor Piper.
|
|
|
|
|
|
#
|
|
|
|
|
|
# Dies ist das GRUNDGERÜST – Inhalte werden später schrittweise ergänzt.
|
|
|
|
|
|
# Einträge hier ERWEITERN/ÜBERSCHREIBEN die eingebauten Defaults des Normalizers.
|
|
|
|
|
|
# Wirkt nur bei lokalem TTS (piper, Stufe "full"); Cloud-TTS bleibt unangetastet.
|
|
|
|
|
|
#
|
|
|
|
|
|
# Format:
|
|
|
|
|
|
# abbreviations: ganze Token werden wortgrenzen-sicher ersetzt (Punkt mitschreiben!)
|
|
|
|
|
|
# units: werden nur DIREKT NACH EINER ZAHL ersetzt (z. B. "10 kg")
|
|
|
|
|
|
# terms: Fachwörter / Eigennamen / englische Begriffe
|
|
|
|
|
|
#
|
|
|
|
|
|
# Beispiele (auskommentiert – bei Bedarf aktivieren/ergänzen):
|
|
|
|
|
|
|
|
|
|
|
|
abbreviations:
|
|
|
|
|
|
# "ggf.": "gegebenenfalls"
|
|
|
|
|
|
# "inkl.": "inklusive"
|
|
|
|
|
|
|
|
|
|
|
|
units:
|
|
|
|
|
|
# "kWh": "Kilowattstunden"
|
|
|
|
|
|
|
2026-06-17 23:19:17 +02:00
|
|
|
|
# Aussprache-Korrekturen: espeak-ng (in Piper) verkürzt bei einigen Wortformen
|
|
|
|
|
|
# fälschlich einen langen Vokal. Umschreibung mit "h" -> langer Vokal.
|
|
|
|
|
|
# Alle Einträge mit `espeak-ng -v de -x "<wort>"` verifiziert (Y:/E:/o: = lang).
|
|
|
|
|
|
# Matching ist case-insensitiv (deckt auch Satzanfänge ab).
|
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
|
|
|
|
terms:
|
2026-06-17 23:19:17 +02:00
|
|
|
|
"strömt": "ströhmt"
|
|
|
|
|
|
"strömte": "ströhmte"
|
|
|
|
|
|
"löst": "löhst"
|
|
|
|
|
|
"tönt": "töhnt"
|
|
|
|
|
|
"bläst": "blähst"
|
|
|
|
|
|
"büßt": "bühßt"
|
|
|
|
|
|
"grüßt": "grühßt"
|
|
|
|
|
|
"Mond": "Mohnd"
|
|
|
|
|
|
# "Linux": "Linuks" # Beispiel für Eigennamen/IT-Begriffe
|