services: allow switching STT language and mdoel at the same time

This commit is contained in:
Aleix Conchillo Flaqué
2024-08-26 11:26:10 -07:00
parent 4e0ece17b6
commit b3b39626e1
4 changed files with 11 additions and 4 deletions

View File

@@ -462,9 +462,12 @@ class TTSLanguageUpdateFrame(ControlFrame):
@dataclass
class STTModelUpdateFrame(ControlFrame):
"""A control frame containing a request to update the STT model.
"""A control frame containing a request to update the STT model and optional
language.
"""
model: str
language: Language | None = None
@dataclass

View File

@@ -310,7 +310,7 @@ class STTService(AIService):
super().__init__(**kwargs)
@abstractmethod
async def set_model(self, model: str):
async def set_model(self, model: str, language: Language | None):
pass
@abstractmethod
@@ -334,7 +334,7 @@ class STTService(AIService):
# push a TextFrame. We don't really want to push audio frames down.
await self.process_audio_frame(frame)
elif isinstance(frame, STTModelUpdateFrame):
await self.set_model(frame.model)
await self.set_model(frame.model, frame.language)
elif isinstance(frame, STTLanguageUpdateFrame):
await self.set_language(frame.language)
else:

View File

@@ -123,6 +123,7 @@ class CartesiaTTSService(TTSService):
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 start(self, frame: StartFrame):

View File

@@ -134,9 +134,12 @@ class DeepgramSTTService(STTService):
self._connection: AsyncListenWebSocketClient = self._client.listen.asyncwebsocket.v("1")
self._connection.on(LiveTranscriptionEvents.Transcript, self._on_message)
async def set_model(self, model: str):
async def set_model(self, model: str, language: Language | None):
logger.debug(f"Switching STT model to: [{model}]")
self._live_options.model = model
if language:
logger.debug(f"Switching STT language to: [{language}]")
self._live_options.language = language.value
await self._disconnect()
await self._connect()