Это веб-сервис на основе 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
- Примеры