Это веб-сервис на основе flask и синтезатора речи RHVoice. Благодаря REST API его легко интегрировать в качестве TTS-провайдера.
Запуск\обновление из хаба: ./rhvoice_rest.py --upgrade
Полное описание тут
- aarch64
docker run -d -p 8080:8080 aculeasis/rhvoice-rest:arm64v8 - armv7l
docker run -d -p 8080:8080 aculeasis/rhvoice-rest:arm32v7 - x86_64
docker run -d -p 8080:8080 aculeasis/rhvoice-rest:amd64
git clone https://github.com/Aculeasis/rhvoice-rest
cd rhvoice-rest
# Указать Dockerfile под целевую архитектуру
docker build -t rhvoice-rest -f Dockerfile.arm64v8 .
docker run -d -p 8080:8080 rhvoice-rest
Dockerfile.arm64v8 использует заранее собранный rhvoice-wrapper-bin (зеро часто не хватает памяти на сборку), для полной сборки используйте Dockerfile.arm64v8.src
http://SERVER/say?
text=<текст>
& voice=<
aleksandr|anna|elena|irina| # Russian
alan|bdl|clb|slt| # English
spomenka| # Esperanto
natia| # Georgian
azamat|nazgul| # Kyrgyz
talgat| # Tatar
anatol|natalia # Ukrainian
>
& 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 полный список.
anna используется по умолчанию и в качестве альтернативного спикера.
format - Формат возвращаемого файла. По умолчанию mp3.
rate - Темп речи. По умолчанию 50.
pitch - Высота голоса. По умолчанию 50.
volume - Громкость голоса. По умолчанию 50.
Для начала нужно установить зависимости:
pip3 install flask pymorphy2 rhvoice-wrapper
Собрать и установить RHVoice или установить rhvoice-wrapper-bin предоставляющий библиотеки и данные RHVoice. Второй вариант рекомендуется для Windows т.к. не требует сборки.
И еще рядом с app.py положить tools из RHVoice-dictionary.
Для поддержки 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):
- RHVOICELIBPATH: Путь до библиотеки RHVoice. По умолчанию
RHVoice.dllв Windows иlibRHVoice.soв Linux. - RHVOICEDATAPATH: Путь до данных RHVoice. По умолчанию
/usr/local/share/RHVoice. - THREADED: Количество запущенных процессов синтеза, определяет количество запросов которые могут быть обработаны одновременно. Если
> 1генераторы будут запущены в качестве отдельных процессов что существенно увеличит потребление памяти. Рекомендуемое максимальное значение1.5 * core count. По умолчанию1. - LAMEPATH: Путь до
lameилиlame.exe, если файл не найден поддержкаmp3будет отключена. По умолчаниюlame. - OPUSENCPATH: Путь до
opusencилиopusenc.exe, если файл не найден поддержкаopusбудет отключена. По умолчаниюopusenc. - FLACPATH: Путь до
flacилиflac.exe, если файл не найден поддержкаflacбудет отключена. По умолчаниюflac. - RHVOICE_DYNCACHE: Если задано и не равно
no,disableилиfalseкэширует результат запроса на время его генерации. Включается автоматически вместе с RHVOICE_FCACHE. - RHVOICE_FCACHE: Если задано и не равно
no,disableилиfalseбудет включен файловый кэш. Чтение из кэша почти не увеличивает скорость реакции, но значительно уменьшает время загрузки всех данных. Может некорректно работать в Windows. По умолчанию кэш отключен. - RHVOICE_FCACHE_LIFETIME: Если кэш включен задает время жизни файлов кэша в часах, исчисляется от времени последнего доступа к файлу. Если FS смонтирована с
noatime(а почти всегда это так) тоatimeбудет обновляться принудительно. Может некорректно работать в Windows. По умолчанию0(файлы кэша живут вечно). - CHUNKED_TRANSFER: Если задано и не равно
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
- Home Assistant https://github.com/mgarmash/ha-rhvoice-tts
- Примеры