From e957cce422878be81b9f3888986d11203bde9158 Mon Sep 17 00:00:00 2001 From: Mark Backman Date: Thu, 24 Oct 2024 13:42:06 -0400 Subject: [PATCH] Align TTSService constructors --- src/pipecat/services/cartesia.py | 25 ++++++++++++------------- src/pipecat/services/elevenlabs.py | 8 ++++---- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/pipecat/services/cartesia.py b/src/pipecat/services/cartesia.py index 3d6111821..5ce0774de 100644 --- a/src/pipecat/services/cartesia.py +++ b/src/pipecat/services/cartesia.py @@ -68,9 +68,6 @@ def language_to_cartesia_language(language: Language) -> str | None: class CartesiaTTSService(WordTTSService): class InputParams(BaseModel): - encoding: Optional[str] = "pcm_s16le" - sample_rate: Optional[int] = 16000 - container: Optional[str] = "raw" language: Optional[Language] = Language.EN speed: Optional[Union[str, float]] = "" emotion: Optional[List[str]] = [] @@ -83,6 +80,9 @@ class CartesiaTTSService(WordTTSService): cartesia_version: str = "2024-06-10", url: str = "wss://api.cartesia.ai/tts/websocket", model: str = "sonic-english", + sample_rate: int = 16000, + encoding: str = "pcm_s16le", + container: str = "raw", params: InputParams = InputParams(), **kwargs, ): @@ -99,7 +99,6 @@ class CartesiaTTSService(WordTTSService): super().__init__( aggregate_sentences=True, push_text_frames=False, - sample_rate=params.sample_rate, **kwargs, ) @@ -108,9 +107,9 @@ class CartesiaTTSService(WordTTSService): self._url = url self._settings = { "output_format": { - "container": params.container, - "encoding": params.encoding, - "sample_rate": params.sample_rate, + "container": container, + "encoding": encoding, + "sample_rate": sample_rate, }, "language": self.language_to_service_language(params.language) if params.language @@ -288,9 +287,6 @@ class CartesiaTTSService(WordTTSService): class CartesiaHttpTTSService(TTSService): class InputParams(BaseModel): - encoding: Optional[str] = "pcm_s16le" - sample_rate: Optional[int] = 16000 - container: Optional[str] = "raw" language: Optional[Language] = Language.EN speed: Optional[Union[str, float]] = "" emotion: Optional[List[str]] = [] @@ -302,6 +298,9 @@ class CartesiaHttpTTSService(TTSService): voice_id: str, model: str = "sonic-english", base_url: str = "https://api.cartesia.ai", + sample_rate: int = 16000, + encoding: str = "pcm_s16le", + container: str = "raw", params: InputParams = InputParams(), **kwargs, ): @@ -310,9 +309,9 @@ class CartesiaHttpTTSService(TTSService): self._api_key = api_key self._settings = { "output_format": { - "container": params.container, - "encoding": params.encoding, - "sample_rate": params.sample_rate, + "container": container, + "encoding": encoding, + "sample_rate": sample_rate, }, "language": self.language_to_service_language(params.language) if params.language diff --git a/src/pipecat/services/elevenlabs.py b/src/pipecat/services/elevenlabs.py index 708fa06c1..68441bfdf 100644 --- a/src/pipecat/services/elevenlabs.py +++ b/src/pipecat/services/elevenlabs.py @@ -74,7 +74,6 @@ def calculate_word_times( class ElevenLabsTTSService(WordTTSService): class InputParams(BaseModel): language: Optional[Language] = Language.EN - output_format: Literal["pcm_16000", "pcm_22050", "pcm_24000", "pcm_44100"] = "pcm_16000" optimize_streaming_latency: Optional[str] = None stability: Optional[float] = None similarity_boost: Optional[float] = None @@ -98,6 +97,7 @@ class ElevenLabsTTSService(WordTTSService): voice_id: str, model: str = "eleven_turbo_v2_5", url: str = "wss://api.elevenlabs.io", + output_format: Literal["pcm_16000", "pcm_22050", "pcm_24000", "pcm_44100"] = "pcm_16000", params: InputParams = InputParams(), **kwargs, ): @@ -120,18 +120,18 @@ class ElevenLabsTTSService(WordTTSService): push_text_frames=False, push_stop_frames=True, stop_frame_timeout_s=2.0, - sample_rate=sample_rate_from_output_format(params.output_format), + sample_rate=sample_rate_from_output_format(output_format), **kwargs, ) self._api_key = api_key self._url = url self._settings = { - "sample_rate": sample_rate_from_output_format(params.output_format), + "sample_rate": sample_rate_from_output_format(output_format), "language": self.language_to_service_language(params.language) if params.language else Language.EN, - "output_format": params.output_format, + "output_format": output_format, "optimize_streaming_latency": params.optimize_streaming_latency, "stability": params.stability, "similarity_boost": params.similarity_boost,