Reconocimiento de voz en la Beaglebone black

En este pequeño manual vamos a ver como instalar la aplicacion de reconocimiento de voz ligera Pocketsphinx.

robot

En un post anterior se pueden ver algunos previos necesarios para poner en marcha estas instrucciones:

http://www.kurtsik.org/blog/?p=1303

El procedimiento es algo laborioso por que implica la compilacion de las aplicaciones y lidiar con el complejo sistema de audio de GNU/Linux.

Para empezar instalaremos los paquetes necesarios:

En el proceso de configuracion es posible que se den problemas por que no se detecte correctamente el sistema ALSA y se enlace con Pulseaudio por lo que procederemos eliminar esta aplicacion para forzar el linkado con ALSA:

Este es el error que obtendremos si realizamos la compilacion enlazando con pulseaudio:

Error opening audio device plughw:1,0 for capture: Connection refused
Mixer load failed: Invalid argument FATAL_ERROR: “continuous.c”, line
246: Failed to open audio device

El siguiente paso sera descargar los dos paquetes necesarios: sphinxbase-0.8 y pocketsphinx-0.8, de la web del proyecto: http://cmusphinx.sourceforge.net/. Alli tambien podremos encontrar mucha documentacion interesante.

Descomprimimos ambos paquetes y comenzamos por sphinxbase. Accedemos al directoria con las fuentes y procedemos al configurado:

 

Si hay errores por falta de dependencias las instalaremos y para terminar ejecutaremos:

Y habilitaremos la disponibilidad de estas librerias para enlazar el siguiente paquete que compilaremos. Para ello editaremos el archivo /etc/ld.so.conf y añadiremos al final la siguiente linea: /usr/local/lib. Guardamos y ejecutamos:

Vamos ahora con el segundo paquete, accedemos a las fuentes de pocketsphinx y ejecutamos la configuracion (si hay errores por dependencias las instalaremos), compilaremos e instalaremos:

Una vez instalado podremos comprobar que el sistema funciona correctamente ejecutando la siguiente aplicacion de testeo: pocketsphinx-0.8/src/programs/pocketsphinx_continuous,

Al ejecutar la aplicacion esta quedara a la espera de detectar audio asi que hablaremos al microfono, la aplicacion se activara y, entre muchos mensajes de debug, mostrara las palabras que ha identificado.

Por defecto el idioma que se identifica es el ingles, hay un proyecto para crear los modelos acusticos y los diccionarios pero parece ser que esta en una fase bastante temprana de desarrollo.

Rapidamente nos daremos cuenta que la aplicacion no es muy eficaz reconociendo el audio, para intentar mejorar la eficiencia podemos proporcionar una gramatica limitada a la aplicacion por ejemplo con las ordenes concretas que pensemos utilizar.

El procedimiento para hacer esto comienza creando un archivo de texto con las cadena que necesitemos, una por linea y sin simbolos de puntuacion:

gramatica txt

Para compilar este fichero iremos a la siguiente URL: http://www.speech.cs.cmu.edu/tools/lmtool-new.html. Ahi se encuentra una herramienta llamada lmtool que es capaz de compilar de manera adecuada nuestra gramatica. Tal como indican en la web la aplicacion esta optimizada para ingles, concretamente el dialecto de EEUU.

Subiremos el archivo, pulsaremos COMPILE KNOWLEDGE BASE y descargaremos el comprimido que nos enlaza la web.

Ahora debemos descomprimir el archivo anterior y mover el contenido al directorio pocketsphinx-0.8/src/programs. Entonces invocaremos de nuevo pocketsphix indicandole que haga uso de nuestro diccionario:

La mejora es muy evidente.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *