Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/navatusein/silero-tts-service
Silero TTS backend service. Can be used with Home Assistant and Rhasspy.
https://github.com/navatusein/silero-tts-service
docker docker-compose home-assistant rhasspy silero tts
Last synced: 1 day ago
JSON representation
Silero TTS backend service. Can be used with Home Assistant and Rhasspy.
- Host: GitHub
- URL: https://github.com/navatusein/silero-tts-service
- Owner: Navatusein
- License: mit
- Created: 2022-12-17T01:55:41.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-06-17T10:14:57.000Z (8 months ago)
- Last Synced: 2024-06-17T11:39:17.354Z (8 months ago)
- Topics: docker, docker-compose, home-assistant, rhasspy, silero, tts
- Language: Python
- Homepage:
- Size: 387 KB
- Stars: 27
- Watchers: 5
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
![Supports aarch64 Architecture][aarch64-badge]
![Supports amd64 Architecture][amd64-badge]
![Supports armhf Architecture][armhf-badge]
![Supports armv7 Architecture][armv7-badge]
![Supports i386 Architecture][i386-badge]
[![MIT License][license-shield]][license-url]# Silero TTS Service
## Содержание
- [Информация](#information)
- [Установка сервера](#server-install)
- [Настройки сервера](#server-configure)
- [Настройка в Home Assistant](#ha-configure)
- [Настройка в Rhasspy](#rhasspy-configure)
- [Функциональные возможности](#features)
- [Endpoints](#endpoints)
- [Вывод звука на Bluetooth колонку](#bluetooth-speaker)
## Информация
Данный проект я создал, чтобы обеспечить свой умный дом нормальным синтезом речи. Также, чтобы обеспечить rhasspy нормальным синтезом речи. Уже готовые решения меня не устроили и было решено изобрести свой велосипед. За основу были взяты модели [Silero].Вдохновился я проектом [silero-ha-http-tts] от [Gromina]. Он был сыроват и я решил сделать всё по уму разуму, с настройками и готовыми контейнерами.
### Установка через Docker:
Выполните команду:
```commandline
docker run -p 9898:9898 -m 1g -e NUMBER_OF_THREADS=4 -e LANGUAGE=ru -e SAMPLE_RATE=48000 --name tts_silero -d navatusein/silero-tts-service
```
### Установка через Docker Compose:
Создайте файл `docker-compose.yml` и перенесите в него содержимое:
```yaml
version: '3'services:
silero-tts-service:
image: "navatusein/silero-tts-service"
container_name: "silero-tts-service"
deploy:
resources:
limits:
memory: 1G
ports:
- "9898:9898"
restart: unless-stopped
environment:
NUMBER_OF_THREADS: 4
LANGUAGE: ru
SAMPLE_RATE: 48000
```
Выполните команду:
```commandline
docker-compose up
```
## Настройки сервера
Все настройки сервера передаются как параметры окружения docker контейнеру при запуске.Количество ядер для обработки речи `NUMBER_OF_THREADS`:
```yaml
NUMBER_OF_THREADS: 4
```
Количество потоков от 1 до количества ядер процессора сервера.
По умолчанию: `4`
Язык синтеза речи `LANGUAGE`:
```yaml
LANGUAGE: ru
```
По умолчанию: `ru`Поддерживаемые языки, с доступными для них голосами:
| Язык | Код языка | Поддерживаемые голоса |
|:----------:|:---------:|:---------------------------------------------------|
| Русский | `ru` | `aidar` `baya` `kseniya` `xenia` `eugene` `random` |
| Українська | `uk` | `mykyta` `random` |
Частота дискретизации `SAMPLE_RATE`:
```yaml
SAMPLE_RATE: 48000
```
Возможние значения: `48000`, `24000`, `8000`
По умолчанию: `48000`
Параметры утилиты sox `SOX_PARAM`:
```yaml
SOX_PARAM: "reverb 50 50 10" # Добавляет эхо на речь
```
По умолчанию: ПустойВыходной файл проходит через утилиту sox. Ей можно передать параметры, чтобы наложить эффекты на речь: поднять тембр, добавить эхо, бас буст включить.
Ссылка на документацию утилиты sox: https://linux.die.net/man/1/sox
Исправление обрубания окончания фразы `HA_FIX`:
```yaml
HA_FIX: True
```
Может принимать значения: `True` `False`
По умолчанию: `False`Исправляет ошибку, при которой Home Assistant не договаривает конец фразы. Добавляет секунду молчания в конец речи.
## Настройка в Home Assistant
В файле `configuration.yaml` добавьте запись:
```yaml
tts:
- platform: marytts
host: localhost # Адрес сервера
port: 9898
codec: WAVE_FILE
voice: xenia # Имя голоса который хотите использовать.
language: ru # Не используется. Настройки языка указываются в настройках сервера.
```
## Настройка в Rhasspy Assistant
1) В настройках, в разделе Text to Speech. Выберете модуль MarryTTS.
2) Примените настройки Rhasspy Assistant (он перезагрузиться).
3) Укажите адрес вашего сервера с путём `/process`.
4) Нажмите на кнопку Refresh.
5) В списке доступных голосов, выберите голос который вам нужно.
6) Примените настройки Rhasspy Assistant (он перезагрузиться).![RhasspyConfig]
### Нормализация цифр
Сервис умеет переводить цифры в текст.
Пример:
```text
Текст с цифрой 1.
```
[Нормализация Пример 1]
### Склонение существительных после цифры
Сервис умеет склонять существительных после цифр.
Для этого слово которое нужно склонить после цифры, возьмите в тег `слово`.
Пример:
```text
У меня было 15 яблоко.
```
[Склонение Пример 1]Если нужно склонить несколько слов, то каждое нужно брать в тег `слово` отдельно.
```text
Мне осталось работать 15 рабочий день.
```
[Склонение Пример 2]
### Произношение транслита
Сервис умеет произносить транслит.
Пример:
```text
Lorem ipsum dolor sit amet.
```
[Транслит Пример 1]
### SSML
С помощью SSML вы можете управлять паузами и просодией синтезированной речи.
```text
Когда я просыпаюсь, я говорю довольно медленно.
Потом я начинаю говорить своим обычным голосом,
а могу говорить тоном выше ,
или наоборот, ниже.
Потом, если повезет – я могу говорить и довольно быстро.
А еще я умею делать паузы любой длины, например две секунды .
Также я умею делать паузы между параграфами.
И также я умею делать паузы между предложениями
Вот например как сейчас
```
[SSML Пример 1]
## Endpoints
- `GET` `/clear_cache` - Очищает кэш уже синтезированных сообщений.
- `GET` `/settings` - Возвращает текущие настройки сервера.
- `GET` `/voices` - Возвращает список доступных голосов для выбранного языка.
- `GET` `/process?VOICE=[Выбраный голос]&INPUT_TEXT=[Текст для обработки]` - Возвращает аудио файл синтезированной речи.
- `POST` `/process` в теле запроса `VOICE=[Выбраный голос]`, `INPUT_TEXT=[Текст для обработки]` - Возвращает аудио файл синтезированной речи.
## Вывод звука на Bluetooth колонку1) Если Home Assistant как основная ОС (HAOS), то читаем эту документацию [TTS Bluetooth Speaker for Home Assistant]
2) Если Home Assistant стоит на Debian, то делаем следующее:Отредактируем client.conf
```commandline
nano /etc/pulse/client.conf
```Добавим следующее:
```commandline
default-server = unix:/usr/share/hassio/audio/external/pulse.sock
autospawn = no
```![ClientConf]
Перезапускаем pulseaudio.
```commandline
pulseaudio -k && pulseaudio --start
```Ставим аддон [Mopidy версии Current version: 2.1.1] и ставим только эту версию. Mopidy 2.2.0 не ставить - она сломанная. Подробнее про поломанную версию Mopidy 2.2.0 читать [здесь].
Добавляем в configuration.yaml
```yaml
media_player:
- platform: mpd
name: "MPD Mopidy"
host: localhost
port: 6600
```Перезагружаем Home Assistant полностью, чтобы перезагрузился сам Debian.
![RebootHa]
Подключаем bluetooth колонку к Debian, kb,j через GUI, либо через консоль используя команду bluetoothctl
Включим bluetooth:
```commandline
power on
```Запуск сканирования девайсов:
```commandline
scan on
```Как увидели свой девайс, спариваемся с устройством:
```commandline
pair [mac адрес девайса]
```Подключаемся к устройству:
```commandline
connect [mac адрес девайса]
```Добавляем устройство в доверенные:
```commandline
trust [mac адрес девайса]
```Далее, как добавлен bluetooth девайс то в двух аддонов Rhasspy Assistant и Mopidy нужно указать источник вывода звука bluetooth девайса:
1) В Rhasspy Assistant указываем так:
![RhasspyAssistantConfig]
2) В Mopidy указываем так:
![MopidyConfig]
Проверяем работоспособность:
![TtsSay]
Код:
```yaml
service: tts.marytts_say
data:
entity_id: media_player.mpd_mopidy
message: >-
Спустя 15 лет жизнь некогда бороздившего космические просторы Жана-Люка
Пикара
```[aarch64-badge]: https://img.shields.io/badge/aarch64-no-red.svg?style=for-the-badge
[amd64-badge]: https://img.shields.io/badge/amd64-yes-green.svg?style=for-the-badge
[armhf-badge]: https://img.shields.io/badge/armhf-no-red.svg?style=for-the-badge
[armv7-badge]: https://img.shields.io/badge/armv7-no-red.svg?style=for-the-badge
[i386-badge]: https://img.shields.io/badge/i386-yes-green.svg?style=for-the-badge[license-shield]: https://img.shields.io/github/license/Navatusein/Silero-TTS-Service.svg?style=for-the-badge
[license-url]: https://github.com/Navatusein/Silero-TTS-Service/blob/Main/LICENSE[Silero]: https://github.com/snakers4/silero-models
[silero-ha-http-tts]: https://github.com/Gromina/silero-ha-http-tts
[Gromina]: https://github.com/Gromina[RhasspyConfig]: /docs/RhasspyConfig.png
[Нормализация Пример 1]: https://on.soundcloud.com/WsG6i
[Склонение Пример 1]: https://on.soundcloud.com/x7RDs
[Склонение Пример 2]: https://on.soundcloud.com/q6Bge[Транслит Пример 1]: https://on.soundcloud.com/Mfgqv
[SSML Пример 1]: https://on.soundcloud.com/kk9CY
[TTS Bluetooth Speaker for Home Assistant]: https://github.com/pkozul/ha-tts-bluetooth-speaker
[ClientConf]: /docs/ClientConf.png
[Mopidy версии Current version: 2.1.1]: https://github.com/Llntrvr/Hassio-Addons
[здесь]: https://github.com/Poeschl/Hassio-Addons/issues/334
[RebootHa]: /docs/RebootHa.png
[RhasspyAssistantConfig]: /docs/RhasspyAssistantConfig.png
[MopidyConfig]: /docs/MopidyConfig.png
[TtsSay]: /docs/TtsSay.png