Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Silero TTS: Web-интерфейс, FastAPI Service & Console Utility

Этот репозиторий предоставляет три мощных способа для синтеза русской речи с использованием моделей Silero Models:

  1. Простой Веб-интерфейс: Готовая веб-страница для синтеза речи прямо в браузере. Самый простой способ для быстрого старта.
  2. FastAPI Service: Высокопроизводительный веб-сервис для интеграции синтеза речи в ваши проекты (веб-сайты, боты, бэкенды) по API.
  3. Console Utility: Полностью автономная консольная утилита для синтеза речи из командной строки.

Все инструменты поддерживают обработку очень длинных текстов и SSML-разметки, генерируя аудио в форматах .wav или .ogg.

📋 Содержание


📋 Общие предварительные требования

Перед началом работы убедитесь, что в вашей системе установлены:

  1. Python 3.10+
  2. Git (для клонирования репозитория)

FFmpeg не является строгим требованием, так как консольная утилита может скачать его автоматически. Однако для FastAPI-сервиса его рекомендуется установить вручную.


🚀 Часть 1: Простой Веб-интерфейс (для всех)

Это самый легкий способ воспользоваться синтезом речи. Вы просто запускаете сервер и открываете готовую веб-страницу в браузере.

✨ Ключевые особенности

  • Интуитивно понятно: Не требует знаний программирования или командной строки.
  • Полный функционал: Поддерживает ввод текста, загрузку файлов, SSML-разметку и выбор всех доступных опций.
  • Адаптивный дизайн: Отлично выглядит и работает как на компьютере, так и на телефоне.
  • Мгновенный результат: Позволяет прослушать и скачать сгенерированный аудиофайл прямо на странице.

⚙️ Как использовать

  1. Установите зависимости. Выполните шаги по установке из Части 2 (клонирование репозитория, создание окружения и pip install -r requirements.txt).

  2. Запустите сервер FastAPI:

    uvicorn app.main:app --host 0.0.0.0 --port 8000

    При первом запуске будет скачана модель Silero (~120 МБ).

  3. Откройте веб-страницу: Найдите в папке проекта файл index.html и просто откройте его в любом современном браузере (Chrome, Firefox, Safari).

  4. Синтезируйте речь:

    • Введите или вставьте текст в текстовое поле.
    • Выберите голос и другие настройки.
    • Нажмите кнопку "Озвучить".
    • Готовый результат появится на странице в виде аудиоплеера и ссылки для скачивания.

⚙️ Часть 2: FastAPI Service (для разработчиков)

Этот компонент представляет собой готовый к работе асинхронный веб-сервис на FastAPI для интеграции синтеза речи по API.

✨ Ключевые особенности сервиса

  • REST API: Предоставляет эндпоинты для синтеза из простого текста и SSML.
  • Обработка длинных текстов: Автоматически нарезает и склеивает аудио для текстов и SSML любой длины.
  • Высокая производительность: Построен на FastAPI и Uvicorn, идеально подходит для веб-нагрузок.
  • Потокобезопасность: Запросы к модели выполняются в очереди, что гарантирует стабильность.
  • Интерактивная документация: Swagger UI (/docs) и ReDoc (/redoc) для удобного тестирования API.

🛠️ Установка и запуск сервиса

  1. Клонируйте репозиторий:

    git clone https://your-repository-url/silero-tts-project.git
    cd silero-tts-project
  2. Создайте и активируйте виртуальное окружение:

    python -m venv .venv
    # Windows
    .venv\Scripts\activate
    # macOS / Linux
    source .venv/bin/activate
  3. Установите зависимости:

    pip install -r requirements.txt
  4. Запустите сервер:

    uvicorn app.main:app --host 0.0.0.0 --port 8000 --log-config log_config.yaml

    Сервер будет доступен по адресу http://localhost:8000.

⚙️ Использование API

Откройте в браузере 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

⌨️ Часть 3: Автономная консольная утилита (для пользователей)

В папке 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                # Этот файл

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages