dont speak messages with control codes, remove min length message vor words like Ja no etc.
This commit is contained in:
parent
e81f1873f7
commit
b00eec263d
|
|
@ -752,11 +752,18 @@ Erst dann starten die automatischen TICKs mit Bildern!"""
|
||||||
if self._current_chat_id:
|
if self._current_chat_id:
|
||||||
self._save_tts_state(self._current_chat_id, msg.id)
|
self._save_tts_state(self._current_chat_id, msg.id)
|
||||||
|
|
||||||
|
# ════════════════════════════════════════════════════════════════
|
||||||
|
# WICHTIG: Nachrichten mit Steuercodes werden NICHT vorgelesen!
|
||||||
|
# Diese sind reine Roboter-Befehle, keine Sprache für Stefan.
|
||||||
|
# ════════════════════════════════════════════════════════════════
|
||||||
|
if self._contains_control_codes(msg.text):
|
||||||
|
logger.debug(f"TTS: Nachricht enthält Steuercodes, übersprungen")
|
||||||
|
continue
|
||||||
|
|
||||||
# Text für Sprache aufbereiten
|
# Text für Sprache aufbereiten
|
||||||
speech_text = self._clean_for_speech(msg.text)
|
speech_text = self._clean_for_speech(msg.text)
|
||||||
logger.debug(f"TTS: Nach Bereinigung: {len(speech_text) if speech_text else 0} Zeichen")
|
logger.debug(f"TTS: Nach Bereinigung: {len(speech_text) if speech_text else 0} Zeichen")
|
||||||
|
|
||||||
if speech_text and len(speech_text) > 5:
|
|
||||||
# "Claude sagt:" Prefix entfernen falls vorhanden (wird nicht vorgelesen)
|
# "Claude sagt:" Prefix entfernen falls vorhanden (wird nicht vorgelesen)
|
||||||
tts_text = speech_text
|
tts_text = speech_text
|
||||||
if tts_text.lower().startswith("claude sagt:"):
|
if tts_text.lower().startswith("claude sagt:"):
|
||||||
|
|
@ -764,7 +771,8 @@ Erst dann starten die automatischen TICKs mit Bildern!"""
|
||||||
logger.debug(f"TTS: 'Claude sagt:' entfernt, Rest: {len(tts_text)} Zeichen")
|
logger.debug(f"TTS: 'Claude sagt:' entfernt, Rest: {len(tts_text)} Zeichen")
|
||||||
|
|
||||||
# Prüfe ob nach Entfernen noch Text übrig ist
|
# Prüfe ob nach Entfernen noch Text übrig ist
|
||||||
if not tts_text or len(tts_text) < 3:
|
# Kein Mindestlänge-Check damit auch kurze Antworten wie "Ja!" gesprochen werden
|
||||||
|
if not tts_text:
|
||||||
logger.debug(f"TTS: Nach Prefix-Entfernung kein Text übrig, übersprungen")
|
logger.debug(f"TTS: Nach Prefix-Entfernung kein Text übrig, übersprungen")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
|
@ -778,8 +786,6 @@ Erst dann starten die automatischen TICKs mit Bildern!"""
|
||||||
self.tts.speak(tts_text)
|
self.tts.speak(tts_text)
|
||||||
self.stats.messages_spoken += 1
|
self.stats.messages_spoken += 1
|
||||||
logger.debug("TTS: Sprechen beendet")
|
logger.debug("TTS: Sprechen beendet")
|
||||||
else:
|
|
||||||
logger.debug(f"TTS: Text zu kurz oder leer, übersprungen")
|
|
||||||
else:
|
else:
|
||||||
logger.debug(f"TTS: Nachricht ist nicht von Claude, übersprungen")
|
logger.debug(f"TTS: Nachricht ist nicht von Claude, übersprungen")
|
||||||
|
|
||||||
|
|
@ -1019,6 +1025,28 @@ Erst dann starten die automatischen TICKs mit Bildern!"""
|
||||||
with self._mute_lock:
|
with self._mute_lock:
|
||||||
return self._muted
|
return self._muted
|
||||||
|
|
||||||
|
def _contains_control_codes(self, text: str) -> bool:
|
||||||
|
"""
|
||||||
|
Prüft ob der Text Steuercodes enthält.
|
||||||
|
|
||||||
|
Nachrichten MIT Steuercodes sind reine Roboter-Befehle
|
||||||
|
und sollen NICHT vorgelesen werden.
|
||||||
|
|
||||||
|
Steuercodes:
|
||||||
|
- [FORWARD], [BACKWARD], [LEFT], [RIGHT], [STOP] - Fahrbefehle
|
||||||
|
- [LOOK_LEFT], [LOOK_RIGHT], [LOOK_UP], [LOOK_DOWN], [LOOK_CENTER] - Kamera
|
||||||
|
- [READY], [TICK], [START] - System-Marker
|
||||||
|
"""
|
||||||
|
control_codes = [
|
||||||
|
'[FORWARD]', '[BACKWARD]', '[LEFT]', '[RIGHT]', '[STOP]',
|
||||||
|
'[LOOK_LEFT]', '[LOOK_RIGHT]', '[LOOK_UP]', '[LOOK_DOWN]', '[LOOK_CENTER]',
|
||||||
|
'[READY]', '[TICK]', '[START]'
|
||||||
|
]
|
||||||
|
for code in control_codes:
|
||||||
|
if code in text:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
def _clean_for_speech(self, text: str) -> str:
|
def _clean_for_speech(self, text: str) -> str:
|
||||||
"""
|
"""
|
||||||
Entfernt Befehle und technische Teile aus dem Text.
|
Entfernt Befehle und technische Teile aus dem Text.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue