Это веб-сервис на основе flask и синтезатора речи RHVoice. Благодаря REST API его легко интегрировать в качестве TTS-провайдера.
docker run -d \
--name=rhvoice-rest \
-p 8080:8080 \
--restart unless-stopped \
aculeasis/rhvoice-rest:latest
Поддерживаемые архитектуры:
| Architecture | Available | Tag |
|---|---|---|
| x86-64 | ✅ | amd64 |
| arm64 | ✅ | arm64v8 |
| armhf | ✅ | arm32v7 |
Для автоматического обновления можно использовать Watchtower.
http://SERVER/say?
text=<текст>
& voice=<
aleksandr|anna|arina|artemiy|elena|irina|pavel| # Russian
alan|bdl|clb|slt| # English
spomenka| # Esperanto
natia| # Georgian
azamat|nazgul| # Kyrgyz
talgat| # Tatar
anatol|natalia| # Ukrainian
kiko| # Macedonian
letícia-f123 # Portuguese
>
& 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.
Для интеграции в Rhasspy через Remote замените /say на /rhasspy. Аргументы text и format игнорируются (формат всегда wav, а текст передается в теле POST).
"text_to_speech": {
"system": "remote",
"remote": {
"url": "http://localhost:8080/rhasspy?voice=anna"
}
}
Для начала нужно установить зависимости:
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
git clone https://github.com/Aculeasis/rhvoice-rest
cd rhvoice-rest
chmod +x install.sh
sudo ./install.sh
Статус сервиса sudo systemctl status rhvoice-rest.service
Нужно задать пути через переменные окружения. Если вы используете 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):
RHVoice.dll в Windows и libRHVoice.so в Linux./usr/local/share/RHVoice.> 1 генераторы будут запущены в качестве отдельных процессов что существенно увеличит потребление памяти. Рекомендуемое максимальное значение 1.5 * core count. По умолчанию 1.lame или lame.exe, если файл не найден поддержка mp3 будет отключена. По умолчанию lame.opusenc или opusenc.exe, если файл не найден поддержка opus будет отключена. По умолчанию opusenc.flac или flac.exe, если файл не найден поддержка flac будет отключена. По умолчанию flac.no, disable или false кэширует результат запроса на время его генерации. Включается автоматически вместе с RHVOICE_FCACHE.no, disable или false будет включен файловый кэш. Чтение из кэша почти не увеличивает скорость реакции, но значительно уменьшает время загрузки всех данных. Может некорректно работать в Windows. По умолчанию кэш отключен.noatime (а почти всегда это так) то atime будет обновляться принудительно. Может некорректно работать в Windows. По умолчанию 0 (файлы кэша живут вечно).no, disable или false включает Chunked transfer encoding. По умолчанию отключен.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
Content type
Image
Digest
sha256:62570f286…
Size
275.5 MB
Last updated
over 2 years ago
docker pull aculeasis/rhvoice-rest