pimenov.ai

База знаний

Silero Models — open-source модели речи на русском (TTS, STT, VAD)

Open-source библиотека готовых моделей речи от Silero Team: синтез (TTS), распознавание (STT) и детекция голоса (VAD). Особенно сильна на русском: 5 живых голосов, автоматические ударения, омографы, SSML и три частоты дискретизации. Подключается одной строкой через pip или torch.hub.

Опубликовано Обновлено
🎯
Silero Models — набор готовых моделей синтеза речи (TTS), доступных через Python и PyTorch Hub. Русская модель v5_5_ru работает локально на CPU или GPU, поддерживает пять голосов, автоматическую расстановку ударений, омографы, вопросительную интонацию и разметку управления речью (SSML).

Что входит в Silero Models

Silero Models — официальный репозиторий готовых моделей речи. Основные варианты подключения:

  • пакет silero из PyPI;
  • загрузка через torch.hub.load();
  • локальный файл модели для автономного запуска.

Модели загружаются по запросу. После первой загрузки можно использовать локальный кеш или сохранённый файл модели, чтобы не загружать артефакт заново.

⚠️
Проверяйте лицензию конкретной модели до внедрения. В репозитории указана лицензия CC BY-NC 4.0; её условия ограничивают коммерческое использование. Модели v5_cis_base и v5_cis_base_nostress опубликованы под MIT.

Данные и примеры ниже сверены с официальными источниками 9 сентября 2026 года.


Основные русские TTS-модели

В официальном каталоге TTS указана модель v5_5_ru. README проекта приводит следующую таблицу русских V5-моделей; полный список идентификаторов и адресов артефактов находится в models.yml.

Релиз v5.6 в GitHub относится к отдельной сборке SAPI5 для Windows. Для Python и PyTorch Hub идентификатор русской модели — v5_5_ru. Не переносите ограничения одной сборки на другую: в описании SAPI5-релиза вопросы пока не поддерживаются, а в таблице TTS-моделей для v5_5_ru поддержка вопросов указана.

МодельГолосаУдарения / омографы / вопросы
v5_5_ruaidar, baya, kseniya, xenia, eugene✅ / ✅ / ✅
v5_4_ruaidar, baya, kseniya, xenia✅ / ✅ / ✅
v5_3_ruaidar, baya, kseniya, xenia, eugene✅ / ✅ / ❌
v5_2_ruaidar, baya, kseniya, xenia, eugene✅ / ✅ / ❌
v5_ruaidar, baya, kseniya, xenia, eugene✅ / ✅ / ❌

Каждая модель из таблицы поддерживает частоты дискретизации 8000, 24000 и 48000 Гц. Для обычной озвучки можно начать с 48000 Гц, затем проверить размер файла и требования целевой платформы.

Русские модели семейства V5 поддерживают:

  • автоматическую расстановку ударений;
  • выбор произношения омографов;
  • SSML для пауз, скорости и высоты тона;
  • вопросительную интонацию в v5_4_ru и v5_5_ru.

Поддерживаемый русский алфавит: абвгдеёжзийклмнопрстуфхцчшщъыьэюя.

Вариант с лицензией MIT

Для коммерческих проектов рассмотрите v5_cis_base и v5_cis_base_nostress. Русские голоса в этих моделях используют префикс ru_. У них нет автоматического разрешения омографов, а правила ручной постановки ударений различаются:

  • v5_cis_base ожидает ударение в каждом слове для всех языков;
  • v5_cis_base_nostress ожидает ручные ударения только для славянских языков, включая русский.

Обе модели поддерживают частоты 8000, 24000 и 48000 Гц.


Установка и подключение

Для примеров через Python и PyTorch Hub нужна среда с PyTorch. Для V5 CIS на x86-64 официальный README отдельно указывает современный процессор с AVX2 как минимальное требование.

Через пакет silero

python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install silero torch

Минимальный пример:

from silero import silero_tts

model, example_text = silero_tts(
    language='ru',
    speaker='v5_5_ru',
)

audio = model.apply_tts(
    text=example_text,
    speaker='xenia',
    sample_rate=48000,
)

print(type(audio), len(audio))

Наблюдаемый признак успеха: модель загрузилась без исключения, а программа вывела тип и ненулевую длину аудиомассива.

Через PyTorch Hub

import torch

model, example_text = torch.hub.load(
    repo_or_dir='snakers4/silero-models',
    model='silero_tts',
    language='ru',
    speaker='v5_5_ru',
)

model.to(torch.device('cpu'))

path = model.save_wav(
    text=example_text,
    speaker='xenia',
    sample_rate=48000,
)

print(path)

При первом вызове PyTorch Hub скачает необходимые файлы. Последующие запуски могут использовать локальный кеш.

Локальный файл модели

Актуальный адрес артефакта указан в официальном models.yml:

curl -L -o v5_5_ru.pt https://models.silero.ai/models/tts/ru/v5_5_ru.pt

Пример автономной загрузки после скачивания:

import torch

model = torch.package.PackageImporter('v5_5_ru.pt').load_pickle(
    'tts_models',
    'model',
)
model.to(torch.device('cpu'))

