diff --git a/speech.py b/speech.py index 9e26b74..9d0245e 100755 --- a/speech.py +++ b/speech.py @@ -477,10 +477,14 @@ async def generate_speech(request: GenerateSpeechRequest): speaker_id = voice_map.get('speaker', 'en_0') silero_speaker_key = voice_map.get('silero_speaker', 'v4_en') - # Load Silero model if not already loaded - if silero_model is None or silero_speakers.get(language) != silero_speaker_key: + # Create a unique key for this language+speaker combination + model_key = f"{language}_{silero_speaker_key}" + + # Load Silero model if not already loaded or if language/speaker changed + if silero_model is None or silero_speakers.get('current') != model_key: + logger.info(f"Loading/switching Silero model to {language}/{silero_speaker_key}") silero_model = silero_wrapper(language=language, speaker=silero_speaker_key, device='cpu') - silero_speakers[language] = silero_speaker_key + silero_speakers['current'] = model_key # Generate audio audio_data = silero_model.tts(input_text, speaker_id=speaker_id) diff --git a/voice_to_speaker.default.yaml b/voice_to_speaker.default.yaml index cfbbc3d..089c95f 100644 --- a/voice_to_speaker.default.yaml +++ b/voice_to_speaker.default.yaml @@ -709,31 +709,31 @@ tts-1-silero: language: en speaker: random silero_speaker: v3_en - # Russian voices (v4_ru model) + # Russian voices (v3_ru/ru_v3 model) - use ru_v3 for better compatibility ru_aidar: language: ru speaker: aidar - silero_speaker: v4_ru + silero_speaker: ru_v3 ru_baya: language: ru speaker: baya - silero_speaker: v4_ru + silero_speaker: ru_v3 ru_kseniya: language: ru speaker: kseniya - silero_speaker: v4_ru + silero_speaker: ru_v3 ru_xenia: language: ru speaker: xenia - silero_speaker: v4_ru + silero_speaker: ru_v3 ru_eugene: language: ru speaker: eugene - silero_speaker: v4_ru + silero_speaker: ru_v3 ru_random: language: ru speaker: random - silero_speaker: v4_ru + silero_speaker: ru_v3 # German voices (v3_de model) de_bernd_ungerer: language: de @@ -759,23 +759,23 @@ tts-1-silero: language: de speaker: random silero_speaker: v3_de - # Spanish voices (v1_es model) + # Spanish voices (v3_es model) es_0: language: es speaker: es_0 - silero_speaker: v1_es + silero_speaker: v3_es es_1: language: es speaker: es_1 - silero_speaker: v1_es + silero_speaker: v3_es es_2: language: es speaker: es_2 - silero_speaker: v1_es + silero_speaker: v3_es es_random: language: es speaker: random - silero_speaker: v1_es + silero_speaker: v3_es # French voices (v3_fr model) fr_0: language: fr