Zpět na domů

Silero-TTS v5: otázky s intonací v ruštině

Silero-TTS v5 byl aktualizován pro ruský jazyk s podporou čtyř typů otázek: prosodických akcentů v obecných otázkách prostřednictvím *hvězdiček*, SSML a automatických homografů. Příklady kódu na pip a torch.hub demonstrují generování audia na CPU.

Otázky v silero-tts v5: prozódie a akcenty v ruštině
Advertisement 728x90

Silero-TTS v5: čtyři typy otázkové intonace v ruštině

Nová verze Silero-TTS v5 pro ruštinu nyní generuje řeč s korektní otázkovou intonací. Model zvládá čtyři typy otázek: speciální (s otázkovými slovy), obecné (s prosodickým akcentem), alternativní a přídavné (tail questions). U obecných otázek je centrální intonace označena hvězdičkami — to zvyšuje vyjadřovací sílu bez nutnosti dalších parametrů.

Hlavní novinky aktualizace:

  • Automatické zpracování homografů a přízvuků.
  • Podpora SSML pro kontrolu prosodie.
  • Vysoká rychlost inferencí na CPU.
  • Hlasové profily: aidar, baya, kseniya, xenia (eugene je ve vývoji).

Jazykové základy otázkové prosodie

V ruštině jsou otázky označeny gramaticky (pořadí slov, vzácně), lexikálně (otázková slova, částice) a prosodicky (intonace). Obecné otázky se spoléhají výhradně na prosodii: intonační střed může padat na jakékoli slovo a změnit tak význam.

Příklady:

Google AdInline article slot
  • On PŘIŠEL? — akcent na činnosti.
  • ON přišel? — akcent na subjektu.

Pro trénink modelu je potřeba označení typů otázek a pozic akcentu. Korpusová data bez této označení nestačí.

Příklady generování obecných otázek

Kód pro syntézu s různými pozicemi akcentu:

import IPython.display as ipd

texts = [
  '*Organizátoři* nám poslali elektronické lístky?',
  'Organizátoři *poslali* nám elektronické lístky?',
  'Organizátoři poslali *nám* elektronické lístky?',
  'Organizátoři poslali nám *elektronické* lístky?',
  'Organizátoři poslali nám elektronické *lístky*?'
]

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

Zvukové ukázky ukazují plynulý nárůst tónu na zvýrazněném slově a pokles na konci.

Google AdInline article slot

Instalace a základní spuštění

Instalace přes 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)

Úplná inicializace přes 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 = 'Jmenuji se Lev Koroľev. Jsem z Gota. A jsem už připraven otevřít každou vaši zámku libovolné obtížnosti!'

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)

SSML příklad s prosodií:

Google AdInline article slot
ssml_sample = """
              <speak>
              <p>
                  Když se probudím, <prosody rate="x-slow">mluvím docela pomalu</prosody>.
                  Pak začnu mluvit svým běžným hlasem,
                  <prosody pitch="x-high">nebo mohu mluvit vysoko</prosody>,
                  nebo <prosody pitch="x-low">naopak nízko</prosody>.
                  Pak, pokud mi to půjde – <prosody rate="fast">mohu mluvit i docela rychle.</prosody>
                  A také umím dělat pauzy libovolné délky, například dvě sekundy <break time="2000ms"/>
                  <p>
                    Také umím dělat pauzy mezi odstavci.
                  </p>
                  <p>
                    <s>A také umím dělat pauzy mezi větami</s>
                    <s>Jako právě teď například</s>
                  </p>
              </p>
              </speak>
              """

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

Parametry intonace a doporučení

  • intensity=3: síla otázkové intonace (výchozí, optimální).
  • U speciálních, alternativních a přídavných otázek není akcent povinný.
  • Obecné otázky vyžadují hvězdičky pro přesné určení pozice akcentu.

Typy otázek a jejich zpracování:

  • Speciální: Co? Kde? Kdy? — lexikální označení + standardní prosodie.
  • Obecné: Jsi doma? — prosodický akcent na libovolném slově.
  • Alternativní: Ryba nebo maso? — intonace na alternativách.
  • Přídavné: Nebo ne? — stoupající tón na přídavku.

Důležité informace

  • Model Silero-TTS v5 generuje otázky s prosodickým akcentem na libovolných pozicích bez GPU.
  • Podpora čtyř typů otázek prostřednictvím jednoduchého označení hvězdičkami u obecných případů.
  • Integrace SSML pro jemné ladění prosodie a pauz.
  • Instalace přes pip/torch.hub, sample_rate=48000 Hz.
  • Plánovaná podpora empházy v tvorivých větách.

— Editorial Team

Advertisement 728x90

Číst dál