Reconocmiento de voz en asterisk con Lumenvox
Hoy toca ración de reconocimiento de voz :). Hace tiempo compré una licencia de evaluación (50$) para hacer pruebillas e impresionar al personal. En su día solo tenían el modelo de voz Inglés Americano, y para reconocer palabras en español tenías que hablar como un expresidente del gobierno ;). Pero han estado trabajando en ello, y ya tienen modelos específicos para español de Mejico y de Colombia.
Os voy a poner una ejemplo muy simple: el dialplan, la gramática, y un softphone web para que lo probéis de viva voz.
Paso 1: Instalar Lumenvox
Como he comentado antes, es un programa de pago,a sí que tendréis que adquirir al menos el Speech Starter Kit. La instalación y validación es algo cansina, pero que se le va a hacer. Seguid al pie de la letra las instrucciones que os llegarán por email. Básicamente se reduce a:
- Descargar e instalar el License Server.
- Generar el fichero de instalación (Info.bts), enviarlo a Lumenvox mediante el formulario web, y descargar el fichero con la licencia (License.bts). Estará asociado a la MAC de la tarjeta de red.
- Descargar e instalar el SRE (Speech Recognition Engine)
- Instalar el “Asterisk Connector Bridge”, que enlaza los servicios de voz de asterisk con el SRE de lumenvox.
Paso 2: Gramática
El sistema tiene que saber las frases que queremos detectar. Ejemplo:
root $frase
$sujeto = Pedro | Juan
$verbo = programa | estudia | sueña
$predicado = [ en ] C | PHP | AEL
$frase = $sujeto $verbo $predicado
Esta gramática reconocería frases como “Juan sueña en PHP”, “Pedro estudia C”, etc
Aquí es donde gana importancia el modelo de voz. Si usasemos el model Inglés, en vez de Pedro, habría que pronunciar algo como “Pedrou” ;), para que el sistema lo reconociese mejor.
Las gramáticas pueden ser muy complejas. Hay un ejemplo en la web de Lumenvox que simula la atención al cliente de una Pizzería, donde puedes realizar un pedido hablándole a la máquina (que miedo), aunque para el ejemplo que voy a mostraros, simplemente reconocerá una serie de nombres.
Paso 3: El Dialplan
Asterisk 1.4 ya incorpora funciones de reconocmiento de voz. Solo necesita de un motor que haga el reconocimiento y devuelva la información. Ejemplo:
exten => s,1,Answer
exten => s,n,Wait(1)
exten => s,n,SpeechCreate
exten => s,n,SpeechActivateGrammar(migramatica)
exten => s,n,SpeechStart
exten => s,n(otravez),SpeechBackground(beep)
exten => s,n,NoOp(${SPEECH_TEXT(0)})
exten => s,n,Goto(otravez)
Paso 4: El Ejemplo
Será un directorio de blogs con temática voip ;). El sistema reconocerá una serie de nombres, y contestará con la dirección del blog/página web. Para finalizar, se podrá decir “hasta luego” o “ya es suficiente”. Después de cada reconocimiento, se escuchará la calidad del resultado (de 0 a 1000).
No se por qué, pero he tenido que utilizar fonemas para que me reconociese bien todos los nombres. Debería bastar con el nombre directamente, pero bueno. Con frases más largas funciona mejor.
Descarga la gramática asteriskes.gram
Prueba el sistema en vivo y en directo: Abrir jiaxclient (a ver si no se satura la ADSL)
También podeis llamar desde asterisk:
exten => 123,1,Dial(IAX2/jiaxclient@voip.julianmenendez.es/demo)
Tags: Asterisk, jiaxclient, lumenvox, reconocimiento, voz


