This commit is contained in:
arys
2026-04-30 02:16:45 +05:00
parent 411cf44742
commit 1b5ebbc456
4 changed files with 14 additions and 14 deletions
+1 -1
View File
@@ -21,7 +21,7 @@ from realtime_voice_service.transports.base import BaseMediaTransport
LOGGER = logging.getLogger("uvicorn.error") LOGGER = logging.getLogger("uvicorn.error")
SEMANTIC_ENDPOINTING_HOLD_MS = 2000 SEMANTIC_ENDPOINTING_HOLD_MS = 1000
SEMANTIC_CONTINUATION_TOKENS = { SEMANTIC_CONTINUATION_TOKENS = {
"а", "а",
"в", "в",
+2 -2
View File
@@ -70,8 +70,8 @@ def _audiosocket_port() -> int:
def _sample_rate_hz() -> int: def _sample_rate_hz() -> int:
configured = max(_int_env("REALTIME_VOICE_SAMPLE_RATE_HZ", 8000), 1) configured = max(_int_env("REALTIME_VOICE_SAMPLE_RATE_HZ", 16000), 1)
return configured if configured in {8000, 16000, 24000} else 8000 return configured if configured in {8000, 16000, 24000} else 16000
def _http_host() -> str: def _http_host() -> str:
+4 -4
View File
@@ -69,7 +69,7 @@ class OpenAILLM(BaseLLM):
base_url: str | None = None, base_url: str | None = None,
system_prompt: str | None = None, system_prompt: str | None = None,
timeout_seconds: float | None = None, timeout_seconds: float | None = None,
temperature: float = 0.3, temperature: float = 0.7,
max_retries: int = 2, max_retries: int = 2,
max_context_messages: int | None = None, max_context_messages: int | None = None,
reasoning_effort: str | None = None, reasoning_effort: str | None = None,
@@ -86,7 +86,7 @@ class OpenAILLM(BaseLLM):
if system_prompt is not None if system_prompt is not None
else os.getenv( else os.getenv(
"OPENAI_LLM_SYSTEM_PROMPT", "OPENAI_LLM_SYSTEM_PROMPT",
"You are a concise voice assistant for a telecom call center. Answer clearly and briefly.", "Ты — дружелюбный, живой и эмпатичный голосовой ИИ-ассистент. Отвечай кратко, как в реальном диалоге. Используй разговорный стиль. Чтобы синтезатор речи (TTS) читал аббревиатуры и английские термины без акцента, пиши их русскими буквами так, как они произносятся (например, 'ай-ти' вместо 'IT', 'би-ту-би' вместо 'B2B', 'си-эр-эм' вместо 'CRM').",
) )
).strip() ).strip()
self._timeout_seconds = max(float(timeout_seconds if timeout_seconds is not None else _timeout_seconds()), 1.0) 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", "OLLAMA_LLM_SYSTEM_PROMPT",
os.getenv( os.getenv(
"OPENAI_LLM_SYSTEM_PROMPT", "OPENAI_LLM_SYSTEM_PROMPT",
"You are a concise voice assistant for a telecom call center. Answer clearly and briefly.", "Ты — дружелюбный, живой и эмпатичный голосовой ИИ-ассистент. Отвечай кратко, как в реальном диалоге. Используй разговорный стиль. Чтобы синтезатор речи (TTS) читал аббревиатуры и английские термины без акцента, пиши их русскими буквами так, как они произносятся (например, 'ай-ти' вместо 'IT', 'би-ту-би' вместо 'B2B', 'си-эр-эм' вместо 'CRM').",
), ),
) )
).strip() ).strip()
@@ -663,7 +663,7 @@ class OllamaLLM(BaseLLM):
1.0, 1.0,
) )
self._temperature = max( 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, 0.0,
) )
self._max_context_messages = max( self._max_context_messages = max(
+7 -7
View File
@@ -91,12 +91,12 @@ class ElevenLabsTTS(BaseTTS):
self._ws_base = _ws_base(self._api_base) self._ws_base = _ws_base(self._api_base)
self._voice_id = str(voice_id or os.getenv("ELEVENLABS_TTS_VOICE_ID", "")).strip() self._voice_id = str(voice_id or os.getenv("ELEVENLABS_TTS_VOICE_ID", "")).strip()
self._requested_model_id = ( self._requested_model_id = (
str(model_id or os.getenv("ELEVENLABS_TTS_MODEL_ID", "eleven_turbo_v2_5")).strip() str(model_id or os.getenv("ELEVENLABS_TTS_MODEL_ID", "eleven_multilingual_v2")).strip()
or "eleven_turbo_v2_5" or "eleven_multilingual_v2"
) )
self._websocket_fallback_model_id = ( self._websocket_fallback_model_id = (
str(os.getenv("ELEVENLABS_TTS_WS_FALLBACK_MODEL_ID", "eleven_turbo_v2_5")).strip() str(os.getenv("ELEVENLABS_TTS_WS_FALLBACK_MODEL_ID", "eleven_multilingual_v2")).strip()
or "eleven_turbo_v2_5" or "eleven_multilingual_v2"
) )
self._model_id = self._resolve_websocket_model_id( self._model_id = self._resolve_websocket_model_id(
requested_model_id=self._requested_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")) or _parse_chunk_schedule(os.getenv("ELEVENLABS_TTS_CHUNK_LENGTH_SCHEDULE"))
) )
self._voice_settings = { 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), "similarity_boost": self._read_float_env("ELEVENLABS_TTS_SIMILARITY_BOOST", 0.75),
"speed": self._read_float_env("ELEVENLABS_TTS_SPEED", 1.0), "speed": self._read_float_env("ELEVENLABS_TTS_SPEED", 1.0),
"use_speaker_boost": self._read_bool_env("ELEVENLABS_TTS_USE_SPEAKER_BOOST", False), "use_speaker_boost": self._read_bool_env("ELEVENLABS_TTS_USE_SPEAKER_BOOST", False),
@@ -352,11 +352,11 @@ class ElevenLabsTTS(BaseTTS):
@staticmethod @staticmethod
def _resolve_websocket_model_id(*, requested_model_id: str, fallback_model_id: str) -> str: 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"}: if normalized_requested not in {"eleven_v3", "eleven_ttv_v3"}:
return normalized_requested 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( LOGGER.warning(
"ElevenLabs WebSocket TTS does not support model_id=%s; falling back to model_id=%s", "ElevenLabs WebSocket TTS does not support model_id=%s; falling back to model_id=%s",
normalized_requested, normalized_requested,