Aculeasis / rhvoice-rest

TTS RHVoice REST API
MIT License
25 stars 13 forks source link
docker rest-api rhvoice russian-specific text-to-speech tts tts-api

rhvoice-rest

Tests

Это веб-сервис на основе flask и синтезатора речи RHVoice. Благодаря REST API его легко интегрировать в качестве TTS-провайдера.

Docker

docker run -d \
  --name=rhvoice-rest \
  -p 8080:8080 \
  --restart unless-stopped \
  ghcr.io/aculeasis/rhvoice-rest:latest
Поддерживаемые архитектуры: Architecture Available Tag
x86-64 amd64
arm64 arm64v8
armhf arm32v7

Для автоматического обновления можно использовать Watchtower.

API

http://SERVER/say?
text=<текст>
& voice=<
         alan|bdl|clb|evgeniy-eng|lyubov|slt| # American English
         aleksandr|aleksandr-hq|anna|arina|artemiy|elena|evgeniy-rus|irina|mikhail| # Russian
         pavel|tatiana|timofey|umka|victoria|vitaliy|vitaliy-ng|vsevolod|yuriy| # Russian
         alicja|cezary|magda|michal|natan| # Polish
         anatol|marianna|natalia|volodymyr| # Ukrainian
         azamat|nazgul| # Kyrgyz
         hana| # Albanian
         kiko|suze| # Macedonian
         letícia-f123| # Brazilian Portuguese
         natia| # Georgian
         ondro| # Slovak
         sevinch| # Uzbek
         spomenka| # Esperanto
         talgat| # Tatar
         zdenek # Czech
         >
& format=<wav|mp3|opus|flac>
& rate=0..100
& pitch=0..100
& volume=0..100

SERVER - Адрес и порт rhvoice-rest. При дефолтной установке на локалхост будет localhost:8080. Конечно, вы можете установить сервер rhvoice-rest на одной машине а клиент на другой. Особенно актуально для слабых одноплатников.

text - URL-encoded строка. Обязательный параметр.

voice - Голос из RHVoice (актуальный список - http://SERVER/voices). anna используется по умолчанию и в качестве альтернативного спикера.

format - Формат возвращаемого файла. По умолчанию mp3.

rate - Темп речи. По умолчанию 50.

pitch - Высота голоса. По умолчанию 50.

volume - Громкость голоса. По умолчанию 50.

http://SERVER/info - выводит различную информацию о сервере в JSON.

Интеграция

Нативный запуск

Для начала нужно установить зависимости:

pip3 install flask pymorphy2 rhvoice-wrapper

Собрать и установить RHVoice или установить rhvoice-wrapper-bin предоставляющий библиотеки и данные RHVoice. Второй вариант рекомендуется для Windows т.к. не требует сборки.

И еще рядом с app.py положить rhvoice_tools - переименовав preprocessing из RHVoice-dictionary/tools.

Для поддержки mp3, opus и flac нужно установить lame, opus-tools и flac

Устновка скриптом на debian-based дистрибутивах в качестве сервиса

git clone https://github.com/Aculeasis/rhvoice-rest
cd rhvoice-rest
chmod +x install.sh
sudo ./install.sh

Статус сервиса sudo systemctl status rhvoice-rest.service

Особенности запуска в Windows

Нужно задать пути через переменные окружения. Если вы используете rhvoice-wrapper-bin то первые 2 задавать не нужно:

RHVOICELIBPATH до RHVoice.dll той же архитектуры что и питон и RHVOICEDATAPATH до папки с languages и voices. По умолчанию они ставятся в C:\Program Files (x86)\RHVoice\data

Не обязательно: LAMEPATH, OPUSENCPATH и FLACPATH для поддержки соответствующих форматов.

Протестировано на Windows 10 и Python 3.6.

Настройки

Все настройки задаются через переменные окружения, до запуска скрипта или при создании докер-контейнера (через -e):

Проверка

http://localhost:8080/say?text=Привет

http://localhost:8080/say?text=Привет%20еще%20раз&format=opus

http://localhost:8080/say?text=Kaj%20mi%20ankaŭ%20parolas%20Esperanton&voice=spomenka&format=opus