Silero TTS v5 — Russian Speech Synthesis
Silero TTS v5 (v5_cis_base) — Russian speech synthesis with 29 voices.
RTF ~0.04 on CPU (24× faster than real time).
Features:
- 🎯 Neural network stress prediction (
silero_stress) — correct word emphasis - 🎭 29 Russian voices (aidar, baya, kseniya, natasha, ruslan, irina, and more)
- ⚡ RTF 0.04 on CPU (24× faster than real time)
- 🖥️ CLI + Python API + Tkinter GUI
- 🔤 v3/v4 alias compatibility
Quick Start
pip install -r requirements.txt
# CLI (stress marks enabled by default)
python3 tts.py "Привет, мир!"
python3 tts.py "Молоко и корова" -s ru_eduard -o speech.wav
python3 tts.py "Текст" --no-accentor # disable stress prediction
python3 tts.py --speakers
python3 tts.py --benchmark
# GUI
python3 tts_gui.py
Stress Accentor
Silero TTS v5 supports + stress marks (e.g. молок+о, кор+ова).
The silero_stress neural network automatically
predicts correct stress positions for every word before synthesis.
from tts import SileroTTS
tts = SileroTTS(use_accentor=True) # default
# Input: "Молоко, корова, собака, телефон"
# Stressed: "Молок+о, кор+ова, соб+ака, телеф+он"
audio = tts.speak("Молоко, корова, собака, телефон")
Disable with --no-accentor flag or SileroTTS(use_accentor=False).
Available Voices
| Voice | Alias (v3/v4) | Description |
|---|---|---|
ru_eduard |
aidar |
Male, deep |
ru_aigul |
baya |
Female, soft |
ru_ekaterina |
kseniya |
Female, clear |
ru_albina |
natasha |
Female, warm |
ru_alexandr |
ruslan |
Male, baritone |
ru_ramilia |
irina |
Female, melodic |
ru_kejilgan |
xenia |
Female, calm |
Plus 22 more ru_* voices (29 total): bogdan, dmitriy, vika, igor, karina, marat, zara, zhadyra, zhazira, zinaida, and others.
Performance
| Metric | Value |
|---|---|
| Model | v5_cis_base (87 MB) |
| Voices | 29 Russian |
| Sample Rate | 48 kHz |
| RTF (CPU) | 0.04 (24× real time) |
| RTF (CUDA) | 0.08 (12.7× real time) |
| Format | WAV, float32 |
Python API
from tts import SileroTTS
tts = SileroTTS(use_accentor=True)
# Synthesize text -> numpy array (48kHz float32)
audio = tts.speak("Привет мир", speaker='ru_eduard')
# Save to WAV
tts.save("Привет мир", "output.wav", speaker='ru_aigul')
# Speak and play
tts.play("Привет мир", speaker='ru_eduard')
# List speakers
print(tts.speakers)
# Toggle stress
tts.set_accentor(False)
Files
| File | Description |
|---|---|
tts.py |
CLI tool + Python API |
tts_gui.py |
Tkinter GUI app |
requirements.txt |
Python dependencies |
Requirements
- Python 3.10+
torch(PyTorch)silerosilero-stress(for stress prediction)soundfilesounddevice(for GUI and playback)numpy
CLI Usage
# Basic synthesis (with stress marks)
python3 tts.py "Привет, мир!"
# Specify voice and output
python3 tts.py "Текст" --speaker ru_aigul -o speech.wav
# Use v3/v4 alias
python3 tts.py "Текст" -s aidar # -> ru_eduard
python3 tts.py "Текст" -s baya # -> ru_aigul
# Disable stress prediction
python3 tts.py "Текст" --no-accentor
# List all voices
python3 tts.py --speakers
# Benchmark
python3 tts.py --benchmark
# List aliases
python3 tts.py --list-aliases
License
MIT. The underlying Silero v5 model is from snakers4/silero-models.
Citation
@software{silero_tts_v5,
title = {Silero TTS v5: Russian Speech Synthesis},
author = {Silero Team},
year = {2024},
url = {https://github.com/snakers4/silero-models}
}