path = model.save_wav(
    text='Проверяем локальный синтез речи.',
    speaker='baya',
    sample_rate=48000,
)

print(path)

Сначала выполните загрузку артефакта в среде с доступом к интернету. Затем перенесите файл вместе с проверенным Python-окружением в автономную среду.


Управление речью через SSML

Для SSML-разметки официальный пример использует отдельный параметр ssml_text.

ssml_text = '''
<speak>
  Сегодня <prosody rate="slow">важная новость</prosody>.
  <break time="500ms"/>
  Продолжаем обычным темпом.
</speak>
'''

audio = model.apply_tts(
    ssml_text=ssml_text,
    speaker='kseniya',
    sample_rate=48000,
)

print(type(audio), len(audio))

Поддерживаемые элементы:

  • <speak> — корневой тег;
  • <break time="500ms"/> — пауза заданной длительности;
  • <break strength="strong"/> — пауза заданной силы; допустимы x-weak, weak, medium, strong, x-strong;
  • <prosody rate="slow">…</prosody> — изменение скорости;
  • <prosody pitch="high">…</prosody> — изменение высоты тона;
  • <p> — параграф с паузой уровня x-strong;
  • <s> — предложение с паузой уровня strong.

Для rate предусмотрены значения x-slow, slow, medium, fast, x-fast; для pitchx-low, low, medium, high, x-high.


Ручная постановка ударений

Если модель неверно произносит слово, поставьте знак + перед ударной гласной:

text = 'Стальной з+амок и навесной зам+ок — разные вещи.'

path = model.save_wav(
    text=text,
    speaker='xenia',
    sample_rate=48000,
)

Этот же синтаксис используется в CIS-моделях; для них ручные ударения могут быть обязательной частью входного текста согласно правилам выбранной модели.


Полезные сценарии

Озвучка заметок и сценариев

Задача: превратить один или несколько текстовых файлов в набор WAV-фрагментов или одну дорожку.

Исходные данные: тексты уже сохранены в файлах.

Действие: разделите длинный текст на предложения или абзацы, синтезируйте каждый фрагмент отдельно и объедините WAV-файлы.

Ограничение: проверьте границы фрагментов на слух, потому что автоматическая склейка может дать неестественные паузы.

Наблюдаемый результат: каждый фрагмент сохраняется как WAV, а после объединения получается единая дорожка.

Локальный сервис синтеза

Задача: принимать текст из внутреннего интерфейса, бота или HTTP-обработчика без повторной загрузки модели на каждый запрос.

Исходные данные: установленное Python-окружение, локальная модель и входной текст.

Действие: загрузите модель один раз при старте приложения и передавайте ей текст из обработчика.

Ограничение: подберите ограничение длины текста и размер очереди под своё оборудование; универсальный лимит для любой конфигурации в приведённых источниках не указан.

Наблюдаемый результат: обработчик возвращает WAV-файл или путь к нему после вызова save_wav.

Голосовой конвейер

Задача: собрать последовательность обработки «звук → текст → ответ → звук».

Исходные данные: аудиопоток и отдельные компоненты для определения речи, распознавания, прикладной логики и синтеза.

Действие: используйте схему VAD (определение участков речи) → STT (распознавание речи) → прикладная логика → TTS (синтез речи), проверяя каждый компонент отдельно.

Ограничение: не переносите сведения о поддерживаемых языках одного компонента на другой.

Проверяемый результат: каждый этап выдаёт ожидаемый промежуточный результат, а итоговый TTS-этап возвращает аудио.

⚠️
Не считайте русский STT подтверждённой частью этой страницы. В полученном снимке официального models.yml раздел STT содержит модели для en, de, es и ua; раздела ru в снимке нет. Параметры VAD и STT проверяйте по документации конкретного компонента и его API перед сборкой конвейера.

Работа с Silero через Codex

Codex CLI может исследовать локальный проект, создавать и изменять файлы, запускать установленные инструменты и проверять результат в пределах выданных разрешений. Для воспроизводимой задачи укажите модель, голос, частоту дискретизации, формат результата и способ проверки.

Пример задания:

💬
Создай Python-проект для локального Silero TTS. Используй модель v5_5_ru, голос xenia и частоту 48000 Гц. Скрипт должен принимать --text и --out, сохранять WAV, выводить итоговый путь и завершаться с ошибкой, если файл не создан или пуст. Перед установкой покажи план и используй отдельное виртуальное окружение.

После выполнения проверьте:

  1. какая версия Python и PyTorch установлена;
  2. где сохранён файл модели или кеш;
  3. существует ли итоговый WAV и имеет ли он ненулевой размер;
  4. воспроизводится ли файл и подходит ли произношение;
  5. разрешает ли лицензия выбранной модели ваш сценарий.

Материал основан на официальной документации и снимках репозитория; приведённые команды в рамках этого редакторского прохода не запускались.


Официальные ссылки

Следующий шаг

FluidVoice — бесплатный open-source голосовой ввод для Mac

Связанные материалы

Если вы собираете локальный голосовой интерфейс или конвейер обработки речи, полезно заранее определить требования к задержке, лицензии и среде исполнения.

Если захотите обсудить, как это применить у себя или в команде — пишите в Telegram @pimenov