From 080ed22ff5cf1caaf53625f884386ec4d2c17e9c Mon Sep 17 00:00:00 2001 From: Paul Kompfner Date: Wed, 11 Mar 2026 15:44:05 -0400 Subject: [PATCH] Override CambTTSSettings.voice type from str to int to match Camb.ai's integer voice IDs --- examples/foundational/55zf-update-settings-camb-tts.py | 6 ++++-- src/pipecat/services/camb/tts.py | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/examples/foundational/55zf-update-settings-camb-tts.py b/examples/foundational/55zf-update-settings-camb-tts.py index 5f0840857..37b845ab4 100644 --- a/examples/foundational/55zf-update-settings-camb-tts.py +++ b/examples/foundational/55zf-update-settings-camb-tts.py @@ -96,9 +96,11 @@ async def run_bot(transport: BaseTransport, runner_args: RunnerArguments): await task.queue_frames([LLMRunFrame()]) await asyncio.sleep(10) - logger.info("Updating Camb TTS settings: language -> Spanish") + logger.info("Updating Camb TTS settings: language -> Spanish, voice -> Pirate Captain") await task.queue_frame( - TTSUpdateSettingsFrame(delta=CambTTSService.Settings(language=Language.ES)) + TTSUpdateSettingsFrame( + delta=CambTTSService.Settings(language=Language.ES, voice=147319) + ) ) @transport.event_handler("on_client_disconnected") diff --git a/src/pipecat/services/camb/tts.py b/src/pipecat/services/camb/tts.py index b0c237165..9c360ed37 100644 --- a/src/pipecat/services/camb/tts.py +++ b/src/pipecat/services/camb/tts.py @@ -138,10 +138,13 @@ class CambTTSSettings(TTSSettings): """Settings for CambTTSService. Parameters: + voice: Camb.ai voice ID. Overrides ``TTSSettings.voice`` (str) because + Camb.ai uses integer voice IDs. user_instructions: Custom instructions for mars-instruct model only. Ignored for other models. Max 1000 characters. """ + voice: int | _NotGiven = field(default_factory=lambda: NOT_GIVEN) user_instructions: str | None | _NotGiven = field(default_factory=lambda: NOT_GIVEN)