diff --git a/python_bridge/chat_audio_bridge.py b/python_bridge/chat_audio_bridge.py index 6ff153b..a34235a 100755 --- a/python_bridge/chat_audio_bridge.py +++ b/python_bridge/chat_audio_bridge.py @@ -691,24 +691,39 @@ Erst wenn ich [READY] sehe, starten die TICKs mit Bildern!""" # ════════════════════════════════════════════════════════════════ # STEFAN-ZEIT: Nach Claudes Antwort warten ob Stefan was sagen will. # 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...") stefan_wait_start = time.time() stefan_initial_timeout = 5.0 # Sekunden um mit Sprechen zu beginnen 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 if self._recording.is_set(): - logger.debug("Stefan spricht, sammle alle Eingaben...") - stefan_has_spoken = True + if not stefan_has_spoken: + logger.debug("Stefan spricht, sammle alle Eingaben...") + stefan_has_spoken = True # Sammle alle Eingaben bis Stefan WIRKLICH fertig ist # Das heißt: Recording endet UND danach kommt 3s lang nichts mehr while self.running: # Warte bis aktuelles Recording endet 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? # 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!") weiter_gesprochen = True break - time.sleep(0.2) + time.sleep(0.1) # Schnellere Prüfung if not weiter_gesprochen: # 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: logger.debug(f"Stefan-Buffer gefüllt: {len(self._stefan_buffer)} Einträge") break - time.sleep(0.2) + time.sleep(0.1) # Schnellere Prüfung logger.debug("STT-Verarbeitung abgeschlossen") break - time.sleep(0.3) + time.sleep(0.1) # Schnellere Prüfung für bessere Reaktion if not self.running: break