¿Desea construir su propio centro de hogar inteligente controlado por voz?  ¡Aquí se explica cómo usar el Asistente de Google con una Raspberry Pi!

Cómo construir un asistente de Google Home DIY con Raspberry Pi

Anuncio Los asistentes controlados por voz se han convertido rápidamente en un lugar común. Muchas casas tienen un Alexa o Google Home que controla todo, desde la iluminación hasta los medios e incluso el cronometraje. La tecnología con la que se ejecutan estos dispositivos está disponible, al menos en parte, para todos. El

Anuncio

Los asistentes controlados por voz se han convertido rápidamente en un lugar común. Muchas casas tienen un Alexa o Google Home que controla todo, desde la iluminación hasta los medios e incluso el cronometraje.

La tecnología con la que se ejecutan estos dispositivos está disponible, al menos en parte, para todos. El SDK del Asistente de Google te permite usar el servicio en tus propios dispositivos. Este tutorial cubre cómo configurar el Asistente de Google en su Raspberry Pi y activar por voz un LED a través de los pines GPIO.

Hardware necesario para un asistente de inicio Raspberry Pi

Raspberry Pi Asistente de Google Equipo requerido

Necesitará:

  1. Raspberry Pi con una nueva instalación de Raspbian en la tarjeta SD Cómo instalar un sistema operativo en una Raspberry Pi Cómo instalar un sistema operativo en una Raspberry Pi Aquí le mostramos cómo instalar un sistema operativo en su Raspberry Pi y cómo clonar su configuración perfecta para una rápida recuperación de desastres. Lee mas .
  2. Cámara web o micrófono USB.
  3. Altavoz externo.
  4. Circuito desde el tutorial de Pi LED Cómo programar su Raspberry Pi para controlar luces LED Cómo programar su Raspberry Pi para controlar luces LED ¿Busca un proyecto fácil de Raspberry Pi para comenzar con la codificación y la electrónica? ¡Intenta conectar algunos LED y codificarlos para encenderlos y apagarlos! Leer más (opcional)
  5. Un navegador conectado a su cuenta de Google.

Nota: El equipo para este tutorial puede variar un poco. Utilicé una cámara web USB de repuesto únicamente para su micrófono. Cualquier cámara web o micrófono compatible debería funcionar bien, y hay una extensa lista de dispositivos compatibles con Pi para ayudar.

Además, estoy usando la salida de 3, 5 mm para audio. HDMI y otras fuentes de salida también funcionarán, aunque requerirá modificaciones en la configuración de sonido a continuación.

Conecte la cámara web y el altavoz USB, y configure el circuito LED si lo está utilizando.

Configurando el sonido

Este tutorial se puede seguir directamente en el Pi o mediante una conexión SSH en el Pi.

Ambas formas comienzan en la terminal, para verificar la configuración de sonido. Use los comandos arecord -l y aplay -l para enumerar los dispositivos disponibles.

Verifique los dispositivos de reproducción y grabación

La imagen de arriba muestra la cámara web USB como tarjeta 1 y dispositivo 0 . Tome nota de los números de tarjeta y dispositivo para la salida de micrófono y altavoz.

Ahora, asegurándose de estar en el directorio / home / pi, cree un nuevo archivo y ábralo en nano:

 sudo nano .asoundrc 

El contenido de este directorio diferirá según los números de tarjeta y dispositivo que esté utilizando. Aquí es donde puede elegir favorecer la salida HDMI en lugar de 3.5 mm si lo desea.

archivo de configuración asoundrec para micrófono y altavoz

Cuando haya ingresado su versión del código anterior, presione Ctrl + X para guardar y salir.

Pruebe su configuración grabando y reproduciendo un breve clip:

Haga una grabación de prueba para verificar su configuración

Paso opcional: si desea cambiar el volumen de entrada de su micrófono, abra alsamixer y presione F6 para alternar entre dispositivos.

¡Eso es! El sonido está configurado.

Creando el Proyecto Google

Abra el navegador de Pi, alternativamente, si está conectado a través de SSH, abra un navegador localmente. Navegue a la Consola de acción de Google y haga clic en Nuevo proyecto .

Crea un nuevo proyecto de Google

Esto puede tomar algunos minutos. Cuando termine, deje la ventana activa y abra una nueva pestaña; llegaremos a esto en un momento.

Habilitar la API de Google Assistant

Hay algunos ajustes en línea que deberá realizar para continuar. Vaya al sitio web de la API de Google Assistant y haga clic en Habilitar .

