Reconocimiento de voz (tiempo real) en idioma español con PocketSphinx

Hola amigos, el día de hoy vamos a presentarles un muy simple reconocimiento de voz en tiempo real utilizando Python + PocketSphinx

Primero debemos descargar las librerías base Sphinxbase y Pocketsphinx, creamos un directorio en donde descargaremos los archivos y copiamos las librerías, para eso abrimos consola y escribimos:

sudo apt install autoconf libtool automake bison python-dev swig libpulse-dev 

mkdir sphinx
cd sphinx
git clone https://github.com/cmusphinx/sphinxbase
git clone https://github.com/cmusphinx/pocketsphinx

Posteriormente vamos a proceder a instalarlas en nuestro sistema

cd sphinxbase
./autogen.sh
make
sudo make install

Si todo sale correctamente tendremos instalado nuestro sphinxbase ahora procedemos con pocketsphinx

cd ../pocketsphinx
./autogen.sh
make
sudo make install

Ahora instalamos instalamos la interfaz que nos permitirá usar pocketsphinx con python (asegurar que tenemos instalada la ultima versión de setuptools y wheel)

pip install --upgrade pip setuptools wheel
pip install --upgrade pocketsphinx

Una vez realizado estos pasos vamos a agregar el idioma español a nuestro reconocimiento de voz, para eso vamos a ir a la siguiente dirección https://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/Spanish/ y descargarnos los achivos siguientes: cmusphinx-es-5.2.tar.gz, es-20k.lm.gz, es.dict.

Descomprimimos los archivos cmusphinx-es5.2.tar.gz y es-20k.lm.g, los archivos que acabamos de descomprimir contienen los modelos y el diccionario que se va a utilizar para nuestro idioma.

Cabe recalcar que el modelo utilizado es el de hidden markov models [1][2]

Abrimos nuevamente nuestra consola:
python -c "from pocketsphinx import get_model_path; print(get_model_path())"

La dirección que obtengamos sera la que nos indica en donde debemos guardar los archivos que acabamos de descomprimir, pero antes hay que hacer algunos cambios el archivo “es-20k.lm” lo renombramos a “es-20k.lm.bin”, entramos en la carpeta “cmusphinx-es-5.2” vamos a la subcarpeta “model_parameters” y encontraremos una carpeta con un nombre similar a “voxforge_es_sphinx.cd_ptm_4000” la renombramos a “es-es”

Finalmente copiamos el archivo y carpeta renombrada “es-20k.lm.bin” y “es-es” a la dirección donde se encuentra el modelo adhiriendole el achivo “es.dict”

En mi caso los archivos quedan de la siguiente manera:

Fig1. Dirección y archivos para modelo en Español

Ahora si estamos listos para probar nuestro Script, abrimos atom y copiamos el siguiente Script, se lo pueden descargar de Github:

https://github.com/richiprieto/SpeechRecognition/tree/master

import os
from pocketsphinx import LiveSpeech, get_model_path
model_path = get_model_path()
print(model_path)
speech = LiveSpeech(
verbose=False,
sampling_rate=16000,
buffer_size=2048,
no_search=False,
full_utt=False,
hmm= os.path.join(model_path, 'es-es'),
lm= os.path.join(model_path, 'es-20k.lm.bin'),
dict= os.path.join(model_path, 'es.dict')
)
for phrase in speech:
print(phrase)

El resultado debe ser similar al siguiente video:

Esperamos que haya sido de su agrado.

Att: EÓN

Bibliografia

[1]https://web.stanford.edu/~jurafsky/slp3/9.pdf

[2]http://mlg.eng.cam.ac.uk/zoubin/papers/ijprai.pdf

 

One thought on “Reconocimiento de voz (tiempo real) en idioma español con PocketSphinx”

  1. Gracias por el aporte, me sirvio mucho para desarrollar un proyecto

Comments are closed.