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:
- 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.
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ą:
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
Brak komentarzy.