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.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):

View File

@@ -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):