From 6b252fb46eeb7eaaf09db15d529580a9192bace8 Mon Sep 17 00:00:00 2001 From: Luke Payyapilli Date: Wed, 7 Jan 2026 11:45:26 -0500 Subject: [PATCH 1/2] Allow language=None in CartesiaTTSService for auto-detection --- src/pipecat/services/cartesia/tts.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/pipecat/services/cartesia/tts.py b/src/pipecat/services/cartesia/tts.py index ee200eac4..869b3eeda 100644 --- a/src/pipecat/services/cartesia/tts.py +++ b/src/pipecat/services/cartesia/tts.py @@ -298,7 +298,7 @@ class CartesiaTTSService(AudioContextWordTTSService): }, "language": self.language_to_service_language(params.language) if params.language - else "en", + else None, "speed": params.speed, "emotion": params.emotion, "generation_config": params.generation_config, @@ -434,11 +434,13 @@ class CartesiaTTSService(AudioContextWordTTSService): "model_id": self.model_name, "voice": voice_config, "output_format": self._settings["output_format"], - "language": self._settings["language"], "add_timestamps": add_timestamps, "use_original_timestamps": False if self.model_name == "sonic" else True, } + if self._settings["language"]: + msg["language"] = self._settings["language"] + if self._settings["speed"]: msg["speed"] = self._settings["speed"] @@ -694,7 +696,7 @@ class CartesiaHttpTTSService(TTSService): }, "language": self.language_to_service_language(params.language) if params.language - else "en", + else None, "speed": params.speed, "emotion": params.emotion, "generation_config": params.generation_config, @@ -786,9 +788,11 @@ class CartesiaHttpTTSService(TTSService): "transcript": text, "voice": voice_config, "output_format": self._settings["output_format"], - "language": self._settings["language"], } + if self._settings["language"]: + payload["language"] = self._settings["language"] + if self._settings["speed"]: payload["speed"] = self._settings["speed"] From f440de82e23beb6df58ffa837593db4a0b4af79f Mon Sep 17 00:00:00 2001 From: Luke Payyapilli Date: Thu, 8 Jan 2026 13:59:21 -0500 Subject: [PATCH 2/2] Handle None language in _process_word_timestamps_for_language --- src/pipecat/services/cartesia/tts.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pipecat/services/cartesia/tts.py b/src/pipecat/services/cartesia/tts.py index 869b3eeda..96007c754 100644 --- a/src/pipecat/services/cartesia/tts.py +++ b/src/pipecat/services/cartesia/tts.py @@ -392,10 +392,10 @@ class CartesiaTTSService(AudioContextWordTTSService): Returns: List of (word, start_time) tuples processed for the language. """ - current_language = self._settings.get("language", "en") + current_language = self._settings.get("language") - # Check if this is a CJK language - if self._is_cjk_language(current_language): + # Check if this is a CJK language (if language is None, treat as non-CJK) + if current_language and self._is_cjk_language(current_language): # For CJK languages, combine all characters in this message into one word # using the first character's start time if words and starts: