From 7b5f20723ad550d9f09c3f7863b6b84d4cbcbc93 Mon Sep 17 00:00:00 2001 From: Magzhan Zhumabayev Date: Sat, 2 May 2026 13:33:12 +0500 Subject: [PATCH] . --- .env.example | 2 +- core/session.py | 24 +++++++++++++++--------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/.env.example b/.env.example index 25f4c4f..86e4afe 100644 --- a/.env.example +++ b/.env.example @@ -33,7 +33,7 @@ OLLAMA_LLM_NUM_CTX=1024 STT_PROVIDER=openai STT_FALLBACK_PROVIDER=elevenlabs -# Empty means auto-detect the first answer, because the greeting asks for preferred language first. +# Empty means auto-detect the first language-choice answer, then use Kazakh STT for name capture. STT_NAME_CAPTURE_LANGUAGE_CODE= STT_PROMPT= STT_PROMPT_RU=Это русская речь по телефону. Точно распознавай короткие ответы, имена, фамилии, слова благодарности и прощания. Если человек представился одним словом, сохраняй его как имя. Номера телефонов записывай цифрами. diff --git a/core/session.py b/core/session.py index eb3a61d..f3452e4 100644 --- a/core/session.py +++ b/core/session.py @@ -395,6 +395,8 @@ _STT_ELEVENLABS_LANGUAGE_MAP = { "kk": "kaz", } +DEFAULT_NAME_CAPTURE_STT_LANGUAGE_CODE = "kk" + def _tts_language_for(session_language: str | None) -> str | None: if not session_language: @@ -1789,17 +1791,21 @@ class CallSession: return raw or None async def _transcribe_batch_audio(self, audio_bytes: bytes) -> str: - if self._awaiting_customer_name and self._session_language is None and self._name_capture_language_code() is None: - return await self._transcribe_initial_language_choice(audio_bytes) + if self._awaiting_customer_name: + configured_name_language = self._name_capture_language_code() + if self._session_language is None and configured_name_language is None: + return await self._transcribe_initial_language_choice(audio_bytes) + return await self._stt.transcribe( + audio_bytes, + keyterms=self._name_capture_keyterms(), + language_code=configured_name_language or DEFAULT_NAME_CAPTURE_STT_LANGUAGE_CODE, + force_batch=True, + ) return await self._stt.transcribe( audio_bytes, - keyterms=self._name_capture_keyterms() if self._awaiting_customer_name else None, - language_code=( - self._name_capture_language_code() - if self._awaiting_customer_name - else _stt_language_for(self._session_language) - ), - force_batch=self._awaiting_customer_name, + keyterms=None, + language_code=_stt_language_for(self._session_language), + force_batch=False, ) async def _transcribe_initial_language_choice(self, audio_bytes: bytes) -> str: