Seu Linux falando português nativamente
Dica publicada em Linux / Miscelânea
Seu Linux falando português nativamente
Nesta dica eu descrevo uma maneira "Tosca" de fazer o seu computador realmente falar em português nativamente, sem qualquer emulação ou coisa do tipo.
Se interessou? O resultado não vai ser assim tão espetacular, pois o processo vai ser realizado pela linha de comando, além de ser um pouco lento perto, por exemplo, do programa festival falando em inglês. Mas mesmo assim já é um começo.
Primeiro precisamos baixar alguns arquivos e instalar.
Os arquivos são os seguintes:
Rawplay:
http://ufpr.dl.sourceforge.net/sourceforge/rawrec/rawrec-0.9.991.tar.gz
Mbrola:
http://tcts.fpms.ac.be/synthesis/mbrola/bin/pclinux/mbr301h.zip
Banco de Voz em português:
http://tcts.fpms.ac.be/synthesis/mbrola/dba/br3/br3-000119.zip
TTS em Português:
http://tcts.fpms.ac.be/synthesis/mbrola/tts/Portuguese/port_tts.zip
Agora, instalando tudo isso aí. Não, não é obrigatório ser root para realizar este processo. Tudo pode ser feito como usuário comum.
Entre na pasta que fez os downloads e descompacte o arquivo rawrec-0.9.991.tar.gz:
$ tar zxvf rawrec-0.9.991.tar.gz
$ cd rawrec-0.9.991/src
$ make
$ cp rawrec ../../rawplay
$ cd ../../
Descompactando o arquivo mbr301h.zip:
$ unzip mbr301h.zip
$ mv mbrola-linux-i386 mbrola
Descompactando o Banco de Voz em português:
$ unzip br3-000119.zip
Descompactando o script que juntará tudo aí em cima:
$ unzip port_tts.zip
Agora temos que editar o script ttp_p.pl para colocar o local exato de cada arquivo:
$ vim ttp_p.pl
(ou outro editor de sua escolha)
Vá até a linha 12 (:12), que iremos modificar. Modifique ela para ficar assim:
Se interessou? O resultado não vai ser assim tão espetacular, pois o processo vai ser realizado pela linha de comando, além de ser um pouco lento perto, por exemplo, do programa festival falando em inglês. Mas mesmo assim já é um começo.
Primeiro precisamos baixar alguns arquivos e instalar.
Os arquivos são os seguintes:
Rawplay:
http://ufpr.dl.sourceforge.net/sourceforge/rawrec/rawrec-0.9.991.tar.gz
Mbrola:
http://tcts.fpms.ac.be/synthesis/mbrola/bin/pclinux/mbr301h.zip
Banco de Voz em português:
http://tcts.fpms.ac.be/synthesis/mbrola/dba/br3/br3-000119.zip
TTS em Português:
http://tcts.fpms.ac.be/synthesis/mbrola/tts/Portuguese/port_tts.zip
Agora, instalando tudo isso aí. Não, não é obrigatório ser root para realizar este processo. Tudo pode ser feito como usuário comum.
Entre na pasta que fez os downloads e descompacte o arquivo rawrec-0.9.991.tar.gz:
$ tar zxvf rawrec-0.9.991.tar.gz
$ cd rawrec-0.9.991/src
$ make
$ cp rawrec ../../rawplay
$ cd ../../
Descompactando o arquivo mbr301h.zip:
$ unzip mbr301h.zip
$ mv mbrola-linux-i386 mbrola
Descompactando o Banco de Voz em português:
$ unzip br3-000119.zip
Descompactando o script que juntará tudo aí em cima:
$ unzip port_tts.zip
Agora temos que editar o script ttp_p.pl para colocar o local exato de cada arquivo:
$ vim ttp_p.pl
(ou outro editor de sua escolha)
Vá até a linha 12 (:12), que iremos modificar. Modifique ela para ficar assim:
my $mbrola_cmd = "| ./mbrola -e ./br3/br3 - -.raw | ./rawplay -s 9960";
Salve o arquivo (:x!) e dê permissão de execução a ele:
$ chmod +x ttp_p.pl
Bem, agora vamos testar pra ver se funcionou. Dê o seguinte comando:
$ echo "O rato roeu a roupa do rei de roma" | ./ttp_p.pl
Se você ouvir uma voz robótica saindo do auto-falante do seu computador, não se assuste: Não é um fantasma nem o Stephen Hawking, é o seu computador falando com você. ;)
Como disse acima, fazer tudo isso pode ser chato. Aí há várias soluções. Uma dela é fazer o seguinte:
$ cat << FIM | ./ttp_p.pl
Aí você pode digitar as frases, e quando digitar a label FIM a frase será sintetizada e falada.
Você pode também criar um script em shell, que seria mais ou menos assim:
#!/bin/bash
# script 1
echo "Digite o que você quer que o seu computador fale:"
read expressao
echo "$expressão" | ./ttp_p.pl > /dev/null 2> /dev/null
# script 1
echo "Digite o que você quer que o seu computador fale:"
read expressao
echo "$expressão" | ./ttp_p.pl > /dev/null 2> /dev/null
Ou ainda:
#!/bin/bash
# script 2
if [ ! -z "$*" ]; then
echo "$*" | ./ttp_p.pl > /dev/null 2> /dev/null
else
echo "Uso: $0 <Frase a ser falada>"
fi
# script 2
if [ ! -z "$*" ]; then
echo "$*" | ./ttp_p.pl > /dev/null 2> /dev/null
else
echo "Uso: $0 <Frase a ser falada>"
fi
Bem, aí a imaginação é sua. E há várias formas de fazer isso.
Lembrando que, do jeito que esse processo foi feito, é obrigatoriamente necessário estar no diretório onde estão os arquivos, para que funcione.
Mas se você quiser que tudo isso aconteça de forma mais dinâmica, onde qualquer usuário possa executar, estando em qualquer diretório, faça o seguinte:
Crie uma pasta comum para todos os usuários:
# mkdir /usr/lib/mbrola
(poderia ser qualquer outra pasta)
Entre nesta pasta e faça aquele processo descrito acima (as descompactações, etc) nesse diretório.
Entre em rawrec-0.9.991/src e dê "make && make install" e volte para /usr/lib/mbrola.
Edite o arquivo ttp_p.pl, localizando a linha 12, deixando-as assim:
my $mbrola_cmd = "| /usr/lib/mbrola/mbrola -e /usr/lib/mbrola/br3/br3 - -.raw | rawplay -s 9960";
Localize também a linha 211, deixando-as assim:
my ($defcfg,$defstyle) = readcfg("/usr/lib/mbrola/portuguese.dat");
E a linha 215, deixando-a assim:
open(RULES,"/usr/lib/mbrola/port_rules");
Salve o arquivo e crie um script chamado falar (poderia ser qualquer outro nome) numa pasta qualquer da sua variável PATH. No caso, usarei /usr/bin. O conteúdo do arquivo é bem parecido com o script 2 citado acima:
#!/bin/bash
# script 3
if [ ! -z "$*" ]; then
echo "$*" | /usr/lib/mbrola/ttp_p.pl > /dev/null 2> /dev/null
else
echo "Uso: falar <Frase a ser falada>"
fi
# script 3
if [ ! -z "$*" ]; then
echo "$*" | /usr/lib/mbrola/ttp_p.pl > /dev/null 2> /dev/null
else
echo "Uso: falar <Frase a ser falada>"
fi
Salve o arquivo e dê permissão de execução a ele:
# chmod a+x /usr/bin/falar
Sei que essa não é a finalidade dessa tecnologia, mas você pode usar esse recurso para várias coisas idiotas, tais como colocar uma mensagem filosófica (falar $(fortune)) para ser falada quando você logar no sistema, dentre outras inutilidades, mas isso eu não descrevo nessa dica. Quem sabe numa outra.
Créditos
Projeto Mbrola:Banco de voz em português:
- Denis R.Costa: dcosta - at - ams.com.br
- Luis Alves: luis.alves - at - engineer.com
- Eduardo Reis: eduardo.reis - at - engineer.com
Muito obrigado e até a próxima.