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”
amos el siguiente Script, se lo pueden descargar de Github:
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: