domingo, 21 de julho de 2013

Configurar Reconhecimento de voz em Português no Asterisk

Este script usa o reconhecimento de voz da Google, transformando a voz em formato de texto que posteriomente é utilizado como uma variavel de dialplan no asterisk.

Requisitos:
 
Perl          The Perl Programming Language
perl-libwww   The World-Wide Web library for Perl
IO-Socket-SSL Perl module that implements an interface to SSL sockets.
flac          Free Lossless Audio Codec
Acesso à internet.
 
 
Instalar:
 
cd /var/lib/asterisk/agi-bin/
wget https://github.com/zaf/asterisk-speech-recog/archive/master.zip
unzip master

Copiar os ficheiros contidos no directório asterisk-speech-recog-master e seus sub-directórios para 
/var/lib/asterisk/agi-bin/
 
Exemplos Asterisk dialplan: 
 
;;Simple speech recognition
exten => 1234,1,Answer()
exten => 1234,n,agi(speech-recog.agi,en-US)
exten => 1234,n,Verbose(1,The text you just said is: ${utterance})
exten => 1234,n,Verbose(1,The probability to be right is: ${confidence})
exten => 1234,n,Hangup()
 
 
;;Speech recognition demo:
exten => 1235,1,Answer()
exten => 1235,n,agi(googletts.agi,"Say something in English, when done press the pound key.",en)
exten => 1235,n(record),agi(speech-recog.agi,en-US)
exten => 1235,n,Verbose(1,Script returned: ${status} , ${id} , ${confidence} , ${utterance})

;Check return status:
exten => 1235,n,GotoIf($["${status}" = "0"]?success:fail)

;Check the probability of a successful recognition:
exten => 1235,n(success),GotoIf($["${confidence}" > "0.8"]?playback:retry)

;Playback the text:
exten => 1235,n(playback),agi(googletts.agi,"The text you just said was...",en)
exten => 1235,n,agi(googletts.agi,"${utterance}",en)
exten => 1235,n,goto(end)

;Retry in case speech recognition wasn't successful:
exten => 1235,n(retry),agi(googletts.agi,"Can you please repeat more clearly?",en)
exten => 1235,n,goto(record)

exten => 1235,n(fail),agi(googletts.agi,"Failed to get speech data.",en)
exten => 1235,n(end),Hangup()
 
 
 
 
 
;;Voice dialing example
exten => 1236,1,Answer()
exten => 1236,n,agi(googletts.agi,"Please say the number you want to dial.",en)
exten => 1236,n(record),agi(speech-recog.agi,en-US)
exten => 1236,n,GotoIf($[$["${status}" = "0"] & $["${confidence}" > "0.8"]]?success:retry)

exten => 1236,n(success),goto(${utterance},1)

exten => 1236,n(retry),agi(googletts.agi,"Can you please repeat?",en)
exten => 1236,n,goto(record) 

Sem comentários: