From 1b5ebbc456a0c35d1eb426f75434910ebd1ff105 Mon Sep 17 00:00:00 2001 From: arys Date: Thu, 30 Apr 2026 02:16:45 +0500 Subject: [PATCH] fix --- core/session.py | 2 +- main.py | 4 ++-- providers/llm.py | 8 ++++---- providers/tts.py | 14 +++++++------- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/core/session.py b/core/session.py index 541fe86..3a689cc 100644 --- a/core/session.py +++ b/core/session.py @@ -21,7 +21,7 @@ from realtime_voice_service.transports.base import BaseMediaTransport LOGGER = logging.getLogger("uvicorn.error") -SEMANTIC_ENDPOINTING_HOLD_MS = 2000 +SEMANTIC_ENDPOINTING_HOLD_MS = 1000 SEMANTIC_CONTINUATION_TOKENS = { "а", "в", diff --git a/main.py b/main.py index 0419722..f189234 100644 --- a/main.py +++ b/main.py @@ -70,8 +70,8 @@ def _audiosocket_port() -> int: def _sample_rate_hz() -> int: - configured = max(_int_env("REALTIME_VOICE_SAMPLE_RATE_HZ", 8000), 1) - return configured if configured in {8000, 16000, 24000} else 8000 + configured = max(_int_env("REALTIME_VOICE_SAMPLE_RATE_HZ", 16000), 1) + return configured if configured in {8000, 16000, 24000} else 16000 def _http_host() -> str: diff --git a/providers/llm.py b/providers/llm.py index 5517c12..87c942a 100644 --- a/providers/llm.py +++ b/providers/llm.py @@ -69,7 +69,7 @@ class OpenAILLM(BaseLLM): base_url: str | None = None, system_prompt: str | None = None, timeout_seconds: float | None = None, - temperature: float = 0.3, + temperature: float = 0.7, max_retries: int = 2, max_context_messages: int | None = None, reasoning_effort: str | None = None, @@ -86,7 +86,7 @@ class OpenAILLM(BaseLLM): if system_prompt is not None else os.getenv( "OPENAI_LLM_SYSTEM_PROMPT", - "You are a concise voice assistant for a telecom call center. Answer clearly and briefly.", + "Ты — дружелюбный, живой и эмпатичный голосовой ИИ-ассистент. Отвечай кратко, как в реальном диалоге. Используй разговорный стиль. Чтобы синтезатор речи (TTS) читал аббревиатуры и английские термины без акцента, пиши их русскими буквами так, как они произносятся (например, 'ай-ти' вместо 'IT', 'би-ту-би' вместо 'B2B', 'си-эр-эм' вместо 'CRM').", ) ).strip() self._timeout_seconds = max(float(timeout_seconds if timeout_seconds is not None else _timeout_seconds()), 1.0) @@ -654,7 +654,7 @@ class OllamaLLM(BaseLLM): "OLLAMA_LLM_SYSTEM_PROMPT", os.getenv( "OPENAI_LLM_SYSTEM_PROMPT", - "You are a concise voice assistant for a telecom call center. Answer clearly and briefly.", + "Ты — дружелюбный, живой и эмпатичный голосовой ИИ-ассистент. Отвечай кратко, как в реальном диалоге. Используй разговорный стиль. Чтобы синтезатор речи (TTS) читал аббревиатуры и английские термины без акцента, пиши их русскими буквами так, как они произносятся (например, 'ай-ти' вместо 'IT', 'би-ту-би' вместо 'B2B', 'си-эр-эм' вместо 'CRM').", ), ) ).strip() @@ -663,7 +663,7 @@ class OllamaLLM(BaseLLM): 1.0, ) self._temperature = max( - min(float(temperature if temperature is not None else self._read_float_env("OLLAMA_LLM_TEMPERATURE", 0.3)), 2.0), + min(float(temperature if temperature is not None else self._read_float_env("OLLAMA_LLM_TEMPERATURE", 0.7)), 2.0), 0.0, ) self._max_context_messages = max( diff --git a/providers/tts.py b/providers/tts.py index ca53ecb..097506e 100644 --- a/providers/tts.py +++ b/providers/tts.py @@ -91,12 +91,12 @@ class ElevenLabsTTS(BaseTTS): self._ws_base = _ws_base(self._api_base) self._voice_id = str(voice_id or os.getenv("ELEVENLABS_TTS_VOICE_ID", "")).strip() self._requested_model_id = ( - str(model_id or os.getenv("ELEVENLABS_TTS_MODEL_ID", "eleven_turbo_v2_5")).strip() - or "eleven_turbo_v2_5" + str(model_id or os.getenv("ELEVENLABS_TTS_MODEL_ID", "eleven_multilingual_v2")).strip() + or "eleven_multilingual_v2" ) self._websocket_fallback_model_id = ( - str(os.getenv("ELEVENLABS_TTS_WS_FALLBACK_MODEL_ID", "eleven_turbo_v2_5")).strip() - or "eleven_turbo_v2_5" + str(os.getenv("ELEVENLABS_TTS_WS_FALLBACK_MODEL_ID", "eleven_multilingual_v2")).strip() + or "eleven_multilingual_v2" ) self._model_id = self._resolve_websocket_model_id( requested_model_id=self._requested_model_id, @@ -129,7 +129,7 @@ class ElevenLabsTTS(BaseTTS): or _parse_chunk_schedule(os.getenv("ELEVENLABS_TTS_CHUNK_LENGTH_SCHEDULE")) ) self._voice_settings = { - "stability": self._read_float_env("ELEVENLABS_TTS_STABILITY", 0.35), + "stability": self._read_float_env("ELEVENLABS_TTS_STABILITY", 0.5), "similarity_boost": self._read_float_env("ELEVENLABS_TTS_SIMILARITY_BOOST", 0.75), "speed": self._read_float_env("ELEVENLABS_TTS_SPEED", 1.0), "use_speaker_boost": self._read_bool_env("ELEVENLABS_TTS_USE_SPEAKER_BOOST", False), @@ -352,11 +352,11 @@ class ElevenLabsTTS(BaseTTS): @staticmethod def _resolve_websocket_model_id(*, requested_model_id: str, fallback_model_id: str) -> str: - normalized_requested = requested_model_id.strip() or "eleven_turbo_v2_5" + normalized_requested = requested_model_id.strip() or "eleven_multilingual_v2" if normalized_requested not in {"eleven_v3", "eleven_ttv_v3"}: return normalized_requested - normalized_fallback = fallback_model_id.strip() or "eleven_turbo_v2_5" + normalized_fallback = fallback_model_id.strip() or "eleven_multilingual_v2" LOGGER.warning( "ElevenLabs WebSocket TTS does not support model_id=%s; falling back to model_id=%s", normalized_requested,