Eu criei este projeto para fornecer à minha casa inteligente uma síntese normal de fala. Além disso, para fornecer a Rhasspy uma síntese normal de fala. Já prontos -soluções feitas não se encaixavam em mim e foi decidido inventar a bicicleta deles. Os modelos Silero foram tomados como base.
Fui inspirado no projeto Silero-Ha-Http-TTS de Gromina. Ele estava úmido e eu decidi fazer tudo em mente, com configurações e recipientes prontos -feitos.
Siga o comando:
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
Crie um arquivo docker-compose.yml e transfira o conteúdo para ele:
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 : 48000Siga o comando:
docker-compose up
Todas as configurações do servidor são transmitidas como parâmetros de ambiente do Docker para o contêiner ao iniciar.
O número de núcleos para processamento de fala NUMBER_OF_THREADS :
NUMBER_OF_THREADS : 4 O número de fluxos de 1 para o número de núcleos do processador do servidor.
Por padrão: 4
LANGUAGE de síntese de idiomas:
LANGUAGE : ru Por padrão: ru
Idiomas suportados com votos disponíveis para eles:
| Linguagem | Código do idioma | Vozes suportadas |
|---|---|---|
| russo | ru | aidar baya kseniya xenia eugene random |
| ucraniano | uk | mykyta random |
Frequência de amostragem SAMPLE_RATE :
SAMPLE_RATE : 48000 Valores possíveis: 48000 , 24000 , 8000
Por padrão: 48000
Parâmetros do utilitário SOX SOX_PARAM :
SOX_PARAM : " reverb 50 50 10 " # Добавляет эхо на речьPor padrão: vazio
O arquivo de saída passa pelo utilitário Sox. Ela pode transmitir os parâmetros para impor efeitos ao discurso: aumente o timbre, adicione um eco, ligue o impulso dos graves.
Link para a documentação do utilitário Sox: https://linux.die.net/man/1/sox
Correção da fraude do final da frase HA_FIX :
HA_FIX : True Pode levar valores: True False
Por padrão: False
Corrige um erro em que o assistente doméstico não concorda no final da frase. Adiciona um segundo de silêncio ao fim da fala.
No arquivo configuration.yaml , adicione um registro:
tts :
- platform : marytts
host : localhost # Адрес сервера
port : 9898
codec : WAVE_FILE
voice : xenia # Имя голоса который хотите использовать.
language : ru # Не используется. Настройки языка указываются в настройках сервера. /process .
O serviço pode traduzir números em texto.
Exemplo:
Текст с цифрой 1.
Exemplo de normalização 1
O serviço pode curvar substantivos após os números.
Para fazer isso, a palavra que precisa ser persuadida após o número, pegue <d>слово</d> .
Exemplo:
У меня было 15 <d>яблоко</d>.
Rlowing Exemplo 1
Se você precisar convencer algumas palavras, cada um deverá ser levado na tag <d>слово</d> separadamente.
Мне осталось работать 15 <d>рабочий</d> <d>день</d>.
Lange Exemplo 2
O serviço pode pronunciar o tradutor.
Exemplo:
Lorem ipsum dolor sit amet.
Exemplo de tradução 1
Usando SSML, você pode controlar as pausas e a fala sintetizada por proxy.
<p>
Когда я просыпаюсь, <prosody rate="x-slow">я говорю довольно медленно</prosody>.
Потом я начинаю говорить своим обычным голосом,
<prosody pitch="x-high"> а могу говорить тоном выше </prosody>,
или <prosody pitch="x-low">наоборот, ниже</prosody>.
Потом, если повезет – <prosody rate="fast">я могу говорить и довольно быстро.</prosody>
А еще я умею делать паузы любой длины, например две секунды <break time="2000ms"/>.
<p>
Также я умею делать паузы между параграфами.
</p>
<p>
<s>И также я умею делать паузы между предложениями</s>
<s>Вот например как сейчас</s>
</p>
</p>
SSML Exemplo 1
GET /clear_cache - limpa o cache das mensagens já sintetizadas.GET /settings - Retorna as configurações atuais do servidor.GET /voices - Retorna uma lista de votos disponíveis para o idioma selecionado.GET /process?VOICE=[Выбраный голос]&INPUT_TEXT=[Текст для обработки] - Retorna um arquivo de áudio do discurso sintetizado.POST /process no corpo da VOICE=[Выбраный голос] , INPUT_TEXT=[Текст для обработки] - Retorna um arquivo de áudio do discurso sintetizado. Edit client.conf
nano /etc/pulse/client.conf
Adicione o seguinte:
default-server = unix:/usr/share/hassio/audio/external/pulse.sock
autospawn = no

Reinicie o pulseaudio.
pulseaudio -k && pulseaudio --start
Colocamos uma versão adicional da versão atual: 2.1.1 e colocamos apenas esta versão. MoPidy 2.2.0 Não coloque - está quebrado. Leia mais sobre a versão quebrada do MoPidy 2.2.0 Leia aqui.
Adicione ao Configuration.yaml
media_player :
- platform : mpd
name : " MPD Mopidy "
host : localhost
port : 6600Reiniciamos o assistente doméstico completamente para reiniciar o próprio Debian.

Conecte a coluna Bluetooth a Debian, KB, J através da GUI, ou através do console usando o comando bluetoothctl
Ligue o Bluetooth:
power on
Iniciando dispositivos de digitalização:
scan on
Como vimos nosso dispositivo, acasalamos com o dispositivo:
pair [mac адрес девайса]
Nós nos conectamos ao dispositivo:
connect [mac адрес девайса]
Adicione o dispositivo ao Trusted:
trust [mac адрес девайса]
Além disso, como os dispositivos Bluetooth foram adicionados em dois complementos de assistente rhasspy e mopídio, você precisa especificar a fonte do som do dispositivo Bluetooth:


Verificamos o desempenho:

Código:
service : tts.marytts_say
data :
entity_id : media_player.mpd_mopidy
message : >-
Спустя 15 лет жизнь некогда бороздившего космические просторы Жана-Люка
Пикара