Retour à l'accueil

Silero-TTS v5 : questions avec intonation en russe

Silero-TTS v5 mis à jour pour la langue russe avec support de quatre types de questions : accents prosodiques dans les questions générales via *astérisques*, SSML et homographes automatiques. Exemples de code sur pip et torch.hub démontrent la génération audio sur CPU.

Questions dans silero-tts v5 : prosodie et accents en russe
Advertisement 728x90

Silero-TTS v5 : Quatre types d'intonation interrogative en russe maintenant disponibles

Le modèle Silero-TTS v5 pour le russe génère désormais une parole avec une intonation interrogative précise. Le modèle prend en charge quatre types de questions : spéciales (avec mots interrogatifs), générales (avec accent prosodique), alternatives et à queue. Pour les questions générales, le centre intonatif est marqué par des astérisques — cela renforce l'expressivité sans nécessiter de paramètres supplémentaires.

Fonctionnalités principales de la mise à jour :

  • Gestion automatique des homographes et de l'accentuation.
  • Prise en charge complète du SSML pour un contrôle précis de la prosodie.
  • Haute vitesse d'inférence sur CPU.
  • Voix disponibles : aidar, baya, kseniya, xenia (eugene en cours de développement).

Fondements linguistiques de l'intonation interrogative

En russe, les questions sont marquées grammaticalement (ordre des mots, rarement), lexicalement (mots interrogatifs, particules) et prosodiquement (intonation). Les questions générales reposent uniquement sur la prosodie : le centre intonatif peut tomber sur n'importe quel mot, modifiant ainsi le sens.

Exemples :

Google AdInline article slot
  • Il EST VENU ? — accent sur l'action.
  • IL est venu ? — accent sur le sujet.

Former le modèle nécessite de signaler les types de questions et les positions de l'accent. Un corpus sans ces annotations est insuffisant.

Exemples de synthèse de questions générales

Code pour générer des questions avec différentes positions d'accent :

import IPython.display as ipd

texts = [
  '*Organisateurs* nous ont envoyé des billets numériques ?',
  'Organisateurs *ont envoyé* nous des billets numériques ?',
  'Organisateurs ont envoyé *nous* des billets numériques ?',
  'Organisateurs ont envoyé nous *numériques* billets ?',
  'Organisateurs ont envoyé nous des billets *numériques* ?'
]

for i, text in enumerate(texts):
    audio = model.apply_tts(text=text, speaker='xenia')
    ipd.display(ipd.Audio(audio, rate=48000))

Les échantillons audio montrent une montée douce du ton sur le mot mis en évidence, suivie d'une chute à la fin.

Google AdInline article slot

Installation et utilisation basique

Installez via pip :

!pip install silero
from silero import silero_tts
model, example_text = silero_tts(language='ru', speaker='v5_4_ru')
audio = model.apply_tts(text=example_text)

Initialisation complète via torch.hub :

import torch

language = 'ru'
model_id = 'v5_4_ru'
device = torch.device('cpu')
model, example_text = torch.hub.load(repo_or_dir='snakers4/silero-models',
                                     model='silero_tts',
                                     language=language,
                                     speaker=model_id)
model.to(device)
sample_rate = 48000
speaker = 'xenia'
put_accent=True
put_yo=True
put_stress_homo=True
put_yo_homo=True

example_text = 'My name is Leva Korolev. I am ready. And I am ready to open locks of any complexity!'

audio = model.apply_tts(text=example_text,
                        speaker=speaker,
                        sample_rate=sample_rate,
                        put_accent=put_accent,
                        put_yo=put_yo,
                        put_stress_homo=put_stress_homo,
                        put_yo_homo=put_yo_homo)

Exemple SSML avec contrôle de la prosodie :

Google AdInline article slot
ssml_sample = """
              <speak>
              <p>
                  Quand je me réveille, <prosody rate="x-slow">je parle assez lentement</prosody>.
                  Ensuite, je reprends mon ton habituel,
                  <prosody pitch="x-high">ou je peux parler plus haut</prosody>,
                  ou <prosody pitch="x-low">au contraire, plus bas</prosody>.
                  Enfin, si j'ai de la chance – <prosody rate="fast">je peux aussi parler assez vite.</prosody>
                  Et je sais aussi faire des pauses de toute longueur, par exemple deux secondes <break time="2000ms"/>
                  <p>
                    Je peux aussi faire des pauses entre paragraphes.
                  </p>
                  <p>
                    <s>Et aussi des pauses entre phrases</s>
                    <s>Par exemple comme maintenant</s>
                  </p>
              </p>
              </speak>
              """

audio = model.apply_tts(ssml_text=ssml_sample,
                        speaker=speaker,
                        sample_rate=sample_rate)

Paramètres d'intonation et recommandations

  • intensity=3 : intensité de l'intonation interrogative (par défaut, optimal).
  • Pour les questions spéciales, alternatives et à queue, l'accent est facultatif.
  • Les questions générales exigent l'utilisation d'astérisques pour positionner précisément l'accent.

Types de questions et leur traitement :

  • Spéciale : Quoi ? Où ? Quand ? — marquage lexical + prosodie standard.
  • Générale : Tu es à la maison ? — accent prosodique sur n'importe quel mot.
  • Alternative : Poisson ou viande ? — intonation sur les options.
  • À queue : N'est-ce pas ? — ton montant sur la partie finale.

Ce qui compte

  • Silero-TTS v5 génère des questions avec accent prosodique sur n'importe quelle position, sans GPU.
  • Support de quatre types de questions via une simple marque d'astérisque dans les cas généraux.
  • Intégration SSML pour un réglage fin de la prosodie et des pauses.
  • Installation via pip/torch.hub, sample_rate=48000 Hz.
  • Accent dans les phrases déclaratives prévue pour les futures mises à jour.

— Editorial Team

Advertisement 728x90

Lire ensuite