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