Abstract

Эксперимент с Silero TTS от snakers4 — лёгкая модель на CPU, 6 русских голосов. Собрали Docker контейнер, подключили к через remote TTS engine. Работало, но вернулись на Piper — разница в качестве не оправдала +530MB RAM и 3.2GB образ.


Зачем

Piper TTS работает нормально, но голос чуть роботизированный. Silero обещал лучшее качество на CPU без GPU. Модель лёгкая — должна не нагружать сервер.

Что сделали

  1. Установили silero + torch (CPU-only) в venv
  2. Протестировали 5 голосов: ruslan_v2, kseniya_v2, aidar_v2, baya_v2, irina_v2
  3. Написали HTTP сервер (silero-tts-server.py) — совместим с Маргинал remote TTS engine
  4. Собрали Docker образ с предскачанными моделями
  5. Подключили к Маргинал через docker-compose.silero.yml
  6. Переключили defaultEngine: "remote" → Silero

Бенчмарк

МетрикаPiperSilero
Синтез~0.2s0.4-0.9s
RTF~0.05x0.15-0.19x
RAM~30MB560MB
Docker образ~100MB3.21GB
CPU (простой)0%0%
Зависимостиonnxruntimetorch + silero

RTF 0.15x — это в 6 раз быстрее реального времени. На 12-поточном i5-12400F синтез занимает 0.4-0.5s на фразу. Нагрузки на сервер нет вообще.

Голоса

Silero v2 предлагает 6 русских голосов:

ГолосПолТембр
ruslan_v2МНизкий, спокойный
aidar_v2МСредний, нейтральный
kseniya_v2ЖВысокий, ясный
baya_v2ЖСредний, мягкий
irina_v2ЖНизкий, плавный
natasha_v2ЖВысокий, энергичный

Архитектура

Маргинал Controller → POST http://silero-tts:9880/speak
  { text, voice } → WAV bytes в ответ

Docker compose overlay (docker-compose.silero.yml) добавляет Silero как sidecar в mrgnl-radio сеть. Контроллер видит его по имени silero-tts:9880.

Модели предскачаны в образ (v2_ruslan.pt, v2_kseniya.pt, …) — torch.hub лезет в интернет, а в Docker контейнере сети нет. Поэтому .pt файлы лежат в /opt/silero-models/src/silero/model/.

Почему вернулись на Piper

  • Разница в качестве минимальная — оба звучат как TTS
  • +530MB RAM постоянно (torch в памяти)
  • Образ 3.2GB vs 100MB — torch CPU тяжёлый
  • Swap на сервере и так 9.7GB — лишний torch не помогает
  • Piper уже работает 10/10 — говорит нормально

Вывод

Silero — хорошая модель, но для нашего use case (раз в 3-5 минут сказать фразу) Piper достаточно хорош. 530MB RAM и 3.2GB образ не оправданы. Если бы ИИбан говорил чаще — может быть. Но сейчас — нет.

Файлы

  • docker/silero-tts/Dockerfile — образ с torch CPU + моделями
  • docker/silero-tts/silero-tts-server.py — HTTP сервер
  • app/docker-compose.silero.yml — Docker compose overlay
  • Скрипты и модели закешированы в /tmp/silero-models/

Связанные статьи

Связанные


← mrgnl