services: allow TTSModelUpdateFrame to also update language and voice

This commit is contained in:
Aleix Conchillo Flaqué
2024-08-26 12:08:53 -07:00
parent fedfc366f6
commit d7c9679977
3 changed files with 11 additions and 2 deletions

View File

@@ -441,6 +441,8 @@ class TTSModelUpdateFrame(ControlFrame):
"""A control frame containing a request to update the TTS model.
"""
model: str
voice: str | None = None
language: Language | None = None
@dataclass

View File

@@ -179,7 +179,7 @@ class TTSService(AIService):
self._current_sentence: str = ""
@abstractmethod
async def set_model(self, model: str):
async def set_model(self, model: str, voice: str | None, language: Language | None):
pass
@abstractmethod

View File

@@ -110,9 +110,16 @@ class CartesiaTTSService(TTSService):
def can_generate_metrics(self) -> bool:
return True
async def set_model(self, model: str):
async def set_model(self, model: str, voice: str | None, language: Language | None):
logger.debug(f"Switching TTS model to: [{model}]")
self._model_id = model
if language:
logger.debug(f"Switching TTS language to: [{language}]")
cartesia_language = language_to_cartesia_language(language)
self._language = cartesia_language
if voice:
logger.debug(f"Switching TTS voice to: [{voice}]")
self._voice_id = voice
async def set_voice(self, voice: str):
logger.debug(f"Switching TTS voice to: [{voice}]")