feat(voice): leeres <voice></voice> = bewusst stumm (Steuerbefehl-Quittungen)
Bisher: tts_text = tts_text_preview or text — ein leeres <voice></voice> fiel auf den vollen Text zurueck und wurde doch gesprochen. Jetzt: ein vorhandener <voice>-Tag ist die EXPLIZITE TTS-Vorgabe (auch leer). Leeres <voice></voice> = Bubble sichtbar, aber KEIN TTS. Nur ohne Tag Rueckfall auf vollen Text. Motivation: Spotify-Steuerbefehle (next/pause/…) laufen jetzt ueber den Fast-Path (<1s), aber die gesprochene Quittung klaute auf dem Handy den Audio-Fokus -> Spotify duckte/pausierte und spielte (bei kurzem Text) nicht weiter. Steuer-Skills koennen ihre Reply nun mit <voice></voice> stummschalten. Generell nutzbar: ARIA kann jede Antwort bewusst stumm halten. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+11
-2
@@ -1326,9 +1326,18 @@ class ARIABridge:
|
||||
or 1.0
|
||||
)
|
||||
|
||||
tts_text = tts_text_preview or text
|
||||
# Ein vorhandener <voice>-Tag ist die EXPLIZITE TTS-Vorgabe von ARIA —
|
||||
# auch wenn er leer ist. Leeres <voice></voice> = bewusst stumm: die
|
||||
# Bubble erscheint im Chat, aber es wird NICHTS gesprochen. Use-Case:
|
||||
# Steuerbefehl-Quittungen (Spotify next/pause, Licht an) — dort darf die
|
||||
# Sprachausgabe NICHT feuern, weil das TTS-Playback auf dem Handy den
|
||||
# Audio-Fokus klaut, Spotify duckt/pausiert und (bei kurzem Text) nicht
|
||||
# sauber weiterspielt. Nur OHNE Voice-Tag faellt es auf den vollen Text
|
||||
# zurueck (normale Antwort ohne TTS-Annotation wird komplett gelesen).
|
||||
has_voice_tag = "<voice>" in (text or "").lower()
|
||||
tts_text = tts_text_preview if has_voice_tag else (tts_text_preview or text)
|
||||
if not tts_text:
|
||||
logger.info("[core] TTS-Text leer nach Cleanup — uebersprungen")
|
||||
logger.info("[core] TTS-Text leer (bewusst stumm via <voice></voice> oder nach Cleanup) — uebersprungen")
|
||||
return
|
||||
try:
|
||||
xtts_request_id = str(uuid.uuid4())
|
||||
|
||||
Reference in New Issue
Block a user