
В прошлый раз у нас получилось покрыть 20 самых популярных языков России и СНГ с рядом оговорок. Но основным недостатком моделей было то, что значительная группа языков была вообще не покрыта, в основном многочисленные языки Кавказа, Дагестана и Чечни. С лингвистической точки зрения из популярных крупных языковых групп в основном были не покрыты многочисленные абхазо-адыгские и нахско-дагестанские языки.
В этот раз мы наконец-то исправляем этот недостаток, опубликовав 2 модели: для в основном тюркских языков (14 языков и 33 голоса) и для кавказских языков (15 языков и 31 голос). К сожалению, из-за ограниченности ресурсов, модели никак не позволяют управлять ударением.
Как обычно, наш синтез обладает следующими характеристиками:
Модель поддерживает SSML;
К модели синтеза применены все оптимизации, как к нашей прошлой публичной модели;
Синтез происходит в высоком качестве, в этот раз мы применили некоторое ноу-хау для повышения качества;
Фишки с вопросами и интонациями пока сюда не доехали.
Оглавление статьи c якорями
Примеры звучания синтеза
Вот примеры звучания для кавказской модели:
И для тюркской модели:
Принципы выбора языков и список языков, алфавит
Языки мы выбирали исходя из двух предпосылок:
Банально исходя из имеющихся данных;
Нужно покрыть крупные языковые группы, которые не покрыты;
Как следствие нужно по максимуму использовать фонетическую похожесть родственных языков.
С обработкой данных как обычно получилось приключение на 20 минут плюс был ряд внешних факторов, которые не давали нам опубликовать эти модели до поры до времени.
Приключение на 20 минут

