Como fazer o Raspberry Pi ler texto com o eSpeak.
Comentáriosⓘ Cet article peut avoir été partiellement ou totalement traduit à l'aide d'outils automatiques. Nous nous excusons des erreurs que cela pourrait engendrer.
Na computação, o problema da interface do usuário é provavelmente um dos mais complicados. Isso, nomear coisas e invalidar um cache …
A maneira mais fácil de apresentar informações a um ser humano a partir de um computador é geralmente usando a visão. Mas para isso você precisa de uma tela, que é volumosa, cara e, portanto, não muito adequada para uso on-board.
Neste tutorial, veremos como usar a audição do usuário em vez da visão, fazendo com que o Raspberry Pi fale um texto usando o software eSpeak, chamado Text To Speech.
O hardware para fazer o Raspberry Pi falar
Para poder fazer seu Raspberry Pi falar, precisaremos do seguinte equipamento:
Instale o eSpeak no Raspberry Pi
Para fazer seu Raspberry Pi falar, usaremos o software eSpeak, um software de texto para fala de código aberto.
O princípio do eSpeak é o seguinte: você fornece a ele algum texto (uma sequência de caracteres, um arquivo, etc.) e ele o divide em fonemas (os menores sons que compõem uma língua falada), então usa um conjunto completo de técnicas para transformar esses fonemas em arquivos de som reais.
Instalar o eSpeak no Raspberry Pi é bastante simples, pois já está presente nos repositórios. Portanto, precisamos apenas atualizar os repositórios e solicitar a instalação do eSpeak:
sudo apt update sudo apt install espeak -y
Leia uma frase com eSpeak
Agora que o eSpeak está instalado, poderemos fazê-lo ler uma primeira frase. Mas antes disso, vamos ter certeza de que o som vai sair na porta Jack do nosso Raspberry Pi para chegar aos nossos alto-falantes.
Para fazer isso, execute o comando sudo raspi-config, vá para "Opções avançadas", "Áudio", "Forçar tomada de 3,5 mm ('fone de ouvido')" e finalmente "Concluir".
Vamos criar uma pasta espeak
no diretório do usuário, baixe um arquivo de áudio e reproduza-o para verificar se tudo está funcionando corretamente:
mkdir /home/pi/espeak cd /home/pi/espeak wget https://raspberry-pi.fr/download/espeak/test.mp3 -O test.mp3 ffplay -nodisp test.mp3
Você deve ouvir uma escala de dó maior tocando.
Agora que sabemos que os alto-falantes estão funcionando, vamos pedir ao eSpeak para dizer a frase: “As framboesas estão empoleiradas no banquinho do meu avô.”. Para isso, utilizamos o comando abaixo:
espeak -a 200 -v fr+f3 "Les framboises sont perchées sur le tabouret de mon grand-père." --stdout | aplay
O que nos dá algo assim …
Vamos contornar o comando um pouco para tentar entender:
espeak
lançar o programa espeak-a 200
indica o volume a ser usado para som. Ele varia de 0 a 200 e é 100 por padrão.-v fr+f3
nos diz a linguagem a ser usada.fr
corresponde ao idioma francês,+f3
indica que queremos usar a terceira variação da voz feminina proposta pelo eSpeak. Lembre-se de adaptar o código do idioma ao seu texto.- A frase entre aspas é a que será falada pelo eSpeak. Em vez disso, também poderíamos ter pedido que ele lesse um arquivo de texto casualmente.
-f le_chemin/du/fichier.txt
. --stdout
diz ao eSpeak que em vez de reproduzir o áudio diretamente, ele deve enviar os dados gerados para a saída padrão do terminal.| aplay
indica que a saída gerada pelo eSpeak será redirecionada para a entrada do programa aplay, que é um programa que permite reproduzir arquivos de áudio no formato Wave, o gerado pelo eSpeak. Observe que, em vez disso, podemos usar> mon_fichier.wav
para salvar a saída de áudio em um arquivo.
Como você pode ver, não é o eSpeak, mas um player que reproduz o som. A razão para isso é muito simples, espeak foi bugado no Raspberry Pi em algumas versões …
Se você tentar fazer o eSpeak falar diretamente, obterá erros relacionados ao Alsa, o servidor de som do Raspberry Pi. A solução mais simples é, portanto, enviar os dados para aplay, que funciona perfeitamente. No final das contas funciona e isso é tudo que importa.
Melhore a voz do eSpeak instalando o MBROLA no Raspberry.
Como você pode ver, as vozes geradas pelo eSpeak são absolutamente sujas. Não entre em pânico, temos uma solução para melhorar isso.
Mencionei isso no início do artigo, o eSpeak é capaz de gerar fonemas, essas peças sonoras que constituem uma língua falada. E, verifica-se que existem outros programas que conseguem ler e pronunciar esses fonemas, e de uma forma mais convincente que o eSpeak!
No nosso caso, usaremos o software MBROLA, um projeto colaborativo global iniciado pela Faculdade Politécnica de Mons, Bélgica, que visa projetar um enorme banco de dados para síntese de voz.
Estranhamente, o software MBROLA não está disponível nos repositórios Raspbian, enquanto os dados de idioma estão. Isto tem como consequência tornar impossível a instalação destes dados de idioma …
Não se preocupe, nós temos a solução! Na verdade, uma boa alma teve a gentileza de criar ela própria um pacote MBROLA para o Raspberry Pi e, portanto, decidimos criar um espelho no site.
Portanto, vamos baixar e instalar este pacote com os comandos abaixo:
cd ~/espeak wget https://raspberry-pi.fr/download/espeak/mbrola3.0.1h_armhf.deb -O mbrola.deb sudo dpkg -i mbrola.deb
E agora que o MBROLA está instalado, poderemos baixar os arquivos de idioma de que precisamos. Então para mim será mbrola-fr1
, ou seja, a primeira voz francesa. Adapte o comando ao seu idioma.
sudo apt install mbrola-fr1 -y
Tudo o que precisamos fazer agora é pegar nosso pedido anterior do eSpeak e adaptá-lo para gerar fonemas e fazer com que sejam lidos pelo MBROLA. O que nos dará o comando abaixo.
espeak -a 200 -v mb-fr1 -s 150 "Les framboises sont perchées sur le tabouret de mon grand-père." --stdout | aplay
O que nos dá o áudio abaixo:
Você encontrará algumas das mesmas configurações de antes, mas com duas alterações:
-v mb-fr1
indica que queremos usar o MBROLA para gerar o arquivo de áudiomb
, e a voz francesa número 1-fr1
.-s 150
indica quando a ele queremos gerar o arquivo a uma velocidade de 150 palavras por minuto. O padrão é 165, mas acho um pouco rápido, pelo menos para o francês.
Como antes, você pode modificar o comando para criar um arquivo, ler o texto de um arquivo txt, etc.
Combinando esses comandos com coisas como leitura de tags RFID e similares, você pode criar facilmente sistemas no veículo com interfaces relativamente completas.
Claro, ainda estamos longe de ser uma voz humana e sabemos que existem melhores motores de "Texto para fala", como o TTS da Mozilla desenvolvido como parte do projeto Common Voice. No entanto, MBROLA e eSpeak oferecem um bom compromisso entre facilidade de uso, velocidade de execução e eficiência.