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

  • Gabriel Brooks
  • 0
  • 3758
  • 784
Anuncio

Los asistentes controlados por voz se han convertido rápidamente en un lugar común. Muchas casas tienen una 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 la voz de un LED a través de los pines GPIO.

Hardware requerido para un asistente de inicio Raspberry Pi

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. .
  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! (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. Usa los comandos arecord -l y aplay -l para enumerar los dispositivos disponibles.

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, asegúrate de estar en el / inicio / pi directorio, 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.

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:

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 Nuevo proyecto.

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.

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

Ahora puede pasar a registrar el dispositivo.

Registrar su Raspberry Pi

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

Hacer clic Registrar modelo, y en la siguiente pantalla haz clic Descargar OAuth 2.0 Credentials. 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. vale la pena hacer para el futuro!

La guía oficial de Google recomienda mover el archivo a / inicio / pi, abra el administrador de archivos y haga esto 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 pi @ raspberry-pi-ip-address: / home / pi /

Reemplazar “raspberry-pi-ip-address” con la dirección IP de tu Pi, y no olvides 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.

Vuelva al terminal SSH y navegue hasta / inicio / pi. Entrar ls -l para enumerar 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 entornos virtuales de Python.

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

env / bin / python -m pip install: actualizar pip setuptools fuente de rueda env / bin / activar

El Asistente de Google tiene algunas dependencias que debes 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 [herramienta] 

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

Autenticando la Raspberry Pi

Utilizar el google-auth-oauthlib [herramienta] 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.

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ías recibir una lectura de confirmación Credenciales guardadas: / home / pi ... , lo que significa que el Pi se ha autorizado con éxito 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 

Necesitará 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). Tu id-modelo-dispositivo aparece en la sección Registro de dispositivos de la Consola de acción.

¡Pruébalo! Decir “Está bien Google” y hacer una pregunta Puede ver la salida del programa en el terminal mientras escucha la respuesta:

¡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, sube tu 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:

Gire el Encendido apagado rasgo y haga clic Salvar.

Ahora asegurándome de que estás dentro del env entorno virtual, 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 hotword.py guión.

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.

importar RPi.GPIO como GPIO 

Busca el proceso_evento método. 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 encendido ') print (' --------------- ') GPIO.output (18, GPIO.HIGH) de lo contrario: print ('---------------') print ('Led apagado') print ('---------------') GPIO.output (18, GPIO.LOW) 

Esta lógica controla el LED, pero hasta ahora no está configurado para emitir. Configúralo en el principal() funcionar 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 SU-MODELO-ID-AQUÍ 

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

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!

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. - 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. .




Nadie ha comentado sobre este artículo todavía.

Sobre tecnología moderna, simple y asequible.
Tu guía en el mundo de la tecnología moderna. Aprenda a usar las tecnologías y los dispositivos que nos rodean todos los días y aprenda a descubrir cosas interesantes en Internet.