feat(voice): add admin-configurable elevenlabs tts
This commit is contained in:
@@ -17,7 +17,7 @@ from sqlalchemy.exc import OperationalError
|
||||
from services.ai_voice_runtime_service.audiosocket import normalize_media_uuid
|
||||
from services.ai_voice_runtime_service.media_runtime import AudioSocketMediaRuntime, MediaRegistration
|
||||
from services.ai_voice_runtime_service.providers.asr import build_asr_provider
|
||||
from services.ai_voice_runtime_service.providers.tts import build_tts_provider
|
||||
from services.ai_voice_runtime_service.runtime_tts_provider import RuntimeConfiguredTTSProvider
|
||||
from services.shared.core import Role, new_id, utc_now_iso
|
||||
from services.shared.db import get_session
|
||||
from services.shared.models import (
|
||||
@@ -249,7 +249,11 @@ def _default_voice_greeting(language: str | None, *, agent_profile: str = "voice
|
||||
|
||||
|
||||
_ASR_PROVIDER = build_asr_provider(_asr_provider_name())
|
||||
_TTS_PROVIDER = build_tts_provider(_tts_provider_name())
|
||||
_TTS_PROVIDER = RuntimeConfiguredTTSProvider(default_provider_name=_tts_provider_name())
|
||||
|
||||
|
||||
def _current_tts_provider_name() -> str:
|
||||
return _TTS_PROVIDER.current_provider_name()
|
||||
|
||||
|
||||
def _load_voice_session(session, session_id: str) -> VoiceAISessionRow:
|
||||
@@ -1185,6 +1189,7 @@ def create_voice_ai_session(
|
||||
voice_session.language if voice_session is not None else None,
|
||||
)
|
||||
payload_metadata = payload.metadata if isinstance(payload.metadata, dict) else {}
|
||||
effective_tts_provider_name = _current_tts_provider_name()
|
||||
is_voice_start = (
|
||||
str(payload.agent_profile or "").strip() == "voice_start"
|
||||
or str(payload_metadata.get("stage") or "").strip() == "voice_start"
|
||||
@@ -1201,7 +1206,7 @@ def create_voice_ai_session(
|
||||
agent_profile=payload.agent_profile,
|
||||
language=language,
|
||||
asr_provider=_ASR_PROVIDER.name,
|
||||
tts_provider=_TTS_PROVIDER.name,
|
||||
tts_provider=effective_tts_provider_name,
|
||||
status="greeting",
|
||||
handoff_reason=None,
|
||||
handoff_target_queue_id=payload.handoff_queue_id or payload.queue_id,
|
||||
@@ -1229,6 +1234,7 @@ def create_voice_ai_session(
|
||||
voice_session.queue_id = payload.queue_id
|
||||
voice_session.agent_profile = payload.agent_profile
|
||||
voice_session.language = language
|
||||
voice_session.tts_provider = effective_tts_provider_name
|
||||
voice_session.status = "greeting"
|
||||
voice_session.handoff_reason = None
|
||||
voice_session.handoff_target_queue_id = payload.handoff_queue_id or voice_session.handoff_target_queue_id or payload.queue_id
|
||||
|
||||
Reference in New Issue
Block a user