Многообразие языков нашей страны
Многообразие языков нашей страны

В прошлый раз у нас получилось покрыть 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

Чувашский

chv_0,chv_1

crh

Крымскотатарский

crh_0,crh_1,crh_2

gag

Гагаузский

gag_0, gag_1 , gag_2

kaa

Каракалпакский

kaa_0, kaa_1

kir

Киргизский

kir_0

kjh

Хакасский

kjh_0

sah

Якутский

sah_0, sah_1, sah_2

sty

Cибирскотатарский

sty_0

tat

Татарский

tat_0

tgk

Таджикский

tgk_0

tuk

Туркменский

tuk_0, tuk_1, tuk_2

tyv

Тувинский

tyv_0

uzb

Узбекский

uzb_0

xal

Калмыцкий

xal_0, xal_1, xal_2

abq

Абазинский

abq_0, abq_1, abq_2

ady

Адыгейский

ady_0, ady_1, ady_2, ady_3

agx

Агульский

agx_0

ava

Аварский

ava_0

che

Чеченский

che_0, che_1, che_2, che_3, che_4

darg

Даргинский

darg_0, darg_1

inh

Ингушский

inh_0, inh_1

kbd

К.-черкесский

kbd_0, kbd_1, kbd_2

krc

К.-балкарский

krc_0, krc_1, krc_2

kum

Кумыкский

kum_0, kum_1, kum_2

lbe

Лакский

lbe_0

lez

Лезгинский

lez_0

oss

Осетинский

oss_0

tab

Табасаранский

tab_0, tab_1

tkr

Цахурский

tkr_0

Как запускать

Мы опубликовали отдельный ноутбучек с примерами (можно запустить демку прямо в браузере). Запуск тут такой же, как у всех наших моделей - можно установить 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}
}

Ссылки

Вместо вывода

Интересно было бы послушать носителей языков на предмет того как работают из языки и как хорошо работает кросс-языковая генерация. К сожалению из-за рамок проекта (это был вспомогательный проект, который мы делали на общественных началах) у нас не хватило времени и усилий на работу с ударениями и добавление русского языка в обе модели.

Также стоит отметить, что из больших улучшений, которые можно внести в наши модели языков России и СНГ мы по сути рассматриваем два: добавление интонаций (вопросы и эмфазы) и большой апгрейд архитектуры, но с сохранением и даже улучшением количественных и качественных свойств моделей (без апгрейда на серверные видеокарты за миллион-другой). Мы ведём довольно большие исследования на эту тему и они подходят к концу. Другой вопрос уже в том, что обновление всех моделей тоже может занять какое-то время.

Комментарии (2)


  1. Patrick139
    03.08.2026 02:47

    "вот же круто... а зачем?" даже в моем райцентре в РБ микрорайоны разговаривают чуть по-разному. о том, что это смесь русского и белорусского можно не упоминать


    1. snakers4 Автор
      03.08.2026 02:47

      А причём тут белорусский? Тут только тюркские и кавказские языки. Конечно, там много заимствованных слов (и иногда видно, что слова имеют разную степень локализации), но сами языки настолько другие, что про смесь тут речи не идёт.