From ebe79c36922d6bc18170b8b1e3fbd5ddb986401a Mon Sep 17 00:00:00 2001 From: future Date: Sun, 15 Mar 2026 17:30:40 +0300 Subject: [PATCH] Treat Deepgram 1006 disconnect as silence --- app/audio/stt.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/app/audio/stt.py b/app/audio/stt.py index 7070363..b1843ba 100644 --- a/app/audio/stt.py +++ b/app/audio/stt.py @@ -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.