services: allow TTSModelUpdateFrame to also update language and voice
This commit is contained in:
@@ -441,6 +441,8 @@ class TTSModelUpdateFrame(ControlFrame):
|
|||||||
"""A control frame containing a request to update the TTS model.
|
"""A control frame containing a request to update the TTS model.
|
||||||
"""
|
"""
|
||||||
model: str
|
model: str
|
||||||
|
voice: str | None = None
|
||||||
|
language: Language | None = None
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
|
|||||||
@@ -179,7 +179,7 @@ class TTSService(AIService):
|
|||||||
self._current_sentence: str = ""
|
self._current_sentence: str = ""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
async def set_model(self, model: str):
|
async def set_model(self, model: str, voice: str | None, language: Language | None):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
|
|||||||
@@ -110,9 +110,16 @@ class CartesiaTTSService(TTSService):
|
|||||||
def can_generate_metrics(self) -> bool:
|
def can_generate_metrics(self) -> bool:
|
||||||
return True
|
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}]")
|
logger.debug(f"Switching TTS model to: [{model}]")
|
||||||
self._model_id = 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):
|
async def set_voice(self, voice: str):
|
||||||
logger.debug(f"Switching TTS voice to: [{voice}]")
|
logger.debug(f"Switching TTS voice to: [{voice}]")
|
||||||
|
|||||||
Reference in New Issue
Block a user