sst wait for filling buffer
This commit is contained in:
parent
de0108d57c
commit
9bd70b82ea
|
|
@ -148,9 +148,8 @@ class ClaudesEyesAudioBridge:
|
|||
self._mute_lock = threading.Lock()
|
||||
|
||||
# Silence-Timeout: Wie lange Stille bevor Aufnahme als fertig gilt
|
||||
# 2 Sekunden ist ein guter Kompromiss zwischen natürlichen Pausen
|
||||
# und schneller Reaktion. Bei 5s dauert es zu lange.
|
||||
self._silence_timeout = 2.0 # Sekunden
|
||||
# 3 Sekunden erlaubt natürliche Denkpausen beim Sprechen
|
||||
self._silence_timeout = 3.0 # Sekunden
|
||||
|
||||
def _load_config(self, config_path: str) -> dict:
|
||||
"""Lädt die Konfiguration"""
|
||||
|
|
@ -690,33 +689,42 @@ Erst wenn ich [READY] sehe, starten die TICKs mit Bildern!"""
|
|||
break
|
||||
|
||||
# ════════════════════════════════════════════════════════════════
|
||||
# STEFAN-ZEIT: Nach Claudes Antwort 5 Sekunden warten ob Stefan
|
||||
# was sagen will. Wenn Stefan spricht, senden wir seine Nachricht
|
||||
# SOFORT (ohne auf TICK zu warten) - das IST sein "TICK"!
|
||||
# STEFAN-ZEIT: Nach Claudes Antwort warten ob Stefan was sagen will.
|
||||
# Wenn Stefan spricht, warten wir AKTIV auf den Buffer.
|
||||
# ════════════════════════════════════════════════════════════════
|
||||
logger.debug("Warte 5s ob Stefan antworten will...")
|
||||
logger.debug("Warte auf Stefan...")
|
||||
stefan_wait_start = time.time()
|
||||
stefan_timeout = 5.0 # Sekunden warten auf Stefan
|
||||
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_timeout:
|
||||
while self.running and (time.time() - stefan_wait_start) < stefan_initial_timeout:
|
||||
# Wenn Stefan anfängt zu sprechen, warte bis er fertig ist
|
||||
if self._recording.is_set():
|
||||
logger.debug("Stefan spricht, warte auf Stille...")
|
||||
while self.running and self._recording.is_set():
|
||||
time.sleep(0.5)
|
||||
time.sleep(0.3)
|
||||
logger.debug("Stefan fertig mit Sprechen")
|
||||
stefan_has_spoken = True
|
||||
|
||||
# WICHTIG: Zusätzliche Wartezeit für STT-Verarbeitung!
|
||||
# Google Speech Recognition braucht Zeit um den letzten
|
||||
# Text-Block zu verarbeiten und in den Buffer zu schreiben.
|
||||
stt_processing_wait = 2.0 # Sekunden für API-Verarbeitung
|
||||
logger.debug(f"Warte {stt_processing_wait}s für STT-Verarbeitung...")
|
||||
time.sleep(stt_processing_wait)
|
||||
# AKTIV auf Buffer warten statt feste Zeiten!
|
||||
# Warte bis Text im Buffer ankommt (max 30s Sicherheits-Timeout)
|
||||
buffer_wait_start = time.time()
|
||||
buffer_timeout = 30.0 # Sicherheits-Timeout
|
||||
logger.debug("Warte aktiv auf Stefan-Buffer...")
|
||||
|
||||
while self.running and (time.time() - buffer_wait_start) < buffer_timeout:
|
||||
with self._stefan_buffer_lock:
|
||||
if self._stefan_buffer:
|
||||
logger.debug(f"Stefan-Buffer gefüllt: {len(self._stefan_buffer)} Einträge")
|
||||
break
|
||||
time.sleep(0.2) # Kurzes Polling
|
||||
else:
|
||||
# Timeout erreicht ohne Buffer
|
||||
logger.warning("Stefan-Buffer Timeout - kein Text angekommen")
|
||||
|
||||
logger.debug("STT-Verarbeitung abgeschlossen")
|
||||
break
|
||||
time.sleep(0.5)
|
||||
time.sleep(0.3)
|
||||
|
||||
if not self.running:
|
||||
break
|
||||
|
|
|
|||
Loading…
Reference in New Issue