Probando AIY Voice Kit v2 - Google Assistant con Raspberry Pi Zero

Artificial Intelligence Do It Yourself - Voice kit, proyecto para crear un Asistente de Google con una Raspberry Pi Zero y un Voice bonnet. Y no sólo eso: experimentamos un poco más y vemos más posibilidades, como controlar un motor servo mediante voz.\nVersión 2 del kit, con Raspberry Pi Zero. Música por internia.

Hola, soy Anonymous Hacker, estoy aquí para presentar un vídeo muy interesante sobre el aiy Voice Kit, esta cajita que veis aquí y está hablando. Este es sin duda mi vídeo favorito, y estoy seguro de que le darás a like antes de que vaya por la mitad. Bueno, te dejo con Virtus Dante.

Un saludo para ti también, Anonymous. Qué tío. Bueno, sí, hoy os traigo el Artificial Intelligence Voice Kit, un do it yourself (hazlo tú mismo), made by you with google (hecho por ti con Google). ¿Por qué con Google? Porque nos va a permitir construir un google Assistant, un Asistente de google al que le podremos hacer preguntas y él nos responderá a su manera, muy divertido. Sí, sin duda muy chulo, yo los 3-4 días que me he tirado haciendo cosas con él me lo he pasado muy bien.

Además, son muchas cositas las que se practican, yo incluso me he tenido que hacer una chuletita para poder seguir el vídeo. Y algunas de esas cositas son de nivel medio, incluso avanzado, así que lo vamos a pasar bien ¿eh?

Bueno, ¿y cómo ha ido el proyecto? Pues ha ido muy bien, lo hemos completado con éxito. Esto ha sido gracias a seguir la guía que viene en la página web, muy bien explicado, aquí la tenemos, y como veis está en inglés, eso sí, todo en inglés, tenéis que manejar el inglés bien (para leer no es problema, para hablar es otra cosa ¿no? pero bueno). Y aquí veis que está todo muy bien explicado.

¿Qué hemos tenido que hacer? Hemos tenido que tostar la SD, esto es, grabar en la tarjeta de memoria SD el sistema operativo Raspbian, una imagen específica para este proyecto, que tiene preinstalado el Voice Bonnet, el hat que va sobre la raspberry para el sonido, y que contiene las librerías y el código fuente de los ejemplos que vamos a utilizar. También hemos tenido que montar la caja.

No es un cubo de Rubik, es una caja para el Voice Kit. Y ha sido fácil gracias a las instrucciones, vais a ver, fijaros las fotos, todo muy bien explicado, fácil, fácil, esta parte fácil también. Ha habido que conectar a la wifi nuestra raspberry Zero, lo cual es fácil, no es una cosa nada del otro mundo, y ha habido que habilitar y configurar el google assistant API en la google Cloud Console, y ésto aquí ya es terreno pantanoso, porque son cosas que, si no sigues la guía y te las explican bien, si no las han visto nunca, por ti mismo es difícil de hacerlo, porque no es nada intuitivo la interfaz y todo lo que tienes que hacer descubrirlo por ti mismo sería realmente difícil, así que tienes que hacerlo con ayuda. Y aquí, tenía también, seguíamos, la ayuda para completar ese paso.

Por último, también tuvimos que autorizar la aplicación para que acceda a nuestra cuenta de google y poder utilizar la API del google assistant y que se comunique con nosotros, claro, tiene que entender lo que decimos y darnos una respuesta. ¿Y cuál es el resultado? Bueno, pues aquí lo tenemos, la cajita del Asistente de Google, vamos a ver un poquito cómo funciona... Hola, ¿qué tal? Muy bien, gracias.

Me gustaría tomar un poco de cerveza.

Lo siento, no te he entendido. Quiero pedir cerveza y pizza.

