Faire parler la Raspberry

Como fazer o Raspberry Pi ler texto com o eSpeak.

Atualizada 5 November 2019 - 0 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 …

Sim, a voz é horrível, mas vamos melhorar isso mais tarde.

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 …

Algumas linhas de bugs espeak.
E isso, meu amigo, é o que chamamos de "um bug" …

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 …

Até Kevin Hart acha isso bugado!
O que o quê?

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:

Claro, sempre sentimos que é um robô. Mas admita que ainda existe o melhor!

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 áudio mb, 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.

5/5 - (1 vote)
Compartilhar
Boletim de Notícias
Autor:
Raspberry Pi FR
Junte-se à comunidade Raspberry Pi
Um computador de $35 já vendeu 10 milhões de cópias
COMPRE A NOVA RASPBERRY PI 4
Tutoriais relacionados
Como ativar o SSH no Raspberry Pi. Lançamento do Raspberry Pi Zero WH, como o GPIO zero, além disso. Como encontrar o endereço IP do seu Raspberry Pi? Compre o seu Raspberry Pi 3B + e seus acessórios, nosso guia de compras! Use um nome de domínio com o Raspberry Pi para torná-lo acessível na Internet.
No Comments

Compartilhar
Inscrição no boletim informativo
Assine a newsletter.
Gostou deste artigo ?
Inscreva-se e mantenha-se informado!