Silero-TTS v5: Ahora con cuatro tipos de entonación interrogativa en ruso
La versión v5 de Silero-TTS para ruso ahora genera voz con una entonación interrogativa precisa. El modelo maneja cuatro tipos de preguntas: especiales (con palabras interrogativas), generales (con énfasis prosódico), alternativas y preguntas de cola. En las preguntas generales, el centro entonacional se indica con asteriscos — esto mejora la expresividad sin necesidad de parámetros adicionales.
Características clave de la actualización:
- Manejo automático de homógrafos y acentuación.
- Soporte completo de SSML para control de prosodia.
- Alta velocidad de inferencia en CPU.
- Voces: aidar, baya, kseniya, xenia (eugene en desarrollo).
Fundamentos lingüísticos de la prosodia interrogativa
En ruso, las preguntas se marcan gramaticalmente (orden de palabras, rara vez), léxicamente (palabras interrogativas, partículas) y prosódicamente (entonación). Las preguntas generales dependen únicamente de la prosodia: el centro entonacional puede caer en cualquier palabra, alterando así el significado.
Ejemplos:
- Did he COME? — énfasis en la acción.
- HE came? — énfasis en el sujeto.
Entrenar el modelo requiere etiquetar los tipos de preguntas y las posiciones del acento. Los datos de corpus sin estas anotaciones no son suficientes.
Ejemplos de síntesis de preguntas generales
Código para generar preguntas con diferentes posiciones de acento:
import IPython.display as ipd
texts = [
'*Organizers* sent us electronic tickets?',
'Organizers *sent* us electronic tickets?',
'Organizers sent *us* electronic tickets?',
'Organizers sent us *electronic* tickets?',
'Organizers sent us electronic *tickets*?'
]
for i, text in enumerate(texts):
audio = model.apply_tts(text=text, speaker='xenia')
ipd.display(ipd.Audio(audio, rate=48000))
Las muestras de audio muestran un aumento suave en el tono sobre la palabra enfatizada y una caída al final.
Instalación y uso básico
Instala mediante 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)
Inicialización completa mediante 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)
Ejemplo de SSML con control de prosodia:
ssml_sample = """
<speak>
<p>
When I wake up, <prosody rate="x-slow">I speak quite slowly</prosody>.
Then I start speaking in my normal voice,
<prosody pitch="x-high">and I can speak in a higher tone</prosody>,
or <prosody pitch="x-low">conversely, lower</prosody>.
Then, if I am lucky, <prosody rate="fast">I can speak quite quickly.</prosody>
And I can make pauses of any length, for example, two seconds <break time="2000ms"/>
<p>
Also I can make pauses between paragraphs.
</p>
<p>
<s>And I can also make pauses between sentences.</s>
<s>Here, for example, like now.</s>
</p>
</p>
</speak>
"""
audio = model.apply_tts(ssml_text=ssml_sample,
speaker=speaker,
sample_rate=sample_rate)
Parámetros de entonación y recomendaciones
- intensity=3: intensidad de la entonación interrogativa (por defecto, óptimo).
- Para preguntas especiales, alternativas y de cola, el acento es opcional.
- Las preguntas generales requieren asteriscos para posicionar exactamente el acento.
Tipos de preguntas y su manejo:
- Especiales: What? Where? When? — marcado léxico + prosodia estándar.
- Generales: You home? — acento prosódico en cualquier palabra.
- Alternativas: Fish or meat? — entonación sobre las opciones.
- De cola: No, really? — tono ascendente en la parte final.
Lo que realmente importa
- Silero-TTS v5 genera preguntas con acento prosódico en posiciones arbitrarias sin GPU.
- Soporte para cuatro tipos de preguntas mediante marcado simple con asteriscos en casos generales.
- Integración de SSML para ajustar finamente la prosodia y pausas.
- Instalación mediante pip/torch.hub, sample_rate=48000 Hz.
- Énfasis en oraciones declarativas previsto para futuras actualizaciones.
— Editorial Team
Aún no hay comentarios.