Update Deepgram TTS to support updating settings dynamically
This commit is contained in:
@@ -102,6 +102,12 @@ async def run_bot(transport: BaseTransport, runner_args: RunnerArguments):
|
|||||||
TTSUpdateSettingsFrame(update=DeepgramTTSSettings(voice="aura-2-luna-en"))
|
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")
|
@transport.event_handler("on_client_disconnected")
|
||||||
async def on_client_disconnected(transport, client):
|
async def on_client_disconnected(transport, client):
|
||||||
logger.info(f"Client disconnected")
|
logger.info(f"Client disconnected")
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ for generating speech from text using various voice models.
|
|||||||
|
|
||||||
import json
|
import json
|
||||||
from dataclasses import dataclass, field
|
from dataclasses import dataclass, field
|
||||||
from typing import AsyncGenerator, Optional
|
from typing import Any, AsyncGenerator, Optional
|
||||||
|
|
||||||
import aiohttp
|
import aiohttp
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
@@ -183,6 +183,23 @@ class DeepgramTTSService(WebsocketTTSService):
|
|||||||
|
|
||||||
await self._disconnect_websocket()
|
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):
|
async def _connect_websocket(self):
|
||||||
"""Connect to Deepgram WebSocket API with configured settings."""
|
"""Connect to Deepgram WebSocket API with configured settings."""
|
||||||
try:
|
try:
|
||||||
|
|||||||
Reference in New Issue
Block a user