Reconocimiento de voz de Google

Mucho tiempo sin actualizar el blog, malo, malo.

El pasado sábado 22 de Octubre se celebró la segunda reunión del grupo de Arduino de Castellón. Poca afluencia de personal pero muy buen nivel, hablamos de lo que haremos en los próximos meses y nos peleamos con unos Xbees para configurarlos (lo cual tiene más complicación de la que yo me esperaba).

Uno de los miembros del grupo, José Luis Aracil, compartió con nosotros una pequeña joya de su creación con muchas posibilidades. Os cuento, resulta que Google ha lanzado un sistema de reconocimiento de voz para integrarla en su Chrome y en los dispositivos Android. Google no libera, pero comparte, así que el gigante de Internet ha lanzado una API pública para que cualquiera pueda hacer uso de este servicio e integrarlo en sus aplicaciones web, podéis probarlo aquí pero solo funciona con Chrome.

Bueno, pues Pepe nos enseñó (y dio permiso para publicarlo) un pequeño script en Bash con el que podemos hacer uso de esta aplicación directamente desde un terminal y abre la puerta al reconocimiento de voz en cualquier tipo de proyecto. Podéis descargarlo, descomprimirlo y editarlo con gedit para ver lo que tiene dentro.

Básicamente lo que hace el script es usar arecord, un componente de ALSA incluido en la mayoría de distribuciones Linux, para grabar un fichero de sonido en formato wav. Con el comando sox se transforma el fichero wav en un flac, formato que utiliza Google. Sox puede que no lo tengáis instalado, basta con hacer un:

1
sudo apt-get install sox

Luego con wget se manda el fichero flac a google y a esperar la respuesta, solo tarda unos segundos.

Para ejecutar el script en la consola basta con darle permiso de ejecución y  hacer:

1
./testvr.sh

Ahora tenemos 5 segundos para decir algo por el micrófono del ordenador, por ejemplo “hola holita hola”, y en apenas 2 segundos aparece esto:

1
2
[&lt;=&gt;                                    ] 0           --.-K/s              {"status":0,"id":"d29dbb45ecb8b6ebc6fc796c07483870-1","hypotheses":[{"utterance":"<span style="color: #ff0000;">hola holita hola</span>","confidence":0.84131694}]}
[ &lt;=&gt;                                   ] 127         --.-K/s   en 0s

Una extraña cadena de caracteres aparentemente incomprensible, pero fijaos en la parte que he remarcado en rojo, ahí aparece lo que decimos.

He hecho pruebas y reconoce muy bien palabras y números. Es muy preciso y no necesita ningún tipo de entrenamiento por que se basa, además de en reconocimiento de fonemas, en términos de busqueda de Google, así que las palabras que normalmente se pasan por el buscador se reconocen a la perfección. Tras la expresión “utterance”, que es lo que le dictamos, viene la expresión “confidence” que viene a ser un índice de exactitud en un rango de 0 a 1, en el ejemplo mostrado es de 0.841 o un 84’1% de exactitud, lo que también nos da pie a hacer filtrados.

Tomando este script como punto de partida y utilizando Processing podemos enviar ordenes a nuestro Arduino. ¿Quien será el primero en hacer una aplicación de prueba?

 

 

P.D.: El script solo funciona en Linux, yo lo he probado en Ubuntu. Los que usáis güindous… ¿que estáis esperando para cambiar?.

4 comentarios en “Reconocimiento de voz de Google”

  1. Lo he probado en mac y funciona perfectamente. Alucinante. Reconoce desde un “buenos días” hasta frases en euskera. Incluso he leido con voz baja un trozo de un libro y lo ha escrito perfectamente. Y eso que estoy acatarrado y tengo voz de mocos!

    Interesante y apasionante la batalla por el control por voz entre Siri y Google

  2. Ruferto, ¿cómo te las has apañado para utilizarlo en el mac?.. he conseguido Sox pero no doy con arecord ..

    1. vale, me respondo a mi mismo, con el propio sox se puede grabar y todo (que tonto jeje) .. pues si, funciona perfectamente, listo para implementar en cualquier app, cosa con la que voy a ponerme ahora … muchísimas gracias por la info 😀

Los comentarios están cerrados.