From becc83d9e3c747993742964ddb692b0d565fd48a Mon Sep 17 00:00:00 2001 From: duffyduck Date: Sun, 12 Jul 2026 00:45:43 +0200 Subject: [PATCH] fix(bridge): leeres macht TTS nicht mehr stumm MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Claude haengt manchmal reflexartig ein leeres an (v.a. bei Spotify-Antworten). clean_text_for_tts nahm dann group(1)='' → text='' → gar keine Sprachausgabe. Das erklaerte, warum Playlist-Wechsel 'Fliegen' vorgelesen wurde (Claude schrieb Inhalt ins Tag), 'Prodigy' aber stumm blieb (leeres Tag) — reiner Claude-Output-Zufall, nicht Skill/Playlist-Name. Fix: leeres/whitespace ignorieren und den normalen Anzeigetext lesen. Deterministisch, unabhaengig von Claudes Tag-Reflex. Co-Authored-By: Claude Opus 4.8 --- bridge/aria_bridge.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/bridge/aria_bridge.py b/bridge/aria_bridge.py index 72d7110..377d2ec 100644 --- a/bridge/aria_bridge.py +++ b/bridge/aria_bridge.py @@ -295,10 +295,17 @@ def clean_text_for_tts(text: str) -> str: if not text: return "" - # ... wenn vorhanden → nur das nehmen + # ... wenn vorhanden → nur diesen Inhalt lesen. ABER: ein + # LEERES darf die Sprachausgabe nicht verstummen lassen. + # Claude haengt reflexartig manchmal ein leeres Tag an (v.a. bei Spotify- + # Antworten) — frueher wurde daraus text="" → gar keine TTS (Playlist-Wechsel + # 'Prodigy' stumm, 'Fliegen' gesprochen, rein je nachdem ob Claude Inhalt ins + # Tag schrieb). Leeres/whitespace-Tag → ignorieren und den normalen Text lesen. voice_match = _re_tts.search(r'([\s\S]*?)', text, _re_tts.IGNORECASE) - if voice_match: + if voice_match and voice_match.group(1).strip(): text = voice_match.group(1) + else: + text = _re_tts.sub(r'[\s\S]*?', ' ', text, flags=_re_tts.IGNORECASE) t = text