Update Deepgram TTS to support updating settings dynamically

This commit is contained in:
Paul Kompfner
2026-02-18 14:11:51 -05:00
parent 28677ec829
commit 728a97ade3
2 changed files with 24 additions and 1 deletions

View File

@@ -102,6 +102,12 @@ async def run_bot(transport: BaseTransport, runner_args: RunnerArguments):
TTSUpdateSettingsFrame(update=DeepgramTTSSettings(voice="aura-2-luna-en"))
)
await asyncio.sleep(10)
logger.info('Updating Deepgram TTS settings: voice="aura-2-aries-en"')
await task.queue_frame(
TTSUpdateSettingsFrame(update=DeepgramTTSSettings(voice="aura-2-aries-en"))
)
@transport.event_handler("on_client_disconnected")
async def on_client_disconnected(transport, client):
logger.info(f"Client disconnected")

View File

@@ -12,7 +12,7 @@ for generating speech from text using various voice models.
import json
from dataclasses import dataclass, field
from typing import AsyncGenerator, Optional
from typing import Any, AsyncGenerator, Optional
import aiohttp
from loguru import logger
@@ -183,6 +183,23 @@ class DeepgramTTSService(WebsocketTTSService):
await self._disconnect_websocket()
async def _update_settings(self, update: TTSSettings) -> dict[str, Any]:
"""Apply a settings update.
Args:
update: A :class:`TTSSettings` (or ``DeepgramTTSSettings``) delta.
Returns:
Dict mapping changed field names to their previous values.
"""
changed = await super()._update_settings(update)
if changed:
await self._disconnect()
await self._connect()
return changed
async def _connect_websocket(self):
"""Connect to Deepgram WebSocket API with configured settings."""
try: