Update Sarvam TTS to apply all changes to settings, not just voic

This commit is contained in:
Paul Kompfner
2026-02-18 15:31:08 -05:00
parent b718a23c17
commit d386a0efda
2 changed files with 9 additions and 8 deletions

View File

@@ -24,7 +24,7 @@ from pipecat.runner.types import RunnerArguments
from pipecat.runner.utils import create_transport from pipecat.runner.utils import create_transport
from pipecat.services.deepgram.stt import DeepgramSTTService from pipecat.services.deepgram.stt import DeepgramSTTService
from pipecat.services.openai.llm import OpenAILLMService from pipecat.services.openai.llm import OpenAILLMService
from pipecat.services.sarvam.tts import SarvamTTSService, SarvamWSTTSSettings from pipecat.services.sarvam.tts import SarvamTTSService, SarvamTTSSettings
from pipecat.transports.base_transport import BaseTransport, TransportParams from pipecat.transports.base_transport import BaseTransport, TransportParams
from pipecat.transports.daily.transport import DailyParams from pipecat.transports.daily.transport import DailyParams
from pipecat.transports.websocket.fastapi import FastAPIWebsocketParams from pipecat.transports.websocket.fastapi import FastAPIWebsocketParams
@@ -97,8 +97,8 @@ async def run_bot(transport: BaseTransport, runner_args: RunnerArguments):
await task.queue_frames([LLMRunFrame()]) await task.queue_frames([LLMRunFrame()])
await asyncio.sleep(10) await asyncio.sleep(10)
logger.info("Updating Sarvam TTS settings: pace=1.3") logger.info("Updating Sarvam TTS settings: pace=1.5")
await task.queue_frame(TTSUpdateSettingsFrame(update=SarvamWSTTSSettings(pace=1.3))) await task.queue_frame(TTSUpdateSettingsFrame(update=SarvamTTSSettings(pace=1.5)))
@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):

View File

@@ -276,7 +276,7 @@ class SarvamHttpTTSSettings(TTSSettings):
@dataclass @dataclass
class SarvamWSTTSSettings(TTSSettings): class SarvamTTSSettings(TTSSettings):
"""Settings for Sarvam WebSocket TTS service. """Settings for Sarvam WebSocket TTS service.
Parameters: Parameters:
@@ -686,7 +686,7 @@ class SarvamTTSService(InterruptibleTTSService):
See https://docs.sarvam.ai/api-reference-docs/text-to-speech/stream for API details. See https://docs.sarvam.ai/api-reference-docs/text-to-speech/stream for API details.
""" """
_settings: SarvamWSTTSSettings _settings: SarvamTTSSettings
class InputParams(BaseModel): class InputParams(BaseModel):
"""Configuration parameters for Sarvam TTS WebSocket service. """Configuration parameters for Sarvam TTS WebSocket service.
@@ -841,7 +841,7 @@ class SarvamTTSService(InterruptibleTTSService):
pace = max(pace_min, min(pace_max, pace)) pace = max(pace_min, min(pace_max, pace))
# Build base settings # Build base settings
self._settings = SarvamWSTTSSettings( self._settings = SarvamTTSSettings(
target_language_code=( target_language_code=(
self.language_to_service_language(params.language) if params.language else "en-IN" self.language_to_service_language(params.language) if params.language else "en-IN"
), ),
@@ -956,9 +956,10 @@ class SarvamTTSService(InterruptibleTTSService):
async def _update_settings(self, update: TTSSettings) -> dict[str, Any]: async def _update_settings(self, update: TTSSettings) -> dict[str, Any]:
"""Apply a settings update and resend config if voice changed.""" """Apply a settings update and resend config if voice changed."""
changed = await super()._update_settings(update) changed = await super()._update_settings(update)
if "voice" in changed:
if changed:
await self._send_config() await self._send_config()
self._warn_unhandled_updated_settings(changed.keys() - {"voice"})
return changed return changed
async def _connect(self): async def _connect(self):