fix stt timeout

This commit is contained in:
duffyduck 2025-12-29 02:57:35 +01:00
parent 23b7209f6a
commit a9fafdc6f8
1 changed files with 22 additions and 7 deletions

View File

@ -691,15 +691,30 @@ Erst wenn ich [READY] sehe, starten die TICKs mit Bildern!"""
# ════════════════════════════════════════════════════════════════ # ════════════════════════════════════════════════════════════════
# STEFAN-ZEIT: Nach Claudes Antwort warten ob Stefan was sagen will. # STEFAN-ZEIT: Nach Claudes Antwort warten ob Stefan was sagen will.
# Sammle ALLE Eingaben bis Stefan wirklich fertig ist. # Sammle ALLE Eingaben bis Stefan wirklich fertig ist.
#
# WICHTIG: Wir prüfen BEIDES:
# 1. _recording Flag (gesetzt wenn STT Sprache erkennt)
# 2. Ob gerade kein Mute aktiv ist (damit wir überhaupt hören können)
#
# Die Schleife läuft solange bis ENTWEDER:
# - Stefan fertig gesprochen hat (Buffer gefüllt, kein Recording mehr)
# - ODER der Timeout abläuft UND kein Recording aktiv ist
# ════════════════════════════════════════════════════════════════ # ════════════════════════════════════════════════════════════════
logger.debug("Warte auf Stefan...") logger.debug("Warte auf Stefan...")
stefan_wait_start = time.time() stefan_wait_start = time.time()
stefan_initial_timeout = 5.0 # Sekunden um mit Sprechen zu beginnen stefan_initial_timeout = 5.0 # Sekunden um mit Sprechen zu beginnen
stefan_has_spoken = False stefan_has_spoken = False
while self.running and (time.time() - stefan_wait_start) < stefan_initial_timeout: while self.running:
# Timeout nur anwenden wenn Stefan NICHT gerade spricht
if not self._recording.is_set():
if (time.time() - stefan_wait_start) >= stefan_initial_timeout:
logger.debug("Stefan-Timeout, kein Recording aktiv")
break
# Wenn Stefan anfängt zu sprechen, sammle ALLES was er sagt # Wenn Stefan anfängt zu sprechen, sammle ALLES was er sagt
if self._recording.is_set(): if self._recording.is_set():
if not stefan_has_spoken:
logger.debug("Stefan spricht, sammle alle Eingaben...") logger.debug("Stefan spricht, sammle alle Eingaben...")
stefan_has_spoken = True stefan_has_spoken = True
@ -708,7 +723,7 @@ Erst wenn ich [READY] sehe, starten die TICKs mit Bildern!"""
while self.running: while self.running:
# Warte bis aktuelles Recording endet # Warte bis aktuelles Recording endet
while self.running and self._recording.is_set(): while self.running and self._recording.is_set():
time.sleep(0.3) time.sleep(0.1) # Schnellere Prüfung
# Recording ist beendet - aber spricht Stefan gleich weiter? # Recording ist beendet - aber spricht Stefan gleich weiter?
# Warte kurz und prüfe ob neues Recording startet # Warte kurz und prüfe ob neues Recording startet
@ -723,7 +738,7 @@ Erst wenn ich [READY] sehe, starten die TICKs mit Bildern!"""
logger.debug("Stefan spricht weiter!") logger.debug("Stefan spricht weiter!")
weiter_gesprochen = True weiter_gesprochen = True
break break
time.sleep(0.2) time.sleep(0.1) # Schnellere Prüfung
if not weiter_gesprochen: if not weiter_gesprochen:
# Stefan hat nicht weiter gesprochen - jetzt ist er fertig # Stefan hat nicht weiter gesprochen - jetzt ist er fertig
@ -740,11 +755,11 @@ Erst wenn ich [READY] sehe, starten die TICKs mit Bildern!"""
if self._stefan_buffer: if self._stefan_buffer:
logger.debug(f"Stefan-Buffer gefüllt: {len(self._stefan_buffer)} Einträge") logger.debug(f"Stefan-Buffer gefüllt: {len(self._stefan_buffer)} Einträge")
break break
time.sleep(0.2) time.sleep(0.1) # Schnellere Prüfung
logger.debug("STT-Verarbeitung abgeschlossen") logger.debug("STT-Verarbeitung abgeschlossen")
break break
time.sleep(0.3) time.sleep(0.1) # Schnellere Prüfung für bessere Reaktion
if not self.running: if not self.running:
break break