[AsteriskBrasil] URA interativa com reconhecimento de voz

Eduardo Assis - Pro Redes eassis em linuxmail.org
Sexta Janeiro 18 16:13:11 BRST 2013


Utilizando o AGI do Autor "Lefteris Zafiris" é possivel trabalhar com reconhecimento de voz e conversão de audio para texto do Google. 

 Para ajudar alguns, fiz uma pequena receita:

 Site para download:

 http://zaf.github.com/asterisk-googletts/
 Linux: wget https://github.com/downloads/zaf/asterisk-googletts/asterisk-googletts-0.6.tar.gz --no-check-certificate

 http://zaf.github.com/asterisk-speech-recog/
 Linux: wget https://github.com/downloads/zaf/asterisk-speech-recog/asterisk-speech-recog-0.5.tar.gz --no-check-certificate

 /tmp# tar xvfz asterisk-googletts-0.6.tar.gz
 /tmp# tar xvfz asterisk-speech-recog-0.5.tar.gz

 cp asterisk-googletts-0.6/googletts.agi /var/lib/asterisk/agi-bin/
 cp asterisk-speech-recog-0.5/speech-recog.agi /var/lib/asterisk/agi-bin/

 Como utilizo Slackware ( Arrebenta !!! ) tive que instalar a libwww-perl

 Criei um no Mysql 02 tabelas para registrar as informações:

 Tabela:consultarecebida
 Campos: reconheceu - Varchar(255)

 Tabela:ramais
 Campos: ramal - Varchar(255)
 Campos: nome - Varchar(255)

 ; Ura com reconhecimento de Voz
 ;
 exten => 4006,1,Answer()

 exten => 4006,n,NoOp( Faço gravação para depois ouvir o que ele falou e comparar com o que reconheceu )
 exten => 4006,n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)
 exten => 4006,n,MixMonitor(/pasta_gravacao/arquivo.wav,W(2)W(2))

 exten => 4006,n(Inicio),agi(googletts.agi,"Após o sinal, fale o nome para procura",pt-BR)
 exten => 4006,n,agi(speech-recog.agi,pt-BR,3)
 exten => 4006,n,NoOp( O que reconheceu: ${utterance} )

 exten => 4006,n,NoOp( Gravo no BD )
 exten => 4006,n,MYSQL(Connect connid localhost user senha banco)
 exten => 4006,n,MYSQL(Query resultid ${connid} INSERT INTO consultarecebida (reconheceu) VALUES ("${utterance}"))
 exten => 4006,n,MYSQL(Disconnect ${connid})

 exten => 4006,n,NoOp( Consulta nome no BD )
 exten => 4006,n,MYSQL(Connect connid localhost user senha banco)
 exten => 4006,n,MYSQL(Query resultid ${connid} SELECT ramal FROM ramais WHERE nome LIKE "%${utterance}%")

 exten => 4006,n,MYSQL(Fetch fetchid ${resultid} ramal)
 exten => 4006,n,MYSQL(Clear ${resultid})
 exten => 4006,n,MYSQL(Disconnect ${connid})

 exten => 4006,n,NoOp( Ramal encontrado -> ${ramal} )

 exten => 4006,n,GotoIf($["${ramal}" != ""]?localizado:naolocalizado)

 exten => 4006,n(localizado),NoOp( Discando para o ramal de ${utterance} )
 exten => 4006,n,Dial(SIP/${ramal},60,Tt)
 exten => 4006,n,Hangup()

 exten => 4006,n(naolocalizado),NoOp( Nao Localizado)
 exten => 4006,n,agi(googletts.agi,"Não foi possivel identificar ou localizar o nome ${utterance}",pt-BR)
 exten => 4006,n,agi(googletts.agi,"Estou transferindo para um atendente",pt-BR)
 exten => 4006,n,Dial(SIP/200,60,Tt)
 exten => 4006,n,Hangup()

 Com este pequeno exemplo conseguimos Gravar e Ouvir o que nosso cliente falou.
 Como fica registrado como o Google reconheceu, podemos ir adicionando o texto reconhecido pelo Google no Mysql.
 Dando uma certa inteligencia para o reconhecimento.

 Ex:
 Eduardo Ramal 200
 Eduard Ramal 200
 Edvardo Ramal 200

 Abraços.

 Eduardo Assis
 Gerente Comercial
 +55 19 3406-7524
 +55 19 9256-4050
 www.proredes.com.br
 www.telefonasti.com.br
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20130118/bb1a9aaa/attachment.htm 


Mais detalhes sobre a lista de discussão AsteriskBrasil