Aquí tienes restaurantes cerca. El primero es la pizzería Stromboli en la calle Pescadores 30, Isla Cristina. El segundo es la Pasta Gansa, en calle Plaza La Lota, en 8, Ayamonte. El tercero es el restaurante Casa Barberi, en la Plaza de la Coronación 13, Ayamonte. Creo que me ha geolocalizado un poco alejado de donde yo estoy realmente, pero bueno.

Yo ya lo tengo montada, así que lo que voy a hacer es enseñaros un poco cómo es la caja, y abrirla para que la veáis por dentro. Ahí tenéis los cables del botón.

Ahí vamos a ver el altavoz, y abajo está el Voice Bonnet con las raspberry Pi Zero. Más sencillo no puede ser. El montaje de los cables, pues con los pines, súper sencillo, no hay que soltar nada, todo esto te viene para meterlo directamente, se queda perfectamente encajado.

A lo mejor lo más complicado es ahora meter los cables aquí, pero bueno, tampoco es nada del otro mundo.

Queda cerrada y, como veis, tengo al aire los puertos. El GPIO, el HDMI, el USB es el Data, el Power para alimentarla, Audio es una salida de auriculares.

Ahí ese agujero nos sirve para ver la luz de dentro de la raspberry si está encendida, si está funcionando.

El altavoz. El botón para interactuar.

Y aquí tenemos el acceso a la SD card.

Muy chulo ¿verdad? Bueno, pues cuando ya tenemos nuestra cajita con la SD tostada dentro, ya la podemos conectar a alimentación para que la encendamos, y el siguiente paso sería conectarla a la wifi. Hay dos formas de hacerlo, una es mediante una aplicación para el smartphone, ahí la tenemos, se llama google aiy Projects, y mediante esta aplicación es muy sencillo, es igual que otras aplicaciones que existen para conectar a wifi dispositivos inteligentes, como enchufes y cosas así, pues ésta está específicamente hecha para ayudar a conectar a la wifi a nuestro Voice Kit.

Y la otra forma de conectar a la wifi es, pues conectando nuestra raspberry Pi a un monitor y accedemos al escritorio del Raspbian y desde ahí es configurarlo. Mucho ojito con esto, porque nos va a salir el asistente de configuración inicial del Raspbian y hay un momento que nos va a preguntar, nos va a pedir que actualizamos el software, y esto no lo debemos hacer, no, porque nos jodería el Voice Kit, se va a perder la instalación del Voice Bonnet y nos lo va a fastidiar todo. Así que no le deis a actualizar el software del Raspbian. De igual manera, desde consola no hagáis apt-get update ni apt-get upgrade ¿De acuerdo, amigos, eh? No actualizar el software del Raspbian. ¿Por qué me da la opción de conectar mediante la app, cuando podría hacerlo directamente desde el escritorio de Raspbian? Bueno, pues porque realmente, para llevar a cabo el proyecto, no necesito entrar, no es un imprescindible, entrar en ningún momento al escritorio del Raspbian, simplemente voy a conectarme por SSH a la raspberry y desde ahí voy a poder ejecutar los comandos y voy a poder lanzar los programas de ejemplo, voy a poder incluso modificarlos, y probar el Voice Kit. No obstante, yo sí he entrado por escritorio al Raspbian del voice kit para ver cómo era, para ver qué cosas tenía, y, bueno, lo veremos ahora después un poco.

Y qué os parece si vamos haciendo cositas... Bueno, primero os quería enseñar lo que trae el kit, es la caja y todo lo que lleva dentro, ya la hemos abierto antes y hemos visto un poco, y también trae el cable, el cable para la alimentación por USB, pero no trae el cargador. Nos servirá, y será imprescindible que tengamos alguno, cualquier cargador de estos, como este que es de carga rápida, y puede ser el cargador de cualquier smartphone que tengamos. Es por esto por lo que no lo trae, así reducen costes, y dan por hecho que todos nosotros tenemos un smartphone y, por tanto, un cargador para poder utilizar el Voice Kit. Lo voy a ir preparando...

Bien, pero además, si queremos conectarlo al monitor, pues lo que trae es un puerto mini HDMI, y si tenemos un cable HDMI normal, pues necesitaremos un adaptador de HDMI normal a mini HDMI.

Y si necesitamos conectarle algún dispositivo USB, como lo que tiene aquí es un mini USB, así lo convierto en un puerto USB normal. Y esto es un teclado, un teclado inalámbrico, también para utilizarlo como ratón, como mouse pad, que va por bluetooth y conectado al USB. Por último, voy a conectar el HDMI y la alimentación. En cuanto conecto la alimentación, pues va a funcionar, y lo tengo preparado para que, en cuanto arranque, se ejecute el programa del google Assistant, y lo sabremos porque se va a encender el piloto del botón. La raspberry Pî Zero tarda más en arrancar, es menos potente, no sé si tenía medio giga de RAM. Bueno ya ha arrancado, y ahora vamos a probarlo.

Hola ¿qué tal? ¿qué tiempo hace hoy en Granada?

Hoy en Granada va a estar parcialmente nublado.

Se prevé una temperatura máxima de 65 y una mínima de 39. Hay 60 con cielos soleados.

Hasta luegooo, Lucaaas.

Hola, pecador de la pradera, nacido después de los dolores. Por la gloria de mi madre, dime fistro pecador ¿cómo te puedo ayudar? Bueno, esto es para morirse ¿no? El google assistant lo que me dice.

Qué graciosa eres, me has alegrado el día, muchas gracias.

¿Donde se resguardan los muñecos de nieve en verano? En la nube.

Madre mía, encima con cachondeo. Bueno, vamos a pasar a ver el escritorio, esta es nuestra raspberry Pi Zero del Voice Kit. Bueno, aquí veis el fondo de escritorio nos lo han personalizado con esto de Artificial Intelligence Yourself projects. Estos archivos aquí son ejecutables para comprobar el audio, comprobar el funcionamiento del cloud, comprobar la wifi, aquí tenemos un programita para configurar el sonido. Vais a ver que aquí todas las cosas tardan en cargar.

Ahí está. Dispositivo de salida speaker, grabación, reproducción,...

y ahora voy a lanzar el editor de python y vamos a cargar uno de los ejemplos que vienen de código para hacer con el Voice Kit. Tarda en cargar, veis. Ahí lo tenemos. Este es el ejemplo del voice recorder, que es un programita que lo que hace es que espera que le demos al botón, cuando le damos empieza a grabar, cuando le volvemos a dar para la grabación, y repite, vamos repite, reproduce lo que haya grabado, nuestra propia voz. Veis, pulsa el botón para empezar a grabar...

Y ahora voy a lanzar el programa de la grabadora.

Ahí, veis. "Press button to start recording", le doy...

Hola ¿qué tal? Soy Virtus Dante.

Y ahora le doy para que lo reproduzca.

"Hola ¿qué tal? Soy Virtus Dante". Bueno, la reproducción, el sonido lo graba un poquito mal, pero era un ejemplo ¿no? Y como veis el programita pues es muy sencillo, aquí, programita en python, muy sencillo.

Bien, esto es interactuando con la raspberry Pi del voice kit desde el propio escritorio, la interfaz del propio de escritorio de la Raspberry, del Raspbian, pero vamos a hacerlo ahora por SSH. Vamos a volver al PC y vamos a conectar por SSH al Voice Kit, y desde ahí vamos a utilizar por consola, por el terminal, vamos a darle todos los comandos y vamos a probar más cositas que se pueden hacer ¿eh?

Bien, la guía, el tutorial de la página web que seguimos para realizar el Voice Kit, el proyecto del Voice Kit, nos recomienda utilizar Chrome con la extensión Secure Shell Extension para conectar por SSH a la raspberry Pi del Voice Kit, y trabajar con ella por el terminal, pero yo voy a utilizar Putty, que es un programita, un ejecutable, muy sencillo para Windows que me va a abrir un terminal y me voy a conectar con la raspberry Pi.

Aquí veis, vamos a abrir...

Aquí lo tenemos.

Usuario y contraseña.

Bien, ya estamos conectados. Aquí, pues esto es un linux, puedo hacer un listado de carpetas y archivos, y vemos los que hay del Artificial Intelligent Yourself, son los que nos vienen con esta distribución de Raspbian específicas para este proyecto. Vamos a probar, por ejemplo, un programita que hay para sintetizar voz, y que va a decir el texto que yo le diga aquí, por ejemplo "hello world".

"Hello world". Habéis visto que la pronunciación es, bueno, regular. Vamos a decirle que diga algo más...

"Hello world, I am a machine". Lo que os quería decir, es una síntesis de voz que se hace desde la propia máquina, con este programita no estoy consultando, no estoy utilizando ningún servicio de Google, ni ninguna API, y esa síntesis pues tiene una calidad un poco peor que la que obtengo con el google Text to Speech API, que es una API que yo de paso un texto un texto escrito, una cadena de texto, y me devuelve el audio de esa cadena de texto leída. Y me lo hace muy bien, y poder elegir voz y tal. ¿Qué pasa? Que esto es de pago, y este programita pues, como está en la propia máquina, no está consultando nada, es libre. Por defecto me habla en inglés, está preparado para inglés. Si yo quiero que, que diga algo en español, tengo, lo primero de todo, lo que quiero que diga en español y le tengo que decir, especificar, el idioma. "Hola, soy una máquina". También tiene parámetros para cambiarle el pitch, la velocidad e incluso el volumen. Esto es el programita con el que he hecho la introducción con la voz de Anonymous. "Hola, soy Anonymous Hacker". Bien, como he dicho el google Text to Speech API me saca una voz mucho mejor, mucho más natural, como la que me saca el Asistente de Google, pero es de pago, esa API es de pago, muy barata, pero algo me van a ir cobrando. Entonces ¿qué pasa? Pues, para según qué proyecto te puede interesar utilizar una mejor voz, o a lo mejor te basta con este tipo de síntesis de voz, que se conoce desde hace mucho, pero que no te da esa calidad. No vas a depender de una conexión de Internet, ni vas a depender de un servicio de pago. Y algunos a lo mejor nos estáis preguntando por qué el Text to Speech es de pago, mientras que el google Assistant, que es otra API, no es de pago.

Es muy sencillo, porque mediante google assistant google te va a ir conociendo y esa información no se paga con nada, es una información que, tú usas el google Assistant, y google chupa, chupa, chupa, y va cogiendo información sobre nosotros, qué le vamos a hacer, a cambio tenemos el servicio que nos ofrece, y la verdad es que está muy bien, pero ya cada uno hará lo que quiera. Y el Text to Speech es de pago porque yo a lo mejor quiero que diga cosas que no tienen nada que ver conmigo, no van a ser cosas de utilidad para Google, son textos que, a lo mejor, quiero que mi programa diga, y son textos que a google no le interesan, no dan información del usuario. Entonces es una herramienta útil para aplicaciones que queramos que tengan una una voz clara y más humana que la cajita ésta como hemos visto antes, y entonces pues es un servicio de pago. Bien, vamos a ver ahora un programita que nos va a permitir darle a nuestro voice kit instrucciones por comandos de voz, vamos a poder decir que haga algo, nosotros se lo decimos hablando y él lo va a hacer. Vamos a ver el programa, aquío lo tenemos que tener, el cloud speech demo. Este programita sí utiliza una API de Google, que es la Speech to Text API, lo contrario que comentaba antes, la Text to Speech es que un texto escrito google me lo pasa a sonido, y el Speech to Text es que lo que yo hablo me lo va a convertir en texto escrito, y entonces yo con este texto escrito ya lo puedo manejar en el programa, comparar si me ha dicho lo que yo espero o no. Vamos a ver el programa, el código, con el editor de texto aquí por consola, el Nano.

Bueno, este es el código del programa, el código fuente.

Está en python también, y fijaros aquí, el programa original venía con las instrucciones de, estas cuatro instrucciones en inglés, y yo lo he preparado para las mismas instrucciones en español, y además le he añadido cuatro instrucciones más, una repite conmigo, mover un motor, sí, sí, un motor, porque ahora veréis que conectado un motor al Voice Kit. Y aquí, aquí es donde me procesa las instrucciones, los comandos. Veis, están ahí los comandos escritos, en cadenas literales, "turn on the light" (enciende la luz) esto se lo añadí yo, esto de "enciende la luz", "apaga la luz", "parpadea la luz", y él simplemente me va a buscar esta cadena en lo que el servicio de google me ha dicho que ha entendido al escuchar mi voz.

Aquí es donde yo le he añadido los comandos para mover un servo, un motor, que lo vamos a ver ahora.

Veis, aquí en el puesto GPIO de la raspberry Pi Zero le he conectado unos cablecitos que me van a este motor, un servomotor, es muy básico, lo más básico que hay por ahí.

Y entonces yo, ahora cuando ejecute el programa, vamos a probar los comandos.

Ahí tenemos el programa lanzado, me dice que está escuchando.

Veis que me dice lo que ha entendido, lo que he dicho "Aitana se programa lanzado".

Me dice las cosas que puedo decir, y sigue escuchando, el programa.

Lo pongo para que lo veáis. Y ahora, si yo le digo por ejemplo "enciende la luz", veis, se ha encendido.

Se ha entendido, ha entendido que he dicho "enciende la luz" y se ha encendido. Si le digo "apaga la luz", me apaga la luz, y si le digo "parpadea la luz"...

Tengo que decirle el comando como una frase suelta.

"apaga la luz" Y ahora, el motorcito, "mueve el motor al máximo".

"mueve el motor al mínimo" Muy chulo. Pues imaginaros la cantidad de cosas que se puede hacer con esto ¿no? Una caja que puede hablar, que puede mover motores, que enciende cosas... pues genial. Vamos a ver, vamos a apagar el programita ya.

Entonces, desde las aplicaciones con python vamos a poder interactuar con la raspberry Pi, con el Voice Kit, y hacer nuestros programitas y nuestras cositas, trastear a un poquito... Hay mucho código en github de referencia, que podéis encontrar ejemplo, y se hace todo manejando con sencillez un SDK que está disponible para interactuar con los servicios de Google, con el Voice Bonnet, con el dispositivo... Todo preparado, muy fácil, habéis visto que los programas son cortitos realmente, porque utilizamos SDK, que es una gran librería donde está todo hecho, todo lo gordo ya hecho, y nosotros sólo necesitamos utilizarlo desde nuestro programa, con comandos, muy fácil.

Pues vuestra imaginación es el límite. Si tenéis la posibilidad de controlar dispositivos, de que la máquina hable, de que la máquina escuche, de utilizar el Asistente de Google... Pues eso, la imaginación es el límite. Una cosita sí quería apuntar: habéis visto que a este asistente no le digo "ok google", no funciona así. Originalmente venía con un ejemplo, un programita que funcionaba como el tradicional "ok google", esperando a que le diga "ok google" y lo que quiero hacer, pero ese programa de ejemplo cuando lo intentas ejecutar ahora te dice que está obsoleto y no funciona correctamente. Es una pena, porque hubiese sido también chulo probarlo, decir "ok google dime qué puedo hacer", pero en fin. Bueno, pues amigos, hemos llegado al final del vídeo. Si os ha gustado lo que habéis visto, las pruebas que hemos hecho con el Voice Kit, pues un like y en los comentarios me podéis hacer preguntas, consultas, comentar lo que queráis, y ¡hasta la próxima!