В этот раз мы решили просто не заморачиваться и в качестве алфавита взяли конкатенацию официальных кириллических алфавитов всех языков, поскольку это сработало в прошлый раз: !,-.:;?абвгдежзийклмнопрстуфхцчшщъыьэюяёєіїјўґғҕҗҙқҝҡңҥҫүұҳҷҹһӑӗәӝӟӣӥӧөӯӱӳӵ—…ӏӂӄӈӌӓӕԓ . Это именно список разрешенных символов. Часть языков содержит биграммы. Но модель научилась их сама произносить без каких-то дополнительных манипуляций с нашей стороны.
Кстати, обратите внимание, что зачастую в текстах на этих языках в интернете используются "неправильные" буквы, то есть, к примеру, латинские замены кириллических знаков на них похожих. Это иногда вызывает долгую отладку буквально на пустом месте. На всяком случае обращаем на это внимание — используйте кириллические символы.
Список языков получился следующий:
Список языков
Модель |
Код |
Язык |
Голосов |
|---|---|---|---|
Тюркская |
chv |
Чувашский |
2 |
Тюркская |
crh |
Крымскотатарский |
3 |
Тюркская |
gag |
Гагаузский |
3 |
Тюркская |
kaa |
Каракалпакский |
2 |
Тюркская |
kir |
Киргизский |
1 |
Тюркская |
kjh |
Хакасский |
1 |
Тюркская |
sah |
Якутский |
3 |
Тюркская |
sty |
Cибирскотатарский |
1 |
Тюркская |
tat |
Татарский |
4 |
Тюркская |
tgk |
Таджикский |
1 |
Тюркская |
tuk |
Туркменский |
3 |
Тюркская |
tyv |
Тувинский |
4 |
Тюркская |
uzb |
Узбекский |
2 |
Тюркская |
xal |
Калмыцкий |
3 |
Кавказская |
abq |
Абазинский |
1 |
Кавказская |
ady |
Адыгейский |
4 |
Кавказская |
agx |
Агульский |
1 |
Кавказская |
ava |
Аварский |
2 |
Кавказская |
che |
Чеченский |
5 |
Кавказская |
darg |
Даргинский |
2 |
Кавказская |
inh |
Ингушский |
2 |
Кавказская |
kbd |
К.-черкесский |
3 |
Кавказская |
krc |
К.-балкарский |
1 |
Кавказская |
kum |
Кумыкский |
3 |
Кавказская |
lbe |
Лакский |
1 |
Кавказская |
lez |
Лезгинский |
1 |
Кавказская |
oss |
Осетинский |
2 |
Кавказская |
tab |
Табасаранский |
2 |
Кавказская |
tkr |
Цахурский |
1 |
Опубликованные модели и список голосов, генерализация
В этот раз мы опубликовали всего две модели:
Общую кавказскую, поддерживающую 15 языков абхазо-адыгской группы и нахско-дагестанской группы (31 голос);
Общую тюркскую, поддерживающую 14 языков из более-менее популярных в основном тюркских языков (33 голоса).
Тут важно отметить, что таджикский принадлежит к иранской группе, а калмыцкий — к монгольской. Но они получились немного "одинокими" (у нас нет достаточно данных, чтобы сделать по модели для каждого семейства языков) в рамках этой работы, и поэтому мы решили добавить их к тюркской модели.
Обе модели "сами" ставят ударение и, к сожалению, не позволяют напрямую управлять ударением. Для тюркских языков это скорее всего не является супер критичным. Для кавказских — вам судить.
Список голосов получился такой:
Список голосов
Код |
Язык |
Голоса |
|---|---|---|
chv |
Чувашский |
|
crh |
Крымскотатарский |
|
gag |
Гагаузский |
|
kaa |
Каракалпакский |
|
kir |
Киргизский |
|
kjh |
Хакасский |
|
sah |
Якутский |
|
sty |
Cибирскотатарский |
|
tat |
Татарский |
|
tgk |
Таджикский |
|
tuk |
Туркменский |
|
tyv |
Тувинский |
|
uzb |
Узбекский |
|
xal |
Калмыцкий |
|
abq |
Абазинский |
|
ady |
Адыгейский |
|
agx |
Агульский |
|
ava |
Аварский |
|
che |
Чеченский |
|
darg |
Даргинский |
|
inh |
Ингушский |
|
kbd |
К.-черкесский |
|
krc |
К.-балкарский |
|
kum |
Кумыкский |
|
lbe |
Лакский |
|
lez |
Лезгинский |
|
oss |
Осетинский |
|
tab |
Табасаранский |
|
tkr |
Цахурский |
|
Как запускать
Мы опубликовали отдельный ноутбучек с примерами (можно запустить демку прямо в браузере). Запуск тут такой же, как у всех наших моделей - можно установить pip-пакет, или можно запускать через torch.hub. Также можно и напрямую скачать репозиторий и самостоятельно дёргать модель, если вы продвинутый пользователь (можно потом и без репозитория, просто через свой скрипт просто дёргать модель).
Минимальный код запуска тюркской модели выглядит так:
!pip install silero from silero import silero_tts model, example_text = silero_tts(language='ru', speaker='v5_turkic') audio = model.apply_tts(text='Болар барысы да шул кадәр серле һәм акыл җитмәслек катлаулы.', speaker='tat_3')
Минимальный код запуска кавказской модели выглядит так:
!pip install silero from silero import silero_tts model, example_text = silero_tts(language='ru', speaker='v5_caucasian') audio = model.apply_tts(text='Зэи тхузэӏумыхын хуэдэу зэӏуаща щэхущ ахэр.', speaker='kbd_1')
Естественно при реальном запуске нужно сначала установить PyTorch, выбрать частоту дискретизации, выбрать устройство (если это CPU — установить оптимальное число потоков, например 4), опционально можно использовать SSML.
Рекомендуется установить нужную вам версию
torch(GPU, CPU) по официальной инструкции до запуска моделей. По умолчанию торч изpipможет тянуть ненужные пакеты (и там недавно как-то поменялся рекомендуемый способ установки самого торча, обратите внимание).
Более сложные примеры на своём родном языке вы можете попробовать позапускать в ноутбучке с примерами. Особенный интерес представляет генерализация между разными языками, у которых сильно похоже звучание.
Возможно сообщество также предложит как получше сделать примеры на все языки, чтобы они имели некую консистентность. Мы не смогли найти качественных параллельных корпусов, которые бы покрывали все используемые нами языки, а в этой ситуации нейросетевым переводчикам веры довольно мало (они всегда придумывают отсебятину).
Цитирование и аффилиации
Цитировать наши модели можно следующим образом:
@misc{Silero Models, author = {Silero Team}, title = {Silero Models: pre-trained text-to-speech models made embarrassingly simple}, year = {2026}, publisher = {GitHub}, journal = {GitHub repository}, howpublished = {\url{https://github.com/snakers4/silero-models}}, commit = {insert_some_commit_here}, email = {hello@silero.ai} }
Ссылки
Теперь silero-tts v5 на русском языке умеет задавать вопросы - https://habr.com/ru/articles/1015942/
Мы опубликовали стабильный, быстрый, качественный и доступный синтез для 20 языков России - https://habr.com/ru/articles/968988/
Наши модели для простановки ударений - https://github.com/snakers4/silero-stress;
Наши модели синтеза - https://github.com/snakers4/silero-models;
Новые модели опубликованные в рамках проекта - https://github.com/snakers4/silero-models?tab=readme-ov-file#v5-cis-base-models;
Примеры запуска моделей для языков России и СНГ;
Обновление проекта
silero-stress.
Вместо вывода
Интересно было бы послушать носителей языков на предмет того как работают из языки и как хорошо работает кросс-языковая генерация. К сожалению из-за рамок проекта (это был вспомогательный проект, который мы делали на общественных началах) у нас не хватило времени и усилий на работу с ударениями и добавление русского языка в обе модели.
Также стоит отметить, что из больших улучшений, которые можно внести в наши модели языков России и СНГ мы по сути рассматриваем два: добавление интонаций (вопросы и эмфазы) и большой апгрейд архитектуры, но с сохранением и даже улучшением количественных и качественных свойств моделей (без апгрейда на серверные видеокарты за миллион-другой). Мы ведём довольно большие исследования на эту тему и они подходят к концу. Другой вопрос уже в том, что обновление всех моделей тоже может занять какое-то время.
Patrick139
"вот же круто... а зачем?" даже в моем райцентре в РБ микрорайоны разговаривают чуть по-разному. о том, что это смесь русского и белорусского можно не упоминать
snakers4 Автор
А причём тут белорусский? Тут только тюркские и кавказские языки. Конечно, там много заимствованных слов (и иногда видно, что слова имеют разную степень локализации), но сами языки настолько другие, что про смесь тут речи не идёт.