Habilitar la API de Google Assistant

El proyecto también requiere permisos de actividad. Dirígete a tu panel de Control de actividad y asegúrate de que las siguientes actividades estén activadas:

  • Actividad web y de aplicaciones (incluida la casilla de verificación Historial de Chrome)
  • Información del dispositivo
  • Actividad de voz y audio

Cambiar la configuración de la actividad de Google

Ahora puede pasar a registrar el dispositivo.

Registrar su Raspberry Pi

De vuelta en la Consola de acción, seleccione Registro del dispositivo en el panel izquierdo. En Producto, cree un nombre fácil de recordar para su dispositivo. El nombre del fabricante no es importante (pero debe estar allí) y seleccione Automático para el tipo de dispositivo.

Registre su Pi como modelo

Haga clic en Registrar modelo y, en la siguiente pantalla, haga clic en Descargar credenciales de OAuth 2.0 . Esto descarga un archivo JSON a su computadora. Si no está familiarizado con los archivos JSON, no se preocupe, pero aprenda a usar JSON JSON Python Parsing: una guía simple JSON Python Parsing: una guía simple Hay bibliotecas y kits de herramientas disponibles para analizar y generar JSON desde casi cualquier idioma y ambiente. Este artículo se concentra en los métodos y problemas derivados del análisis JSON python. ¡Leer más vale la pena hacerlo para el futuro!

La guía oficial de Google recomienda mover el archivo a / home / pi, así que abra el administrador de archivos y hágalo ahora.

Paso adicional para usuarios de SSH:

Si está utilizando SSH, habrá descargado el archivo JSON en su máquina local en lugar de Pi. Para transferirlo, abra una ventana de terminal separada sin conexión SSH. Desde esta ventana, copie sobre el archivo JSON secreto del cliente con este comando:

 scp ~/Downloads/client_secret_client-id.json :/home/pi/ 

Reemplace "raspberry-pi-ip-address" con la dirección IP de su Pi, y no olvide los dos puntos antes de la ruta. Si descargó el archivo JSON a otra ubicación, modifique su ruta local para reflejar esto. Ingrese su contraseña cuando se le solicite, y el archivo se copiará en el directorio de inicio de Pi.

Copie la ID del cliente secreto al PI

Vuelva al terminal SSH y navegue a / home / pi . Ingrese ls -l para listar los archivos en el directorio. Debería ver el archivo JSON secreto del cliente transferido.

Instalar el SDK

Google recomienda trabajar en un entorno virtual de Python. Cree un nuevo entorno virtual llamado env .

Si nunca antes ha hecho esto, este tutorial lo ayudará a aprender cómo usar los entornos virtuales de Python.

Instale las últimas versiones de Pip, Setuptools y Wheel y active su entorno virtual:

 env/bin/python -m pip install --upgrade pip setuptools wheel source env/bin/activate 

El Asistente de Google tiene algunas dependencias que debe instalar ahora en el entorno virtual.

 sudo apt-get install portaudio19-dev libffi-dev libssl-dev libmpg123-dev 

Finalmente, instale la herramienta SDK, Muestras y OAuth de Google Assistant.

 python -m pip install --upgrade google-assistant-library python -m pip install --upgrade google-assistant-sdk[samples] python -m pip install --upgrade google-auth-oauthlib[tool] 

Eso es todo lo necesario para comenzar a funcionar. Si alguna de las instalaciones falla, verifique la ortografía y el espacio a fondo.

Autenticando la Raspberry Pi

Use google-auth-oauthlib [tool] con el archivo JSON de credenciales descargado anteriormente para autenticar su Raspberry Pi.

 google-oauthlib-tool --scope https://www.googleapis.com/auth/assistant-sdk-prototype \ --scope https://www.googleapis.com/auth/gcm \ --save --headless --client-secrets /home/pi/YOUR_CLIENT_SECRET_ID.json 

Deberá reemplazar YOUR_CLIENT_SECRET_ID con el archivo descargado, por lo que vale la pena copiar primero el nombre del archivo. Esta identificación de cliente debe ser correcta. ¡No cambie el nombre del archivo!

Debería recibir un mensaje con un enlace, pidiéndole que pegue un código de autorización.

Generando el enlace de Autorización desde la línea de comando.

Al hacer clic en el enlace, se abre el navegador. Se le pedirá que habilite el dispositivo en su cuenta de Google. Copie el código de autorización que sigue y péguelo de nuevo en la ventana de su terminal.

