From 7403f7df07f26cabe4758e297bf98dc380b635e8 Mon Sep 17 00:00:00 2001 From: Magzhan Zhumabayev Date: Sat, 2 May 2026 13:27:40 +0500 Subject: [PATCH] . --- .env.example | 2 +- core/session.py | 1 + main.py | 31 ++++++++++++++++++------------- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/.env.example b/.env.example index 147d47b..25f4c4f 100644 --- a/.env.example +++ b/.env.example @@ -40,7 +40,7 @@ STT_PROMPT_RU=Это русская речь по телефону. Точно STT_PROMPT_KZ=Бұл қазақ тіліндегі телефон арқылы сөйлесу. Қысқа жауаптарды, есімдерді, тілді таңдауды және қоштасуды дәл таны. Клиент бір сөзбен танысса, оны есім ретінде сақта. Телефон нөмірлерін цифрлармен жаз. TTS_PROVIDER=elevenlabs -REALTIME_VOICE_INITIAL_GREETING_RU_TEXT=Здравствуйте, мое имя Айнур. На каком языке Вам удобнее общаться: на казахском или русском? +REALTIME_VOICE_INITIAL_GREETING_RU_TEXT=Здравствуйте, мое имя Айну́р. На каком языке Вам удобнее общаться: на казахском или русском? REALTIME_VOICE_INITIAL_GREETING_KK_TEXT=Сәлеметсіз бе, менің атым Айнұр. Сізге қай тілде сөйлескен ыңғайлы: қазақша ма, орысша ма? ENABLE_AUDIO_DUMP=false diff --git a/core/session.py b/core/session.py index 1918b67..eb3a61d 100644 --- a/core/session.py +++ b/core/session.py @@ -623,6 +623,7 @@ def _ru_date_words(day_raw: str, month_raw: str, year_raw: str) -> str: VOICE_PRONUNCIATION_REPLACEMENTS: tuple[tuple[str, str], ...] = ( + (r"\bАйнур\b", "Айну́р"), (r"\bDigiOps\b", "ДиджиОпс"), (r"\bA\.?I\.?\b", "эй-ай"), (r"\bAI\b", "эй-ай"), diff --git a/main.py b/main.py index 79d05c8..dcc08bc 100644 --- a/main.py +++ b/main.py @@ -12,6 +12,7 @@ from fastapi import FastAPI, WebSocket from realtime_voice_service import crm_client from realtime_voice_service.core.filler_audio import FillerAudioLibrary from realtime_voice_service.core.session import CallSession +from realtime_voice_service.core.session import _normalize_voice_pronunciation from realtime_voice_service.core.vad import SileroVADDetector from realtime_voice_service.providers.factory import create_llm_provider, create_stt_provider, create_tts_provider from realtime_voice_service.transports.audiosocket import AudioSocketServer @@ -108,21 +109,25 @@ def _initial_greeting_segments() -> tuple[tuple[str, str | None], ...]: raw = str(os.getenv("REALTIME_VOICE_INITIAL_GREETING_TEXT", "")).strip() if raw and _single_initial_greeting_enabled(): language = str(os.getenv("REALTIME_VOICE_INITIAL_GREETING_LANGUAGE_CODE", "")).strip() or None - return ((raw, language),) + return ((_normalize_voice_pronunciation(raw), language),) - ru_text = _env_text_or_default( - "REALTIME_VOICE_INITIAL_GREETING_RU_TEXT", - ( - "Здравствуйте, мое имя Айнур. " - "На каком языке Вам удобнее общаться: на казахском или русском?" - ), + ru_text = _normalize_voice_pronunciation( + _env_text_or_default( + "REALTIME_VOICE_INITIAL_GREETING_RU_TEXT", + ( + "Здравствуйте, мое имя Айну́р. " + "На каком языке Вам удобнее общаться: на казахском или русском?" + ), + ) ) - kk_text = _env_text_or_default( - "REALTIME_VOICE_INITIAL_GREETING_KK_TEXT", - ( - "Сәлеметсіз бе, менің атым Айнұр. " - "Сізге қай тілде сөйлескен ыңғайлы: қазақша ма, орысша ма?" - ), + kk_text = _normalize_voice_pronunciation( + _env_text_or_default( + "REALTIME_VOICE_INITIAL_GREETING_KK_TEXT", + ( + "Сәлеметсіз бе, менің атым Айнұр. " + "Сізге қай тілде сөйлескен ыңғайлы: қазақша ма, орысша ма?" + ), + ) ) segments: list[tuple[str, str | None]] = [] if ru_text: