Skip to content

Control por voz con una Raspberry Pi 3 - Voice Control with a Raspberry Pi 3

License

Notifications You must be signed in to change notification settings

ejmalfatti/VoiceControl-RaspberryPi

Repository files navigation

Control por voz con una Raspberry Pi3

Me compré una Raspberry Pi 3 y para darle solo un uso tipo sysadmin, había algo más que podría hacer y que mis conocimientos no llegan a cubrir todo.

Pero decidí hacer una prueba y compré un relé optoacoplado y comencé a jugar con eso. Hasta que surgío, a raíz de algunos videos que vi en Internet, la idea de controlar el encendido por voz de una luz o cualquier otra "cosa" conectada al relé.

Para ello, lo mejor que vi es utilizar CMU Sphinx para la decodificación de la voz, es decir, interpretar lo que capta el microfóno y decodificarlo a texto, speech to text.

El leguaje de programación que más conozco es Python por ende la programación está hecha en ese idioma.

Utilicé también los modelos acústicos en español del proyecto VoxForge. Los diccionarios los armé yo, siguiendo la guia de la comunidad en inglés y algunos diccionarios en español, pude armar los míos.

La idea es que CMU Sphinx esté escuchando continuamente y que, mediante Python, al detectar las palabras "mágicas" ejecute ciertas acciones.

He visto otros proyectos un poco complicado en su programación, este es más sencillo creo yo, y se acerca más a lo que necesitaba.

Funcionamiento

Primero hay que ejecutar el archivo pocketsphinx_continuous.py y luego hay que ejecutar el segundo archivo llamado domotica.py.

Básicamente el primero ejecuta en segundo plano pocketsphinx_continuous que estará escuchando continuamente y guardando en el archivo capture.txt las palabras que detecta si se encuentra en el diccionario y el otro archivo estará leyendo continuamnete el archivo capture.txt y de acuerdo a qué palabra contenga, realizará la acción de encender o apagar el relé.

Materiales

Relé Optoacoplado:

Relé Optoacoplado:

Raspberry Pi 3:

Smiley face

Sistema Operativo

También se puede utilizar la versión lite, que no contiene interfáz gráfica.

Depedencia

Paquetes necesario para el funcionamiento:

  • build-essential
  • checkinstall
  • python-dev
  • swig
  • bison
  • libasound2-dev
  • python-dev

Si hay algún error con algunas librerías, es porque no las encuentra. Si ese es el caso, realizar lo siguiente:

export LD_LIBRARY_PATH=/usr/local/lib

Compilación CMU Sphinx

Para el reconocimiento de voz, necesitamos de compilar primero sphinxbase-5prealpha y luego pocketsphinx-5prealpha.

Información adicional

Dentro del direcotrio sphinxbase-5prealpha:

./configure --enable-fixed
make
sudo make install

Dentro del directorio pocketsphinx-5prealpha:

./configure
make
sudo make install

Armado del diccionario

Para armar el diccionario, debemos crear un archivo de texto que contenga cada palabra que queremos utilizar, por ejemplo, el archivo llamado diccionario.txt:

encender luz
apagar luz

Y ese archivo lo subimos a la siguiente web: LM-TOOLS Generará varios archivos y decargamos el archivo comprimido.

Smiley face

NOTA: Tener en cuenta que ese sitio es para armar el diccionario, pero en idioma inglés. Yo lo use de base y después lo modifique mirando los diccionarios en español de VoxForge e ir probando.

Prueba de pocketsphinx

Para probar si funciona correctamente, ejecutamos la siguiente instrucciones en un terminal:

pocketsphinx_continuous -hmm ../voxforge-es-0.2/model_parameters/voxforge_es_sphinx.cd_ptm_3000/ -lm 5298.lm -dict 5298.dic -jsgf 5298.jsgf > capture.txt -samprate 16000/8000/48000 -inmic yes

Donde 5298.lm y 5298.dic, son los diccionarios que generamos en la web LM-TOOLS. La opción -hmm son los modelos acusticos de VoxForge. Y cada vez que digamos la palabra encender luz o apagar luz se irá guardando en un archivo capture.txt.

En el código Python se leerá ese archivo y si contine tal palabra hace tal o cual instrucción.

Video demostración

[Video]

About

Control por voz con una Raspberry Pi 3 - Voice Control with a Raspberry Pi 3

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published