Powrót do strony głównej

Silero-TTS v5: pytania z intonacją po rosyjsku

Silero-TTS v5 zaktualizowany dla języka rosyjskiego z wsparciem czterech typów pytań: prosodycznych akcentów w ogólnych pytaniach przez *gwiazdki*, SSML i automatycznych homografów. Przykłady kodu na pip i torch.hub demonstrują generowanie audio na CPU.

Pytania w silero-tts v5: prozodia i akcenty po rosyjsku
Advertisement 728x90

Silero-TTS v5: cztery typy intonacji pytającej w języku rosyjskim

Nowa wersja Silero-TTS v5 dla języka rosyjskiego generuje mowę z poprawną intonacją pytającą. Model obsługuje cztery rodzaje pytań: specjalne (z czasownikami pytającymi), ogólne (z akcentem prosodycznym), alternatywne i końcówkowe. W przypadku pytań ogólnych środek intonacyjny oznaczony jest gwiazdkami — to wzmacnia wyrazistość bez konieczności dodatkowych parametrów.

Główne możliwości aktualizacji:

  • Automatyczna obsługa homografów i akcentów.
  • Obsługa SSML do kontroli prosodii.
  • Wysoka szybkość inferencji na CPU.
  • Głosy: aidar, baya, kseniya, xenia (eugene w trakcie rozwoju).

Podstawy lingwistyczne intonacji pytającej

W języku rosyjskim pytania są oznaczane gramatycznie (kolejność słów, rzadko), leksykalnie (przyimki pytające, częściówki) oraz prosodycznie (intonacja). Pytania ogólne opierają się wyłącznie na prosodii: środek intonacyjny może padać na dowolne słowo, zmieniając znaczenie.

Przykłady:

Google AdInline article slot
  • On PRZYSZEDŁ? — akcent na czynności.
  • ON przyszedł? — akcent na podmiocie.

Do nauki modelu wymagana jest etykietowanie typów pytań i pozycji akcentu. Dane korpusowe bez takiej etykiety są niewystarczające.

Przykłady generowania pytań ogólnych

Kod do syntezowania z różnymi pozycjami akcentu:

import IPython.display as ipd

texts = [
  '*Organizatorzy* wysłali nam bilety elektroniczne?',
  'Organizatorzy *wysłali* nam bilety elektroniczne?',
  'Organizatorzy wysłali *nam* bilety elektroniczne?',
  'Organizatorzy wysłali nam *elektroniczne* bilety?',
  'Organizatorzy wysłali nam elektroniczne *bilety*?'
]

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

Dźwięk pokazuje płynny wzrost tonu na wybranym słowie i spadek na końcu.

Google AdInline article slot

Instalacja i podstawowy uruchomienie

Instalacja przez 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)

Pełna inicjalizacja przez 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 = 'Nazywam się Lewa Korolew. Pochodzę z Gotowa. I już jestem gotów otworzyć wszystkie Twoje zamki, niezależnie od ich skomplikowania!'

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)

Przykład SSML z prosodią:

Google AdInline article slot
ssml_sample = """
              <speak>
              <p>
                  Kiedy się budzę, <prosody rate="x-slow">mówię bardzo powoli</prosody>.
                  Potem zaczynam mówić swoim zwykłym głosem,
                  <prosody pitch="x-high">lub mogę mówić wyższym tonem</prosody>,
                  albo <prosody pitch="x-low">na odwrót, niższym</prosody>.
                  Potem, jeśli mi się uda – <prosody rate="fast">mogę mówić też bardzo szybko.</prosody>
                  A jeszcze potrafię robić pauzy dowolnej długości, np. dwie sekundy <break time="2000ms"/>
                  <p>
                    Również potrafię robić pauzy między akapitami.
                  </p>
                  <p>
                    <s>I także potrafię robić pauzy między zdaniami</s>
                    <s>Oto jak teraz</s>
                  </p>
              </p>
              </speak>
              """

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

Parametry intonacji i zalecenia

  • intensity=3: siła intonacji pytającej (domyślnie, optymalnie).
  • Dla pytań specjalnych, alternatywnych i końcówkowych akcent nie jest wymagany.
  • Pytania ogólne wymagają gwiazdek do precyzyjnego ustawienia położenia akcentu.

Typy pytań i sposób ich przetwarzania:

  • Specjalne: Co? Gdzie? Kiedy? — oznaczenie leksykalne + standardowa prosodia.
  • Ogólne: Czy jesteś w domu? — akcent prosodyczny na dowolnym słowie.
  • Alternatywne: Ryba czy mięso? — intonacja na alternatywach.
  • Końcówkowe: Nie tak? — wzrost tonu na końcówce.

Co jest ważne

  • Model Silero-TTS v5 generuje pytania z akcentem prosodycznym na dowolnych pozycjach bez GPU.
  • Obsługa czterech typów pytań poprzez proste oznaczenie gwiazdkami w przypadku pytań ogólnych.
  • Integracja SSML do precyzyjnej kontrolowania prosodii i pauz.
  • Instalacja przez pip/torch.hub, sample_rate=48000 Hz.
  • Planowane wsparcie dla akcentów w zdaniach opowiadań.

— Editorial Team

Advertisement 728x90

Czytaj dalej