Debería recibir una confirmación que indique Credenciales guardadas: / home / pi ..., lo que significa que el Pi se ha autorizado correctamente con su cuenta de Google.

Probándolo

Ahora que todo está en su lugar, es hora de probar su Asistente de Google Pi. Ejecute el asistente con este comando:

 googlesamples-assistant-hotword --project-id my-dev-project --device-model-id my-model 

Deberá reemplazar my-dev-project con su ID de proyecto (que se encuentra en la rueda dentada de Configuración de la Consola de acción). Su id. De modelo de dispositivo figura en la sección Registro de dispositivos de la Consola de acción.

¡Pruébalo! Di "OK Google" y haz una pregunta. Puede ver la salida del programa en el terminal mientras escucha la respuesta:

Salida de terminal para el Asistente de Google

¡Eso es! El Asistente de Google ahora se está ejecutando en su Raspberry Pi. Tenga en cuenta que si el volumen de salida es un poco bajo, puede cambiarlo diciendo "Hola Google, suba su volumen al 80%".

Bonus: GPIO activado por voz

Es posible controlar las luces con un Arduino y Siri, pero hay un método más simple. Si configura un LED, puede usar el Asistente de Google para controlarlo con su voz.

Configurar el Asistente de Google para trabajar con los pines GPIO es relativamente simple, pero requiere algunos pasos adicionales. Dirígete a Google Action Console y busca tu dispositivo en Registro del dispositivo. Haga clic en él y abra el menú de rasgos:

Activar el rasgo Asistente de OnOff

Active el rasgo OnOff y haga clic en Guardar.

Ahora asegurándose de estar dentro del entorno virtual env, clone una versión del SDK a su Pi usando git:

 git clone https://github.com/googlesamples/assistant-sdk-python 

Como se trata de un entorno virtual, deberá instalar RPi.GPIO antes de continuar.

 pip install rpi.gpio 

Ahora, navegue a la carpeta que contiene el script hotword.py .

 cd assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/library 

Modificar el guión

Deberá agregar algunas líneas al script hotword.py, así que ábralo en el editor nano:

 nano hotword.py 

Debajo de las declaraciones de importación, agregue el suyo propio para RPi.GPIO.

 import RPi.GPIO as GPIO 

Busque el método process_event . En la línea 66, elimine o comente la declaración de impresión y agregue una declaración if para controlar el LED.

 #print('Do command', command, 'with params', str(params)) if command == "action.devices.commands.OnOff": if params['on']: print('---------------') print('Led turned on') print('---------------') GPIO.output(18, GPIO.HIGH) else: print('---------------') print('Led turned off') print('---------------') GPIO.output(18, GPIO.LOW) 

Esta lógica controla el LED, pero hasta ahora no está configurado para emitir. Configúrelo en la función main () antes de que se llame al método process_event.

 GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT, initial=GPIO.LOW) 

Ahora el pin GPIO está configurado para salir y se inicializa en un estado bajo. Guardar y Salir. Puede ejecutar su script modificado pasando su número de identificación de modelo (que se encuentra en la Consola de acción) como argumento.

 python hotword.py --device-model-id YOUR-MODEL-ID-HERE 

La salida del terminal es la misma que antes, y el asistente funcionará de manera estándar. Ahora, sin embargo, cuando diga "OK Google, enciéndalo" verá una nueva salida:

Mensaje de terminal que muestra la declaración de impresión "LED encendido"

Nota: La imagen de arriba se ha recortado, mostrando solo que el asistente escuchó la solicitud y la declaración impresa agregada al guión.

¡También deberías ver tu LED iluminado!

LED activado por voz.

Su propio asistente de inicio de bricolaje Raspberry Pi Google Home

Este proyecto es una buena introducción al uso de los servicios API de Google. Ahora que tiene un dispositivo Asistente de Google, pruebe algunos de los mejores comandos de Google Home La hoja de trucos de los comandos de Google Home La hoja de trucos de los comandos de Google Home Nuestra hoja de trucos de los comandos de Google Home contiene toneladas de prácticas acciones, que incluyen entretenimiento, información y automatización. Leer más: hemos visto algunos minijuegos de Google Home geniales 15 Comandos de Google Home para minijuegos y más 15 Comandos de Google Home para minijuegos y más Puede hacer muchas cosas con los comandos de Google Home. Aquí hay varios entretenidos comandos de Google Home que vale la pena probar. Lee mas .

Explore más sobre: ​​Tutoriales de proyectos de bricolaje, Asistente de Google, Luces LED, Raspberry Pi, Smart Hubs.