From 4ae8ab948e56771efac5fe4abda1bda3df81b46f Mon Sep 17 00:00:00 2001 From: Mikei386 <44135113+Mikei386@users.noreply.github.com> Date: Sun, 23 Aug 2026 13:33:20 +0200 Subject: [PATCH] Keep German domain endings natural in TTS --- docs/INSTALLATION.md | 3 ++- platform/docker/tts-gateway/test_tts_gateway.py | 2 +- platform/docker/tts-gateway/tts_gateway.py | 6 +++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/docs/INSTALLATION.md b/docs/INSTALLATION.md index 4757b32..3a2f679 100644 --- a/docs/INSTALLATION.md +++ b/docs/INSTALLATION.md @@ -98,7 +98,8 @@ ohne Ausgabe des API-Schlüssels: Für die Sprachausgabe normalisiert das Gateway außerdem Datumsangaben, Temperaturen, Prozentwerte, Postleitzahlen und Domains. Beispielsweise wird `22° / 10°` als „Höchstwert 22 Grad, Tiefstwert 10 Grad“ und `wetter.com` als -„Wetter Punkt C O M“ gesprochen. Die sichtbare Chatantwort wird nicht verändert. +„Wetter Punkt C O M“ gesprochen. Die deutsche Endung `.de` bleibt natürlich +gesprochen. Die sichtbare Chatantwort wird nicht verändert. ```bash set -a; source /etc/mike-ai/stack.env; set +a diff --git a/platform/docker/tts-gateway/test_tts_gateway.py b/platform/docker/tts-gateway/test_tts_gateway.py index 979d4ee..acce0c9 100644 --- a/platform/docker/tts-gateway/test_tts_gateway.py +++ b/platform/docker/tts-gateway/test_tts_gateway.py @@ -89,7 +89,7 @@ class LanguageSegmentationTests(unittest.TestCase): self.assertIn("Höchstwert 22 Grad, Tiefstwert 10 Grad", spoken) self.assertIn("0 Prozent Regen", spoken) self.assertIn("wetter Punkt C O M", spoken) - self.assertIn("wetteronline Punkt D E", spoken) + self.assertIn("wetteronline Punkt de", spoken) def test_full_date_and_raw_url_are_normalized(self): spoken = gateway.clean_for_speech( diff --git a/platform/docker/tts-gateway/tts_gateway.py b/platform/docker/tts-gateway/tts_gateway.py index 91ca939..1e1f92a 100644 --- a/platform/docker/tts-gateway/tts_gateway.py +++ b/platform/docker/tts-gateway/tts_gateway.py @@ -259,7 +259,11 @@ def normalize_for_german_speech(text: str) -> str: r"\.(de|com|org|net|io|ai)\b", lambda match: ( match.group(1).replace(".", " Punkt ") - + " Punkt " + " ".join(match.group(2).upper()) + + " Punkt " + + ( + "de" if match.group(2).lower() == "de" + else " ".join(match.group(2).upper()) + ) ), text, flags=re.IGNORECASE,