Treat Deepgram 1006 disconnect as silence
This commit is contained in:
@@ -312,6 +312,17 @@ class SpeechRecognizer:
|
||||
if not session_error["message"]:
|
||||
session_error["message"] = str(message)
|
||||
|
||||
def is_benign_disconnect(message: str) -> bool:
|
||||
if not message:
|
||||
return False
|
||||
lowered = message.lower()
|
||||
return (
|
||||
"connectionclosed" in lowered
|
||||
or "code 1006" in lowered
|
||||
or "no_close_frame" in lowered
|
||||
or "websocket" in lowered
|
||||
)
|
||||
|
||||
# --- Обработчики событий Deepgram ---
|
||||
def on_transcript(unused_self, result, **kwargs):
|
||||
"""Вызывается, когда приходит часть текста."""
|
||||
@@ -651,6 +662,10 @@ class SpeechRecognizer:
|
||||
final_text = latest_interim.strip()
|
||||
self.transcript = final_text
|
||||
if session_error["message"] and not final_text:
|
||||
# Частый случай после музыки: соединение Deepgram закрывается (1006)
|
||||
# до начала речи. Это штатное завершение, не ошибка.
|
||||
if not heard_speech and is_benign_disconnect(session_error["message"]):
|
||||
return ""
|
||||
raise RuntimeError(session_error["message"])
|
||||
if cleanup_unhealthy:
|
||||
# Если cleanup подвис, не валим текущую команду и не запускаем ложный retry.
|
||||
|
||||
Reference in New Issue
Block a user