Fix Language enum conversion at init time in base TTS/STT services
When a Language enum (e.g. Language.ES) is passed via settings=Service.Settings(language=Language.ES), it gets stored as-is without conversion to the service-specific code. The base _update_settings() handles this for runtime updates, but at init time apply_update() copies the raw enum. This causes API errors because services send the unconverted enum value. Add language conversion in TTSService.__init__ and STTService.__init__ after super().__init__(), using the subclass language_to_service_language() via normal method resolution.
This commit is contained in:
@@ -120,6 +120,15 @@ class STTService(AIService):
|
||||
or STTSettings(),
|
||||
**kwargs,
|
||||
)
|
||||
|
||||
# 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.
|
||||
if isinstance(self._settings.language, Language):
|
||||
converted = self.language_to_service_language(self._settings.language)
|
||||
if converted is not None:
|
||||
self._settings.language = converted
|
||||
|
||||
self._audio_passthrough = audio_passthrough
|
||||
self._init_sample_rate = sample_rate
|
||||
self._sample_rate = 0
|
||||
|
||||
@@ -245,6 +245,14 @@ class TTSService(AIService):
|
||||
**kwargs,
|
||||
)
|
||||
|
||||
# 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.
|
||||
if isinstance(self._settings.language, Language):
|
||||
converted = self.language_to_service_language(self._settings.language)
|
||||
if converted is not None:
|
||||
self._settings.language = converted
|
||||
|
||||
# Resolve text_aggregation_mode from the new param or deprecated aggregate_sentences
|
||||
if aggregate_sentences is not None:
|
||||
import warnings
|
||||
|
||||
Reference in New Issue
Block a user