stt auf 2 minuten erhöht und tts debuging aktiviert und erkennung von nachrichten claude

This commit is contained in:
duffyduck 2025-12-27 03:36:47 +01:00
parent 10d68d256c
commit 9122058617
4 changed files with 35 additions and 6 deletions

View File

@ -614,12 +614,18 @@ Erst dann starten die automatischen TICKs mit Bildern!"""
# Hole neue Nachrichten # Hole neue Nachrichten
messages = self.chat.get_new_messages(since_id=self.last_assistant_message_id) messages = self.chat.get_new_messages(since_id=self.last_assistant_message_id)
if messages:
logger.debug(f"TTS: {len(messages)} neue Nachrichten gefunden")
for msg in messages: for msg in messages:
logger.debug(f"TTS: Nachricht - assistant={msg.is_from_assistant}, id={msg.id[:20]}..., text={msg.text[:50]}...")
if msg.is_from_assistant: if msg.is_from_assistant:
self.last_assistant_message_id = msg.id self.last_assistant_message_id = msg.id
# 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")
if speech_text and len(speech_text) > 5: if speech_text and len(speech_text) > 5:
# In Konsole anzeigen # In Konsole anzeigen
@ -628,8 +634,14 @@ Erst dann starten die automatischen TICKs mit Bildern!"""
console.print(f"[dim]...({len(speech_text)} Zeichen)[/dim]") console.print(f"[dim]...({len(speech_text)} Zeichen)[/dim]")
# Vorlesen # Vorlesen
logger.info(f"TTS: Spreche {len(speech_text)} Zeichen...")
self.tts.speak(speech_text) self.tts.speak(speech_text)
self.stats.messages_spoken += 1 self.stats.messages_spoken += 1
logger.debug("TTS: Sprechen beendet")
else:
logger.debug(f"TTS: Text zu kurz oder leer, übersprungen")
else:
logger.debug(f"TTS: Nachricht ist nicht von Claude, übersprungen")
except Exception as e: except Exception as e:
logger.error(f"TTS-Loop-Fehler: {e}") logger.error(f"TTS-Loop-Fehler: {e}")

View File

@ -559,11 +559,28 @@ class ClaudeChatInterface:
continue continue
# Bestimme ob Human oder Assistant # Bestimme ob Human oder Assistant
# Mehrere Methoden probieren:
class_name = elem.get_attribute("class") or "" class_name = elem.get_attribute("class") or ""
data_role = elem.get_attribute("data-role") or ""
outer_html = ""
try:
# Prüfe Parent-Element auf Hinweise
parent = elem.find_element(By.XPATH, "..")
parent_class = parent.get_attribute("class") or ""
outer_html = parent_class
except:
pass
# Kombiniere alle Hinweise
all_hints = (class_name + " " + data_role + " " + outer_html).lower()
is_assistant = ( is_assistant = (
"assistant" in class_name.lower() or "assistant" in all_hints or
"claude" in class_name.lower() or "claude" in all_hints or
"ai" in class_name.lower() "ai-message" in all_hints or
"response" in all_hints or
# Claude.ai spezifisch: Nachrichten ohne "human" sind von Claude
("message" in all_hints and "human" not in all_hints and "user" not in all_hints)
) )
# Generiere ID # Generiere ID

View File

@ -98,8 +98,8 @@ stt:
pause_threshold: 0.8 pause_threshold: 0.8
# Maximale Aufnahmelänge pro Phrase in Sekunden # Maximale Aufnahmelänge pro Phrase in Sekunden
# Bei langen Sätzen höher setzen (Google STT unterstützt bis ~60s) # Bei langen Sätzen höher setzen (max 2 Minuten = 120s)
phrase_time_limit: 60 phrase_time_limit: 120
# ============================================================================ # ============================================================================
# Termux (Android) Einstellungen # Termux (Android) Einstellungen

View File

@ -28,7 +28,7 @@ class STTEngine:
self, self,
energy_threshold: int = 300, energy_threshold: int = 300,
pause_threshold: float = 0.8, pause_threshold: float = 0.8,
phrase_time_limit: int = 60, phrase_time_limit: int = 120,
service: str = "google", service: str = "google",
language: str = "de-DE" language: str = "de-DE"
): ):