Downloads · 30 days
90
28% of all-time downloads
frappuccino/dialogs-ru-vits2
dialogs-ru-vits2 is a text-to-speech model from frappuccino. Use it when you need text read aloud. It is set up for pytorch. The card lists the license as openrail.
An expressive, multi-speaker, emotion-conditioned Russian text-to-speech model. It is a VITS2 model (multi-band iSTFT decoder) trained on the Dialogs corpus — a studio-quality, expressive, conversational Russian speec…
Downloads · 30 days
90
28% of all-time downloads
All-time downloads
318
Public
Repo size
530 MB
Likes
2
Public
Click a slice to open those files.
.pth530 MB · 100%
From the Hugging Face model README
An expressive, multi-speaker, emotion-conditioned Russian text-to-speech model. It is a VITS2 model (multi-band iSTFT decoder) trained on the Dialogs corpus — a studio-quality, expressive, conversational Russian speech dataset.
This is the exact model described in the paper "Dialogs: a studio-quality expressive conversational Russian speech corpus for dialog assistants" (Ilya Shigabeev & Ilya Latyshev, Langswap), trained as a proof of concept that the corpus supports expressive, dialog-style TTS.
👉 Try it in your browser (free CPU demo): frappuccino/dialogs-ru-tts
ruaccent, or marked manually with +)| speaker_id | voice | gender |
|---|---|---|
| 0 | Masha / Маша | female |
| 1 | Sveta / Света | female |
| 2 | Dima / Дима | male |
| emotion_id | style | emotion_id | style | |
|---|---|---|---|---|
| 0 | neutral | 7 | whisper | |
| 1 | happy | 8 | disgust | |
| 2 | surprise | 9 | angry | |
| 3 | arrogance | 10 | sad | |
| 4 | yawn | 11 | tongue-twister | |
| 5 | fear | 12 | poem | |
| 6 | laughing |
pip install -r requirements.txt
python inference.py
from scipy.io.wavfile import write
from tts import DialogsTTS
tts = DialogsTTS() # downloads weights on first run
sr, audio, used = tts.synthesize(
"В 2024 году цена выросла на 7,5%.", # numbers/dates/etc. are spelled out
speaker_id=0, # 0=Masha, 1=Sveta, 2=Dima
emotion_id=1, # 1=happy
normalize=True, # rutextnorm: numbers, dates, abbreviations
auto_stress=True, # ruaccent: place '+' stress automatically
)
write("out.wav", sr, audio)
DialogsTTS.synthesize runs a two-stage front-end before tokenization:
normalize=True, default) — rutextnorm
spells out numbers, dates, money, units, fractions and abbreviations
(7,5% → «семь целых и пять десятых процента», №5 → «номер пять»). It is vendored at
text/rutextnorm.py (single file, MIT, zero dependencies).auto_stress=True, default) — ruaccent
places a + before each stressed vowel. The model was trained with these marks; you can also
write them yourself (e.g. з+амок vs зам+ок).The result is lowercased and mapped through the 73-symbol vocabulary (characters outside it are dropped).
+ = stress).averaged_G_615000.pth (weight-averaged generator).Per-speaker data is modest and unbalanced (Masha 9.9 h, Dima 6.2 h, Sveta 4.4 h), so this single-corpus model is a proof of concept rather than a production system. The strongest styles are neutral, happy and sad; rarer styles (whisper, poem, tongue-twister, yawn) are subtler. For production use the authors recommend mixing Dialogs with a larger Russian corpus.
text/rutextnorm.py, MIT)@inproceedings{shigabeev2025dialogs,
title = {Dialogs: a studio-quality expressive conversational Russian speech corpus for dialog assistants},
author = {Shigabeev, Ilya and Latyshev, Ilya},
year = {2025},
note = {Langswap}
}
OpenRAIL — free use including commercial applications, subject to the use-based restrictions of the license.