Merge pull request #4058 from pipecat-ai/mb/improve-stt-tts-language-code-robustness
fix: resolve raw language strings through Language enum for proper service conversion
This commit is contained in:
@@ -124,6 +124,18 @@ class STTService(AIService):
|
||||
# Convert Language enum to service-specific format at init time.
|
||||
# Runtime updates are handled by _update_settings(), but init-time
|
||||
# settings bypass that path and need explicit conversion.
|
||||
# Raw strings (e.g. "de-DE") are first converted to Language enums
|
||||
# so they go through the same resolution logic.
|
||||
if isinstance(self._settings.language, str) and not isinstance(
|
||||
self._settings.language, Language
|
||||
):
|
||||
try:
|
||||
self._settings.language = Language(self._settings.language)
|
||||
except ValueError:
|
||||
logger.warning(
|
||||
f"Language string '{self._settings.language}' is not a recognized "
|
||||
f"Language code. It will be passed to the service as-is."
|
||||
)
|
||||
if isinstance(self._settings.language, Language):
|
||||
converted = self.language_to_service_language(self._settings.language)
|
||||
if converted is not None:
|
||||
@@ -294,7 +306,20 @@ class STTService(AIService):
|
||||
Returns:
|
||||
Dict mapping changed field names to their previous values.
|
||||
"""
|
||||
# Translate language *before* applying so the stored value is canonical
|
||||
# Translate language *before* applying so the stored value is canonical.
|
||||
# Raw strings are first converted to Language enums for proper resolution.
|
||||
if (
|
||||
is_given(delta.language)
|
||||
and isinstance(delta.language, str)
|
||||
and not isinstance(delta.language, Language)
|
||||
):
|
||||
try:
|
||||
delta.language = Language(delta.language)
|
||||
except ValueError:
|
||||
logger.warning(
|
||||
f"Language string '{delta.language}' is not a recognized "
|
||||
f"Language code. It will be passed to the service as-is."
|
||||
)
|
||||
if is_given(delta.language) and isinstance(delta.language, Language):
|
||||
converted = self.language_to_service_language(delta.language)
|
||||
if converted is not None:
|
||||
|
||||
@@ -248,6 +248,18 @@ class TTSService(AIService):
|
||||
# Convert Language enum to service-specific format at init time.
|
||||
# Runtime updates are handled by _update_settings(), but init-time
|
||||
# settings bypass that path and need explicit conversion.
|
||||
# Raw strings (e.g. "de-DE") are first converted to Language enums
|
||||
# so they go through the same resolution logic.
|
||||
if isinstance(self._settings.language, str) and not isinstance(
|
||||
self._settings.language, Language
|
||||
):
|
||||
try:
|
||||
self._settings.language = Language(self._settings.language)
|
||||
except ValueError:
|
||||
logger.warning(
|
||||
f"Language string '{self._settings.language}' is not a recognized "
|
||||
f"Language code. It will be passed to the service as-is."
|
||||
)
|
||||
if isinstance(self._settings.language, Language):
|
||||
converted = self.language_to_service_language(self._settings.language)
|
||||
if converted is not None:
|
||||
@@ -610,7 +622,20 @@ class TTSService(AIService):
|
||||
Returns:
|
||||
Dict mapping changed field names to their previous values.
|
||||
"""
|
||||
# Translate language *before* applying so the stored value is canonical
|
||||
# Translate language *before* applying so the stored value is canonical.
|
||||
# Raw strings are first converted to Language enums for proper resolution.
|
||||
if (
|
||||
is_given(delta.language)
|
||||
and isinstance(delta.language, str)
|
||||
and not isinstance(delta.language, Language)
|
||||
):
|
||||
try:
|
||||
delta.language = Language(delta.language)
|
||||
except ValueError:
|
||||
logger.warning(
|
||||
f"Language string '{delta.language}' is not a recognized "
|
||||
f"Language code. It will be passed to the service as-is."
|
||||
)
|
||||
if is_given(delta.language) and isinstance(delta.language, Language):
|
||||
converted = self.language_to_service_language(delta.language)
|
||||
if converted is not None:
|
||||
|
||||
Reference in New Issue
Block a user