From d386a0efda8569ab26265d0e726f3cadfe1d10b3 Mon Sep 17 00:00:00 2001 From: Paul Kompfner Date: Wed, 18 Feb 2026 15:31:08 -0500 Subject: [PATCH] Update Sarvam TTS to apply all changes to settings, not just voic --- .../foundational/55ze-update-settings-sarvam-tts.py | 6 +++--- src/pipecat/services/sarvam/tts.py | 11 ++++++----- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/examples/foundational/55ze-update-settings-sarvam-tts.py b/examples/foundational/55ze-update-settings-sarvam-tts.py index 07065bfaf..98408c4b8 100644 --- a/examples/foundational/55ze-update-settings-sarvam-tts.py +++ b/examples/foundational/55ze-update-settings-sarvam-tts.py @@ -24,7 +24,7 @@ from pipecat.runner.types import RunnerArguments from pipecat.runner.utils import create_transport from pipecat.services.deepgram.stt import DeepgramSTTService 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.daily.transport import DailyParams 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 asyncio.sleep(10) - logger.info("Updating Sarvam TTS settings: pace=1.3") - await task.queue_frame(TTSUpdateSettingsFrame(update=SarvamWSTTSSettings(pace=1.3))) + logger.info("Updating Sarvam TTS settings: pace=1.5") + await task.queue_frame(TTSUpdateSettingsFrame(update=SarvamTTSSettings(pace=1.5))) @transport.event_handler("on_client_disconnected") async def on_client_disconnected(transport, client): diff --git a/src/pipecat/services/sarvam/tts.py b/src/pipecat/services/sarvam/tts.py index 99a0827f5..aff96f1dd 100644 --- a/src/pipecat/services/sarvam/tts.py +++ b/src/pipecat/services/sarvam/tts.py @@ -276,7 +276,7 @@ class SarvamHttpTTSSettings(TTSSettings): @dataclass -class SarvamWSTTSSettings(TTSSettings): +class SarvamTTSSettings(TTSSettings): """Settings for Sarvam WebSocket TTS service. Parameters: @@ -686,7 +686,7 @@ class SarvamTTSService(InterruptibleTTSService): See https://docs.sarvam.ai/api-reference-docs/text-to-speech/stream for API details. """ - _settings: SarvamWSTTSSettings + _settings: SarvamTTSSettings class InputParams(BaseModel): """Configuration parameters for Sarvam TTS WebSocket service. @@ -841,7 +841,7 @@ class SarvamTTSService(InterruptibleTTSService): pace = max(pace_min, min(pace_max, pace)) # Build base settings - self._settings = SarvamWSTTSSettings( + self._settings = SarvamTTSSettings( target_language_code=( 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]: """Apply a settings update and resend config if voice changed.""" changed = await super()._update_settings(update) - if "voice" in changed: + + if changed: await self._send_config() - self._warn_unhandled_updated_settings(changed.keys() - {"voice"}) + return changed async def _connect(self):