quinta-feira, 11 de julho de 2013

Configurar TTS em Português para Asterisk

Artigo de Marcelo Terres com algumas adaptações por Marcelo Araújo

Asterisk e Google Text to Speech

No uso diário do Asterisk, periodicamente me deparo com a necessidade de gerar arquivos de áudio para tocar mensagens informativas básicas para o usuário.
Obter tais arquivos é uma tarefa eventualmente árdua que normalmente envolve a gravação in house dos arquivos (que consome um tempo razoável) ou a contratação de uma empresa especializada. Existem várias empresas excelentes neste nicho de mercado, mas às vezes não existe orçamento ou até mesmo tempo para produzir áudios mais básicos, para consumo interno.
Como alternativa para a criação de tais áudios, encontrei na lista AsteriskBrasil a sugestão do AGI GoogleTTS.
Este AGI utiliza o Google Text to Speech para gerar um arquivo de áudio on demand na linguagem que você indicar, e que, após sua geração, é automaticamente tocado pra o usuário. Como utiliza o Google Text to Speech, este AGI necessita de uma conexão ativa de Internet, mas, como todo software bem planejado, ele  possui um sistema de cache que garante que a mesma mensagem de áudio não precise ser gerada mais de uma vez, o que possibilita que os arquivos de áudio possam ser utilizados mesmo que o link Internet esteja indisponível, contanto que o mesmo já tenha sido gerado anteriormente.
Instalando o googletts.agi

O AGI, que é escrito em perl, depende de algumas bibliotecas e softwares bastante populares, que podem ser facilmente instalados no Ubuntu 12.04 com o comando apt-get install libwww-perl mpg123 sox.

Após fazer o download do arquivo .tar.gz, descompacte-o e coloque o arquivo googletts.agi no diretório /var/lib/asterisk/agi-bin/  para que o Asterisk possa acessá-lo. Não esqueça de verificar as permissões de acesso do arquivo.
Ajuda:
cd /var/lib/asterisk/agi-bin
wget http://github.com/zaf/asterisk-googletts/tarball/master/zaf-asterisk-googletts-v0.6-20-g3bebc50.tar.gz
tar -xzvf master
cd zaf-asterisk-googletts-3bebc50
mv googletts.agi /var/lib/asterisk/agi-bin/googletts.agi
cd cli
mv googletts-cli.pl /var/lib/asterisk/agi-bin/zaf-asterisk-googletts-3bebc50/googletts-cli.pl
cd /var/lib/asterisk/agi-bin/
rm -r zaf-asterisk-googletts-3bebc50
rm master
Aconselho que antes de iniciar o uso, o arquivo googletts.agi seja editado para definir algumas paramêtros, como a linguagem padrão e o diretório para armazenamento do cache (o diretório padrão, /tmp, certamente não é a melhor escolha para armazenar tais dados).
Permissões: 
chmod 755 googletts.agi

Alterar ficheiro:
vi googletts.agi
mudar lingua para:
Portuguese Brazil:  pt-BR ou Portuguese Portugal:pt-PT
Utilizando o googletts.agi
Abaixo um pequeno exemplo de utilização da ferramenta para informar de maneira audível ao usuário qual seu ramal e nome de usuário:

[internal_services] 
exten => *65,1,NoOp(Who Am I)
same => n,Answer
same => n,agi(googletts.agi,"Meu ramal é ${CALLERID(num)} e meu usuário é ${CALLERID(name)}",pt-BR)
same => n,Hangup
Criar um ficheiro wave:
 /var/lib/asterisk/agi-bin/googletts-cli.pl -l en -t "Olá, chegou à caixa de mensagens da casa de Marcelo, por favor deixe a sua mensagem depois do sinal" -r 8000 -o /var/lib/asterisk/sounds/tts/chegoucaixamensagens.wav

Bibiografia: 
http://mundoopensource.blogspot.pt/2013/01/asterisk-e-google-text-to-speech.html
http://zaf.github.io/asterisk-googletts/
http://pbxinaflash.com/community/index.php?threads/create-wav-file-with-googletts.12555/

2 comentários:

Unknown disse...

Estou tendo alguns problemas com palavras acentuadas, como à ou táxi... não interpreta os acentos no audio... deu a ideia de ser qq coisa a ver con o encoding das frases... utf8... Alguem já teve este problema?

Pucci disse...

Oi! Vi que voce colocou uma mensagem meio que de porteiro.. voce já viu uma forma de ligar o interfone no asterisk? Valeu!