Этот репозиторий предоставляет три мощных способа для синтеза русской речи с использованием моделей Silero Models:
- Простой Веб-интерфейс: Готовая веб-страница для синтеза речи прямо в браузере. Самый простой способ для быстрого старта.
- FastAPI Service: Высокопроизводительный веб-сервис для интеграции синтеза речи в ваши проекты (веб-сайты, боты, бэкенды) по API.
- Console Utility: Полностью автономная консольная утилита для синтеза речи из командной строки.
Все инструменты поддерживают обработку очень длинных текстов и SSML-разметки, генерируя аудио в форматах .wav или .ogg.
- Общие предварительные требования
- Часть 1: Простой Веб-интерфейс (для всех)
- Часть 2: FastAPI Service (для разработчиков)
- Часть 3: Автономная консольная утилита (для пользователей)
- Общая информация
Перед началом работы убедитесь, что в вашей системе установлены:
- Python 3.10+
- Git (для клонирования репозитория)
FFmpeg не является строгим требованием, так как консольная утилита может скачать его автоматически. Однако для FastAPI-сервиса его рекомендуется установить вручную.
Это самый легкий способ воспользоваться синтезом речи. Вы просто запускаете сервер и открываете готовую веб-страницу в браузере.
- Интуитивно понятно: Не требует знаний программирования или командной строки.
- Полный функционал: Поддерживает ввод текста, загрузку файлов, SSML-разметку и выбор всех доступных опций.
- Адаптивный дизайн: Отлично выглядит и работает как на компьютере, так и на телефоне.
- Мгновенный результат: Позволяет прослушать и скачать сгенерированный аудиофайл прямо на странице.
-
Установите зависимости. Выполните шаги по установке из Части 2 (клонирование репозитория, создание окружения и
pip install -r requirements.txt). -
Запустите сервер FastAPI:
uvicorn app.main:app --host 0.0.0.0 --port 8000
При первом запуске будет скачана модель Silero (~120 МБ).
-
Откройте веб-страницу: Найдите в папке проекта файл
index.htmlи просто откройте его в любом современном браузере (Chrome, Firefox, Safari). -
Синтезируйте речь:
- Введите или вставьте текст в текстовое поле.
- Выберите голос и другие настройки.
- Нажмите кнопку "Озвучить".
- Готовый результат появится на странице в виде аудиоплеера и ссылки для скачивания.
Этот компонент представляет собой готовый к работе асинхронный веб-сервис на FastAPI для интеграции синтеза речи по API.
- REST API: Предоставляет эндпоинты для синтеза из простого текста и SSML.
- Обработка длинных текстов: Автоматически нарезает и склеивает аудио для текстов и SSML любой длины.
- Высокая производительность: Построен на FastAPI и Uvicorn, идеально подходит для веб-нагрузок.
- Потокобезопасность: Запросы к модели выполняются в очереди, что гарантирует стабильность.
- Интерактивная документация: Swagger UI (
/docs) и ReDoc (/redoc) для удобного тестирования API.
-
Клонируйте репозиторий:
git clone https://your-repository-url/silero-tts-project.git cd silero-tts-project -
Создайте и активируйте виртуальное окружение:
python -m venv .venv # Windows .venv\Scripts\activate # macOS / Linux source .venv/bin/activate
-
Установите зависимости:
pip install -r requirements.txt
-
Запустите сервер:
uvicorn app.main:app --host 0.0.0.0 --port 8000 --log-config log_config.yaml
Сервер будет доступен по адресу
http://localhost:8000.
Откройте в браузере http://localhost:8000/docs для интерактивного взаимодействия.
- Эндпоинт
/tts/text: ПринимаетPOST-запрос с JSON-телом{"text": "...", "speaker": "xenia"}. - Эндпоинт
/tts/ssml: ПринимаетPOST-запрос с JSON-телом{"ssml_text": "<speak>...</speak>", "speaker": "xenia"}.
Пример с curl:
curl -X POST "http://localhost:8000/tts/text" \
-H "Content-Type: application/json" \
-d '{"text": "Проверка связи через API."}' \
--output speech.oggВ папке app/ находится скрипт silero_cli.py — мощная утилита командной строки, которая работает полностью автономно и не требует запущенного сервера.
- Полная автономность: Не нужен веб-сервер, работает напрямую.
- Автоматическая загрузка FFmpeg: Если
ffmpegне найден, утилита предложит скачать его. - "Умная" нарезка SSML и текста: Корректно обрабатывает очень длинные тексты и SSML-файлы.
- Плавная склейка: Добавляет микро-паузы между синтезированными фрагментами, чтобы избежать щелчков.
- Гибкое управление: Все параметры задаются через аргументы командной строки.
Важно: Установка зависимостей (pip install -r requirements.txt) является общей для всех частей проекта.
Синтез из командной строки:
python app/silero_cli.py --text "Привет, мир! Это простой тест." --save output.wavСинтез из SSML-файла:
python app/silero_cli.py --ssml speech.ssml --save result.ogg --speaker eugene- Синтез речи: Silero Models (PyTorch)
- Веб-фреймворк (API): FastAPI & Uvicorn
- Обработка текста/SSML: Razdel,
xml.etree.ElementTree - Обработка аудио: NumPy, SciPy
- Аудио-конвертация: FFmpeg
silero-tts-project/
├── app/
│ ├── __init__.py
│ ├── main.py # FastAPI-сервер: эндпоинты, логика API
│ ├── tts_model.py # Модуль-обертка для работы с моделью Silero
│ ├── text_processor.py # Нарезка длинных текстов и SSML
│ └── silero_cli.py # Автономная консольная утилита
│
├── .venv/ # Виртуальное окружение
├── index.html # Веб-интерфейс для пользователя
├── app.log # Файл логов для FastAPI-сервиса
├── log_config.yaml # Конфигурация логирования для Uvicorn
├── requirements.txt # Общий список зависимостей Python
└── README.md # Этот файл