diff --git a/src/pipecat/services/asyncai/tts.py b/src/pipecat/services/asyncai/tts.py index 0f72b3b9c..1923bb035 100644 --- a/src/pipecat/services/asyncai/tts.py +++ b/src/pipecat/services/asyncai/tts.py @@ -42,14 +42,17 @@ except ModuleNotFoundError as e: raise Exception(f"Missing module: {e}") -def language_to_async_language(language: Language) -> str | None: +def language_to_async_language(language: Language) -> str: """Convert a Language enum to Async language code. Args: language: The Language enum value to convert. Returns: - The corresponding Async language code, or None if not supported. + The corresponding service language code. If ``language`` is not in + the verified mapping, falls back to the base language code (e.g., + ``en`` from ``en-US``) and logs a warning (via + ``resolve_language(..., use_base_code=True)``). """ LANGUAGE_MAP = { Language.EN: "en", diff --git a/src/pipecat/services/aws/tts.py b/src/pipecat/services/aws/tts.py index d49aa796a..a683a94ea 100644 --- a/src/pipecat/services/aws/tts.py +++ b/src/pipecat/services/aws/tts.py @@ -37,14 +37,16 @@ except ModuleNotFoundError as e: raise Exception(f"Missing module: {e}") -def language_to_aws_language(language: Language) -> str | None: +def language_to_aws_language(language: Language) -> str: """Convert a Language enum to AWS Polly language code. Args: language: The Language enum value to convert. Returns: - The corresponding AWS Polly language code, or None if not supported. + The corresponding service language code. If ``language`` is not in + the verified mapping, falls back to the full language code string and + logs a warning (via ``resolve_language(..., use_base_code=False)``). """ LANGUAGE_MAP = { # Arabic diff --git a/src/pipecat/services/azure/common.py b/src/pipecat/services/azure/common.py index 8bb48cd04..c2f21f1b1 100644 --- a/src/pipecat/services/azure/common.py +++ b/src/pipecat/services/azure/common.py @@ -9,14 +9,16 @@ from pipecat.transcriptions.language import Language, resolve_language -def language_to_azure_language(language: Language) -> str | None: +def language_to_azure_language(language: Language) -> str: """Convert a Language enum to Azure language code. Args: language: The Language enum value to convert. Returns: - The corresponding Azure language code, or None if not supported. + The corresponding Azure language code. If ``language`` is not in the + verified mapping, falls back to the full language code string and logs + a warning (via ``resolve_language(..., use_base_code=False)``). """ LANGUAGE_MAP = { # Afrikaans diff --git a/src/pipecat/services/azure/stt.py b/src/pipecat/services/azure/stt.py index 72a8f76b0..e130fe980 100644 --- a/src/pipecat/services/azure/stt.py +++ b/src/pipecat/services/azure/stt.py @@ -182,9 +182,9 @@ class AzureSTTService(STTService): changed = await super()._update_settings(delta) if "language" in changed: - self._speech_config.speech_recognition_language = ( - self._settings.language or language_to_azure_language(Language.EN_US) - ) + self._speech_config.speech_recognition_language = assert_given( + self._settings.language + ) or language_to_azure_language(Language.EN_US) if self._audio_stream: await self._disconnect() await self._connect() diff --git a/src/pipecat/services/camb/tts.py b/src/pipecat/services/camb/tts.py index 7b3aab768..2449a13dd 100644 --- a/src/pipecat/services/camb/tts.py +++ b/src/pipecat/services/camb/tts.py @@ -44,14 +44,17 @@ MODEL_SAMPLE_RATES: dict[str, int] = { } -def language_to_camb_language(language: Language) -> str | None: +def language_to_camb_language(language: Language) -> str: """Convert a Pipecat Language enum to Camb.ai language code. Args: language: The Language enum value to convert. Returns: - The corresponding Camb.ai language code (BCP-47 format), or None if not supported. + The corresponding Camb.ai language code (BCP-47 format). If + ``language`` is not in the verified mapping, falls back to the base + language code (e.g., ``en`` from ``en-US``) and logs a warning (via + ``resolve_language(..., use_base_code=True)``). """ LANGUAGE_MAP = { Language.EN: "en-us", diff --git a/src/pipecat/services/cartesia/tts.py b/src/pipecat/services/cartesia/tts.py index 6b3fc4b83..d88f462c5 100644 --- a/src/pipecat/services/cartesia/tts.py +++ b/src/pipecat/services/cartesia/tts.py @@ -62,14 +62,17 @@ class GenerationConfig(BaseModel): emotion: str | None = None -def language_to_cartesia_language(language: Language) -> str | None: +def language_to_cartesia_language(language: Language) -> str: """Convert a Language enum to Cartesia language code. Args: language: The Language enum value to convert. Returns: - The corresponding Cartesia language code, or None if not supported. + The corresponding service language code. If ``language`` is not in + the verified mapping, falls back to the base language code (e.g., + ``en`` from ``en-US``) and logs a warning (via + ``resolve_language(..., use_base_code=True)``). """ LANGUAGE_MAP = { Language.AR: "ar", diff --git a/src/pipecat/services/deepgram/flux/base.py b/src/pipecat/services/deepgram/flux/base.py index 1d8ad4794..f2042d799 100644 --- a/src/pipecat/services/deepgram/flux/base.py +++ b/src/pipecat/services/deepgram/flux/base.py @@ -32,7 +32,7 @@ from pipecat.utils.time import time_now_iso8601 from pipecat.utils.tracing.service_decorators import traced_stt -def language_to_deepgram_flux_language(language: Language) -> str | None: +def language_to_deepgram_flux_language(language: Language) -> str: """Convert a Pipecat Language to a Deepgram Flux language code. Only honored by the ``flux-general-multi`` model. Locale variants diff --git a/src/pipecat/services/elevenlabs/stt.py b/src/pipecat/services/elevenlabs/stt.py index 5571f8700..6fed6c5e5 100644 --- a/src/pipecat/services/elevenlabs/stt.py +++ b/src/pipecat/services/elevenlabs/stt.py @@ -54,7 +54,7 @@ except ModuleNotFoundError as e: raise Exception(f"Missing module: {e}") -def language_to_elevenlabs_language(language: Language) -> str | None: +def language_to_elevenlabs_language(language: Language) -> str: """Convert a Language enum to ElevenLabs language code. Source: @@ -64,7 +64,9 @@ def language_to_elevenlabs_language(language: Language) -> str | None: language: The Language enum value to convert. Returns: - The corresponding ElevenLabs language code, or None if not supported. + The corresponding service language code. If ``language`` is not in + the verified mapping, falls back to the full language code string and + logs a warning (via ``resolve_language(..., use_base_code=False)``). """ LANGUAGE_MAP = { Language.AF: "afr", # Afrikaans diff --git a/src/pipecat/services/elevenlabs/tts.py b/src/pipecat/services/elevenlabs/tts.py index 4da94643c..239e6a64e 100644 --- a/src/pipecat/services/elevenlabs/tts.py +++ b/src/pipecat/services/elevenlabs/tts.py @@ -69,14 +69,17 @@ ELEVENLABS_MULTILINGUAL_MODELS = { } -def language_to_elevenlabs_language(language: Language) -> str | None: +def language_to_elevenlabs_language(language: Language) -> str: """Convert a Language enum to ElevenLabs language code. Args: language: The Language enum value to convert. Returns: - The corresponding ElevenLabs language code, or None if not supported. + The corresponding service language code. If ``language`` is not in + the verified mapping, falls back to the base language code (e.g., + ``en`` from ``en-US``) and logs a warning (via + ``resolve_language(..., use_base_code=True)``). """ LANGUAGE_MAP = { Language.AR: "ar", diff --git a/src/pipecat/services/fal/stt.py b/src/pipecat/services/fal/stt.py index 1e18c7f84..5aa16c09c 100644 --- a/src/pipecat/services/fal/stt.py +++ b/src/pipecat/services/fal/stt.py @@ -28,14 +28,17 @@ from pipecat.utils.time import time_now_iso8601 from pipecat.utils.tracing.service_decorators import traced_stt -def language_to_fal_language(language: Language) -> str | None: +def language_to_fal_language(language: Language) -> str: """Convert a Language enum to Fal's Wizper language code. Args: language: The Language enum value to convert. Returns: - The corresponding Fal Wizper language code, or None if not supported. + The corresponding service language code. If ``language`` is not in + the verified mapping, falls back to the base language code (e.g., + ``en`` from ``en-US``) and logs a warning (via + ``resolve_language(..., use_base_code=True)``). """ LANGUAGE_MAP = { Language.AF: "af", diff --git a/src/pipecat/services/gladia/stt.py b/src/pipecat/services/gladia/stt.py index ec3277943..cc8e5279b 100644 --- a/src/pipecat/services/gladia/stt.py +++ b/src/pipecat/services/gladia/stt.py @@ -56,14 +56,17 @@ except ModuleNotFoundError as e: raise Exception(f"Missing module: {e}") -def language_to_gladia_language(language: Language) -> str | None: +def language_to_gladia_language(language: Language) -> str: """Convert a Language enum to Gladia's language code format. Args: language: The Language enum value to convert. Returns: - The Gladia language code string or None if not supported. + The corresponding Gladia language code. If ``language`` is not in + the verified mapping, falls back to the base language code (e.g., + ``en`` from ``en-US``) and logs a warning (via + ``resolve_language(..., use_base_code=True)``). """ LANGUAGE_MAP = { Language.AF: "af", @@ -361,7 +364,7 @@ class GladiaSTTService(WebsocketSTTService): language: The Language enum value to convert. Returns: - The Gladia language code string or None if not supported. + The Gladia language code string, or None if not supported. """ return language_to_gladia_language(language) diff --git a/src/pipecat/services/google/gemini_live/llm.py b/src/pipecat/services/google/gemini_live/llm.py index d6966cbc1..adcbe28b8 100644 --- a/src/pipecat/services/google/gemini_live/llm.py +++ b/src/pipecat/services/google/gemini_live/llm.py @@ -111,7 +111,7 @@ MAX_CONSECUTIVE_FAILURES = 3 CONNECTION_ESTABLISHED_THRESHOLD = 10.0 # seconds -def language_to_gemini_language(language: Language) -> str | None: +def language_to_gemini_language(language: Language) -> str: """Maps a Language enum value to a Gemini Live supported language code. Source: @@ -121,7 +121,9 @@ def language_to_gemini_language(language: Language) -> str | None: language: The language enum value to convert. Returns: - The Gemini language code string, or None if the language is not supported. + The Gemini language code string. If ``language`` is not in the + verified mapping, falls back to the full language code string and logs + a warning (via ``resolve_language(..., use_base_code=False)``). """ LANGUAGE_MAP = { # Arabic diff --git a/src/pipecat/services/google/stt.py b/src/pipecat/services/google/stt.py index d9fb0a160..a386566c5 100644 --- a/src/pipecat/services/google/stt.py +++ b/src/pipecat/services/google/stt.py @@ -60,14 +60,17 @@ except ModuleNotFoundError as e: raise Exception(f"Missing module: {e}") -def language_to_google_stt_language(language: Language) -> str | None: +def language_to_google_stt_language(language: Language) -> str: """Maps Language enum to Google Speech-to-Text V2 language codes. Args: language: Language enum value. Returns: - Optional[str]: Google STT language code or None if not supported. + The corresponding Google STT language code. If ``language`` is not + in the verified mapping, falls back to the full language code string + and logs a warning (via + ``resolve_language(..., use_base_code=False)``). """ LANGUAGE_MAP = { # Afrikaans diff --git a/src/pipecat/services/google/tts.py b/src/pipecat/services/google/tts.py index b507fc26f..58bc31691 100644 --- a/src/pipecat/services/google/tts.py +++ b/src/pipecat/services/google/tts.py @@ -60,7 +60,7 @@ except ModuleNotFoundError as e: raise Exception(f"Missing module: {e}") -def language_to_google_tts_language(language: Language) -> str | None: +def language_to_google_tts_language(language: Language) -> str: """Convert a Language enum to Google TTS language code. Source: @@ -70,7 +70,9 @@ def language_to_google_tts_language(language: Language) -> str | None: language: The Language enum value to convert. Returns: - The corresponding Google TTS language code, or None if not supported. + The corresponding service language code. If ``language`` is not in + the verified mapping, falls back to the full language code string and + logs a warning (via ``resolve_language(..., use_base_code=False)``). """ LANGUAGE_MAP = { # Arabic @@ -219,7 +221,7 @@ def language_to_google_tts_language(language: Language) -> str | None: return resolve_language(language, LANGUAGE_MAP, use_base_code=False) -def language_to_gemini_tts_language(language: Language) -> str | None: +def language_to_gemini_tts_language(language: Language) -> str: """Convert a Language enum to Gemini TTS language code. Source: @@ -229,7 +231,9 @@ def language_to_gemini_tts_language(language: Language) -> str | None: language: The Language enum value to convert. Returns: - The corresponding Gemini TTS language code, or None if not supported. + The corresponding service language code. If ``language`` is not in + the verified mapping, falls back to the full language code string and + logs a warning (via ``resolve_language(..., use_base_code=False)``). """ LANGUAGE_MAP = { # Afrikaans (Preview) diff --git a/src/pipecat/services/gradium/stt.py b/src/pipecat/services/gradium/stt.py index 6f1a48f60..e58383b45 100644 --- a/src/pipecat/services/gradium/stt.py +++ b/src/pipecat/services/gradium/stt.py @@ -79,14 +79,17 @@ def _input_format_from_encoding(encoding: str, sample_rate: int) -> str: return encoding -def language_to_gradium_language(language: Language) -> str | None: +def language_to_gradium_language(language: Language) -> str: """Convert a Language enum to Gradium's language code format. Args: language: The Language enum value to convert. Returns: - The Gradium language code string or None if not supported. + The corresponding Gradium language code. If ``language`` is not in + the verified mapping, falls back to the base language code (e.g., + ``en`` from ``en-US``) and logs a warning (via + ``resolve_language(..., use_base_code=True)``). """ LANGUAGE_MAP = { Language.DE: "de", diff --git a/src/pipecat/services/lmnt/tts.py b/src/pipecat/services/lmnt/tts.py index 81dffac7e..7972780fc 100644 --- a/src/pipecat/services/lmnt/tts.py +++ b/src/pipecat/services/lmnt/tts.py @@ -37,14 +37,17 @@ except ModuleNotFoundError as e: raise Exception(f"Missing module: {e}") -def language_to_lmnt_language(language: Language) -> str | None: +def language_to_lmnt_language(language: Language) -> str: """Convert a Language enum to LMNT language code. Args: language: The Language enum value to convert. Returns: - The corresponding LMNT language code, or None if not supported. + The corresponding service language code. If ``language`` is not in + the verified mapping, falls back to the base language code (e.g., + ``en`` from ``en-US``) and logs a warning (via + ``resolve_language(..., use_base_code=True)``). """ LANGUAGE_MAP = { Language.AR: "ar", diff --git a/src/pipecat/services/minimax/tts.py b/src/pipecat/services/minimax/tts.py index 25b7feade..3ef1b49c3 100644 --- a/src/pipecat/services/minimax/tts.py +++ b/src/pipecat/services/minimax/tts.py @@ -31,14 +31,16 @@ from pipecat.transcriptions.language import Language, resolve_language from pipecat.utils.tracing.service_decorators import traced_tts -def language_to_minimax_language(language: Language) -> str | None: +def language_to_minimax_language(language: Language) -> str: """Convert a Language enum to MiniMax language format. Args: language: The Language enum value to convert. Returns: - The corresponding MiniMax language name, or None if not supported. + The corresponding MiniMax language name. If ``language`` is not in + the verified mapping, falls back to the full language code string and + logs a warning (via ``resolve_language(..., use_base_code=False)``). """ LANGUAGE_MAP = { Language.AF: "Afrikaans", diff --git a/src/pipecat/services/neuphonic/tts.py b/src/pipecat/services/neuphonic/tts.py index a7303da6b..6a405a1d2 100644 --- a/src/pipecat/services/neuphonic/tts.py +++ b/src/pipecat/services/neuphonic/tts.py @@ -44,14 +44,17 @@ except ModuleNotFoundError as e: raise Exception(f"Missing module: {e}") -def language_to_neuphonic_lang_code(language: Language) -> str | None: +def language_to_neuphonic_lang_code(language: Language) -> str: """Convert a Language enum to Neuphonic language code. Args: language: The Language enum value to convert. Returns: - The corresponding Neuphonic language code, or None if not supported. + The corresponding service language code. If ``language`` is not in + the verified mapping, falls back to the base language code (e.g., + ``en`` from ``en-US``) and logs a warning (via + ``resolve_language(..., use_base_code=True)``). """ LANGUAGE_MAP = { Language.DE: "de", diff --git a/src/pipecat/services/nvidia/stt.py b/src/pipecat/services/nvidia/stt.py index 49fb4573e..d7064c04c 100644 --- a/src/pipecat/services/nvidia/stt.py +++ b/src/pipecat/services/nvidia/stt.py @@ -49,7 +49,7 @@ except ModuleNotFoundError as e: raise Exception(f"Missing module: {e}") -def language_to_nvidia_nemotron_speech_language(language: Language) -> str | None: +def language_to_nvidia_nemotron_speech_language(language: Language) -> str: """Maps Language enum to NVIDIA Nemotron Speech ASR language codes. Source: @@ -59,7 +59,9 @@ def language_to_nvidia_nemotron_speech_language(language: Language) -> str | Non language: Language enum value. Returns: - str | None: NVIDIA Nemotron Speech language code or None if not supported. + The NVIDIA Nemotron Speech language code. If ``language`` is not in + the verified mapping, falls back to the full language code string and + logs a warning (via ``resolve_language(..., use_base_code=False)``). """ LANGUAGE_MAP = { # Arabic diff --git a/src/pipecat/services/sarvam/tts.py b/src/pipecat/services/sarvam/tts.py index 1ab69ef15..100df80af 100644 --- a/src/pipecat/services/sarvam/tts.py +++ b/src/pipecat/services/sarvam/tts.py @@ -216,14 +216,16 @@ def get_speakers_for_model(model: str) -> list[str]: return list(TTS_MODEL_CONFIGS["bulbul:v2"].speakers) -def language_to_sarvam_language(language: Language) -> str | None: +def language_to_sarvam_language(language: Language) -> str: """Convert Pipecat Language enum to Sarvam AI language codes. Args: language: The Language enum value to convert. Returns: - The corresponding Sarvam AI language code, or None if not supported. + The corresponding service language code. If ``language`` is not in + the verified mapping, falls back to the full language code string and + logs a warning (via ``resolve_language(..., use_base_code=False)``). """ LANGUAGE_MAP = { Language.BN: "bn-IN", # Bengali diff --git a/src/pipecat/services/smallest/tts.py b/src/pipecat/services/smallest/tts.py index 6a2071f44..80f98cb54 100644 --- a/src/pipecat/services/smallest/tts.py +++ b/src/pipecat/services/smallest/tts.py @@ -51,14 +51,17 @@ class SmallestTTSModel(StrEnum): LIGHTNING_V3_1 = "lightning-v3.1" -def language_to_smallest_tts_language(language: Language) -> str | None: +def language_to_smallest_tts_language(language: Language) -> str: """Convert a Language enum to a Smallest TTS language string. Args: language: The Language enum value to convert. Returns: - The Smallest language code string, or None if unsupported. + The corresponding Smallest language code. If ``language`` is not in + the verified mapping, falls back to the base language code (e.g., + ``en`` from ``en-US``) and logs a warning (via + ``resolve_language(..., use_base_code=True)``). """ LANGUAGE_MAP = { Language.AR: "ar", diff --git a/src/pipecat/services/stt_service.py b/src/pipecat/services/stt_service.py index 7c6028ea1..e54581919 100644 --- a/src/pipecat/services/stt_service.py +++ b/src/pipecat/services/stt_service.py @@ -269,7 +269,10 @@ class STTService(AIService): language: The language to convert. Returns: - The service-specific language identifier, or None if not supported. + The service-specific language identifier. Return ``None`` to + indicate an unsupported language. This optional return is an + extension hook for future or third-party subclasses; as of + 2026-04-28, first-party services return a string. """ return Language(language) diff --git a/src/pipecat/services/tts_service.py b/src/pipecat/services/tts_service.py index 46c5c7528..f386b5bcb 100644 --- a/src/pipecat/services/tts_service.py +++ b/src/pipecat/services/tts_service.py @@ -467,7 +467,10 @@ class TTSService(AIService): language: The language to convert. Returns: - The service-specific language identifier, or None if not supported. + The service-specific language identifier. Return ``None`` to + indicate an unsupported language. This optional return is an + extension hook for future or third-party subclasses; as of + 2026-04-28, first-party services return a string. """ return Language(language) diff --git a/src/pipecat/services/whisper/base_stt.py b/src/pipecat/services/whisper/base_stt.py index 9ac84c41c..6a6bd6b12 100644 --- a/src/pipecat/services/whisper/base_stt.py +++ b/src/pipecat/services/whisper/base_stt.py @@ -40,7 +40,7 @@ class BaseWhisperSTTSettings(STTSettings): temperature: float | None | _NotGiven = field(default_factory=lambda: NOT_GIVEN) -def language_to_whisper_language(language: Language) -> str | None: +def language_to_whisper_language(language: Language) -> str: """Maps pipecat Language enum to Whisper API language codes. Language support for Whisper API. @@ -50,7 +50,10 @@ def language_to_whisper_language(language: Language) -> str | None: language: A Language enum value representing the input language. Returns: - str or None: The corresponding Whisper language code, or None if not supported. + The corresponding service language code. If ``language`` is not in + the verified mapping, falls back to the base language code (e.g., + ``en`` from ``en-US``) and logs a warning (via + ``resolve_language(..., use_base_code=True)``). """ LANGUAGE_MAP = { Language.AF: "af", @@ -235,7 +238,7 @@ class BaseWhisperSTTService(SegmentedSTTService): language: The Language enum value to convert. Returns: - str or None: The corresponding service language code, or None if not supported. + The corresponding service language code, or None if not supported. """ return language_to_whisper_language(language) diff --git a/src/pipecat/services/whisper/stt.py b/src/pipecat/services/whisper/stt.py index 47f896056..443664348 100644 --- a/src/pipecat/services/whisper/stt.py +++ b/src/pipecat/services/whisper/stt.py @@ -97,14 +97,17 @@ class MLXModel(Enum): LARGE_V3_TURBO_Q4 = "mlx-community/whisper-large-v3-turbo-q4" -def language_to_whisper_language(language: Language) -> str | None: +def language_to_whisper_language(language: Language) -> str: """Maps pipecat Language enum to Whisper language codes. Args: language: A Language enum value representing the input language. Returns: - str or None: The corresponding Whisper language code, or None if not supported. + The corresponding service language code. If ``language`` is not in + the verified mapping, falls back to the base language code (e.g., + ``en`` from ``en-US``) and logs a warning (via + ``resolve_language(..., use_base_code=True)``). Note: Only includes languages officially supported by Whisper. @@ -300,7 +303,7 @@ class WhisperSTTService(SegmentedSTTService): language: The Language enum value to convert. Returns: - str or None: The corresponding Whisper language code, or None if not supported. + The corresponding Whisper language code, or None if not supported. """ return language_to_whisper_language(language) diff --git a/src/pipecat/services/xai/stt.py b/src/pipecat/services/xai/stt.py index 3cc3a23b2..e219cfb6e 100644 --- a/src/pipecat/services/xai/stt.py +++ b/src/pipecat/services/xai/stt.py @@ -44,7 +44,7 @@ except ModuleNotFoundError as e: raise Exception(f"Missing module: {e}") -def language_to_xai_stt_language(language: Language) -> str | None: +def language_to_xai_stt_language(language: Language) -> str: """Convert a Language enum to the xAI STT language code. xAI STT accepts two-letter language codes (e.g. ``en``, ``fr``, ``de``, @@ -54,7 +54,10 @@ def language_to_xai_stt_language(language: Language) -> str | None: language: The Language enum value to convert. Returns: - The corresponding xAI STT language code, or None if not supported. + The corresponding service language code. If ``language`` is not in + the verified mapping, falls back to the base language code (e.g., + ``en`` from ``en-US``) and logs a warning (via + ``resolve_language(..., use_base_code=True)``). """ LANGUAGE_MAP = { Language.AR: "ar", diff --git a/src/pipecat/services/xai/tts.py b/src/pipecat/services/xai/tts.py index 83e7781f2..ad7f05bbd 100644 --- a/src/pipecat/services/xai/tts.py +++ b/src/pipecat/services/xai/tts.py @@ -49,14 +49,17 @@ except ModuleNotFoundError as e: raise Exception(f"Missing module: {e}") -def language_to_xai_language(language: Language) -> str | None: +def language_to_xai_language(language: Language) -> str: """Convert a Language enum to xAI language code. Args: language: The Language enum value to convert. Returns: - The corresponding xAI language code, or None if not supported. + The corresponding service language code. If ``language`` is not in + the verified mapping, falls back to the base language code (e.g., + ``en`` from ``en-US``) and logs a warning (via + ``resolve_language(..., use_base_code=True)``). """ LANGUAGE_MAP = { Language.AR: "ar-EG", diff --git a/src/pipecat/services/xtts/tts.py b/src/pipecat/services/xtts/tts.py index f9caa3819..d323e9b67 100644 --- a/src/pipecat/services/xtts/tts.py +++ b/src/pipecat/services/xtts/tts.py @@ -37,14 +37,17 @@ from pipecat.utils.tracing.service_decorators import traced_tts # https://github.com/coqui-ai/xtts-streaming-server -def language_to_xtts_language(language: Language) -> str | None: +def language_to_xtts_language(language: Language) -> str: """Convert a Language enum to XTTS language code. Args: language: The Language enum value to convert. Returns: - The corresponding XTTS language code, or None if not supported. + The corresponding service language code. If ``language`` is not in + the verified mapping, falls back to the base language code (e.g., + ``en`` from ``en-US``) and logs a warning (via + ``resolve_language(..., use_base_code=True)``). """ LANGUAGE_MAP = { Language.CS: "cs",