Skip to content

Commit 53f49ac

Browse files
authored
Merge pull request #4024 from pipecat-ai/mb/fix-lang-enum-stt-tts
2 parents bf02d61 + 0ec5f5e commit 53f49ac

25 files changed

Lines changed: 76 additions & 82 deletions

File tree

changelog/4024.fixed.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
- Fixed `Language` enum values (e.g. `Language.ES`) not being converted to service-specific codes when passed via `settings=Service.Settings(language=Language.ES)` at init time. This caused API errors (e.g. 400 from Rime) because the raw enum was sent instead of the expected language code (e.g. `"spa"`). Runtime updates via `UpdateSettingsFrame` were unaffected. The fix centralizes conversion in the base `TTSService` and `STTService` classes so all services handle this consistently.

src/pipecat/services/asyncai/tts.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -171,9 +171,7 @@ def __init__(
171171
if params is not None:
172172
self._warn_init_param_moved_to_settings("params")
173173
if not settings:
174-
default_settings.language = (
175-
self.language_to_service_language(params.language) if params.language else None
176-
)
174+
default_settings.language = params.language
177175

178176
# 4. Apply settings delta (canonical API, always wins)
179177
if settings is not None:
@@ -565,9 +563,7 @@ def __init__(
565563
if params is not None:
566564
self._warn_init_param_moved_to_settings("params")
567565
if not settings:
568-
default_settings.language = (
569-
self.language_to_service_language(params.language) if params.language else None
570-
)
566+
default_settings.language = params.language
571567

572568
# 4. Apply settings delta (canonical API, always wins)
573569
if settings is not None:

src/pipecat/services/aws/stt.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,13 +100,13 @@ def __init__(
100100
# 1. Initialize default_settings with hardcoded defaults
101101
default_settings = self.Settings(
102102
model=None,
103-
language=self.language_to_service_language(Language.EN),
103+
language=Language.EN,
104104
)
105105

106106
# 2. Apply direct init arg overrides (deprecated)
107107
if language is not None:
108108
self._warn_init_param_moved_to_settings("language", "language")
109-
default_settings.language = self.language_to_service_language(language)
109+
default_settings.language = language
110110

111111
# 3. (No step 3, as there's no params object to apply)
112112

src/pipecat/services/aws/tts.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -230,11 +230,7 @@ def __init__(
230230
self._warn_init_param_moved_to_settings("params")
231231
if not settings:
232232
default_settings.engine = params.engine
233-
default_settings.language = (
234-
self.language_to_service_language(params.language)
235-
if params.language
236-
else "en-US"
237-
)
233+
default_settings.language = params.language if params.language else "en-US"
238234
default_settings.pitch = params.pitch
239235
default_settings.rate = params.rate
240236
default_settings.volume = params.volume

src/pipecat/services/azure/stt.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,13 +106,13 @@ def __init__(
106106
# 1. Initialize default_settings with hardcoded defaults
107107
default_settings = self.Settings(
108108
model=None,
109-
language=language_to_azure_language(Language.EN_US),
109+
language=Language.EN_US,
110110
)
111111

112112
# 2. Apply direct init arg overrides (deprecated)
113113
if language is not None and language != Language.EN_US:
114114
self._warn_init_param_moved_to_settings("language", "language")
115-
default_settings.language = language_to_azure_language(language)
115+
default_settings.language = language
116116

117117
# 3. (No step 3, as there's no params object to apply)
118118

src/pipecat/services/azure/tts.py

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -312,11 +312,7 @@ def __init__(
312312
self._warn_init_param_moved_to_settings("params")
313313
if not settings:
314314
default_settings.emphasis = params.emphasis
315-
default_settings.language = (
316-
self.language_to_service_language(params.language)
317-
if params.language
318-
else "en-US"
319-
)
315+
default_settings.language = params.language if params.language else "en-US"
320316
default_settings.pitch = params.pitch
321317
default_settings.rate = params.rate
322318
default_settings.role = params.role
@@ -809,11 +805,7 @@ def __init__(
809805
self._warn_init_param_moved_to_settings("params")
810806
if not settings:
811807
default_settings.emphasis = params.emphasis
812-
default_settings.language = (
813-
self.language_to_service_language(params.language)
814-
if params.language
815-
else "en-US"
816-
)
808+
default_settings.language = params.language if params.language else "en-US"
817809
default_settings.pitch = params.pitch
818810
default_settings.rate = params.rate
819811
default_settings.role = params.role

src/pipecat/services/camb/tts.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -260,9 +260,7 @@ def __init__(
260260
self._warn_init_param_moved_to_settings("params")
261261
if not settings:
262262
if params.language is not None:
263-
default_settings.language = (
264-
self.language_to_service_language(params.language) or "en-us"
265-
)
263+
default_settings.language = params.language
266264
if params.user_instructions is not None:
267265
default_settings.user_instructions = params.user_instructions
268266

src/pipecat/services/cartesia/tts.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ def __init__(
302302
default_settings = self.Settings(
303303
model="sonic-3",
304304
voice=None,
305-
language=language_to_cartesia_language(Language.EN),
305+
language=Language.EN,
306306
generation_config=None,
307307
pronunciation_dict_id=None,
308308
)
@@ -320,7 +320,7 @@ def __init__(
320320
self._warn_init_param_moved_to_settings("params")
321321
if not settings:
322322
if params.language is not None:
323-
default_settings.language = self.language_to_service_language(params.language)
323+
default_settings.language = params.language
324324
if params.generation_config is not None:
325325
default_settings.generation_config = params.generation_config
326326
if params.pronunciation_dict_id is not None:
@@ -749,7 +749,7 @@ def __init__(
749749
default_settings = self.Settings(
750750
model="sonic-3",
751751
voice=None,
752-
language=language_to_cartesia_language(Language.EN),
752+
language=Language.EN,
753753
generation_config=None,
754754
pronunciation_dict_id=None,
755755
)
@@ -767,7 +767,7 @@ def __init__(
767767
self._warn_init_param_moved_to_settings("params")
768768
if not settings:
769769
if params.language is not None:
770-
default_settings.language = self.language_to_service_language(params.language)
770+
default_settings.language = params.language
771771
if params.generation_config is not None:
772772
default_settings.generation_config = params.generation_config
773773
if params.pronunciation_dict_id is not None:

src/pipecat/services/elevenlabs/stt.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ def __init__(
272272
# 1. Initialize default_settings with hardcoded defaults
273273
default_settings = self.Settings(
274274
model="scribe_v2",
275-
language=language_to_elevenlabs_language(Language.EN),
275+
language=Language.EN,
276276
tag_audio_events=None,
277277
)
278278

@@ -286,7 +286,7 @@ def __init__(
286286
self._warn_init_param_moved_to_settings("params")
287287
if not settings:
288288
if params.language is not None:
289-
default_settings.language = language_to_elevenlabs_language(params.language)
289+
default_settings.language = params.language
290290
default_settings.tag_audio_events = params.tag_audio_events
291291

292292
# 4. Apply settings delta (canonical API, always wins)

src/pipecat/services/elevenlabs/tts.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -449,7 +449,7 @@ def __init__(
449449
self._warn_init_param_moved_to_settings("params")
450450
if not settings:
451451
if params.language is not None:
452-
default_settings.language = self.language_to_service_language(params.language)
452+
default_settings.language = params.language
453453
if params.stability is not None:
454454
default_settings.stability = params.stability
455455
if params.similarity_boost is not None:
@@ -1014,7 +1014,7 @@ def __init__(
10141014
self._warn_init_param_moved_to_settings("params")
10151015
if not settings:
10161016
if params.language is not None:
1017-
default_settings.language = self.language_to_service_language(params.language)
1017+
default_settings.language = params.language
10181018
if params.optimize_streaming_latency is not None:
10191019
default_settings.optimize_streaming_latency = params.optimize_streaming_latency
10201020
if params.stability is not None:

0 commit comments

Comments
 (0)