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.

rbot

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

http://www.bilbaomakers.org/blog/2015/11/10/sintesis-de-voz-en-la-beaglebone-black/

Para empezar instalaremos los paquetes necesarios:

# apt-get install bison libasound2-dev pkg-config python-dev cython alsa-utils

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:

# aptitude remove pulseaudio -y
# aptitude purge pulseaudio -y
# mv /usr/include/pulse/pulseaudio.h /usr/include/pulse/pulseaudio.h.old

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

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:

$ ./configure --enable-fixed

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

$ make && sudo make install

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:

# /sbin/ldconfig

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:

$ ./configure
$ make && sudo make install

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

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:

./pocketsphinx_continuous -lm 2607.lm -dict 2607.dic

La mejora es muy evidente.

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.