Cómo construir un asistente de inicio de Google con Raspberry Pi

Cómo construir un asistente de inicio de Google con Raspberry Pi / Bricolaje

Los asistentes controlados por voz se han convertido rápidamente en algo común. Muchas casas tienen una casa de Alexa o Google 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. Assistant SDK de Google le permite usar el servicio en sus propios dispositivos. Este tutorial explica cómo configurar el Asistente de Google en su Raspberry Pi y cómo activar la voz un LED a través de los pines GPIO.

Hardware requerido para un asistente de casa Raspberry Pi

Necesitará:

  1. Raspberry Pi con una nueva instalación de Raspbian en la tarjeta SD Cómo instalar un sistema operativo en tu Raspberry Pi Cómo instalar un sistema operativo en tu Raspberry Pi Aquí se explica cómo instalar y ejecutar un nuevo sistema operativo en tu Pi, y cómo clonar tu Configuración perfecta para una rápida recuperación de desastres. Lee mas .
  2. Cámara web USB o micrófono.
  3. Altavoz externo.
  4. Circuit from the Pi LED tutorial Cómo programar tu Raspberry Pi para controlar las luces LED Cómo programar tu Raspberry Pi para controlar las luces LED ¿Buscas un proyecto fácil de Raspberry Pi para comenzar con la codificación y la electrónica? ¡Intente conectar algunos LED y codifíquelos para encenderlos y apagarlos! Leer más (opcional)
  5. Un navegador registrado en tu cuenta de Google..

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

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

Conecte la cámara web USB y el altavoz, y configure el circuito de 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 el terminal, para comprobar 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, asegurándote de que estás en el / home / pi directorio, cree un nuevo archivo y ábralo en nano:

sudo nano .asoundrc

El contenido de este directorio variará según la tarjeta y el número de dispositivo que esté utilizando. Aquí es donde puede optar por 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 guardar y salir.

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

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 de Google

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

Esto puede tomar unos minutos. Cuando termine, deje la ventana activa y abra una nueva pestaña. En un momento lo veremos..

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íjase a su panel de control de actividades y asegúrese de que las siguientes actividades estén activadas:

  • Web y actividad de la aplicación (incluida la casilla de verificación Chrome History)
  • Información del dispositivo
  • Actividad de voz y audio

Ahora puedes pasar a registrar el dispositivo..

Registro de tu Raspberry Pi

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

Hacer clic Modelo de registro, y en la siguiente pantalla haga clic. Descargar OAuth 2.0 Credenciales. 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 Análisis de Python: una guía simple JSON Análisis de Python: una guía simple Hay bibliotecas y juegos de herramientas disponibles para analizar y generar JSON desde casi Cualquier idioma y entorno. Este artículo se concentra en los métodos y problemas que surgen del análisis de JSON python. Vale la pena leer más para el futuro.!

La guía oficial de Google recomienda mover el archivo a / home / pi, así que abre el administrador de archivos y haz esto ahora.

Paso adicional para los usuarios de SSH:

Si está utilizando SSH, habrá descargado el archivo JSON a su máquina local en lugar de a la Pi. Para transferirlo, abra una ventana de terminal separada sin conexión SSH. Desde esta ventana, copie sobre el archivo JSON secreto del cliente usando 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 del camino. 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á al directorio principal de Pi.

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

Instalando el SDK

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

Si nunca has hecho esto antes, este tutorial te 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:

instalar / bin / python -m pip pip - mejorar pip setuptools fuente de rueda env / bin / activar

Google Assistant tiene algunas dependencias que debe instalar en el entorno virtual ahora.

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

Finalmente, instale el Asistente de Google SDK, los ejemplos y la herramienta OAuth.

python -m pip instale - actualice google-assistant-library python -m pip instale --upgrade google-assistant-sdk [ejemplos] python -m pip instale --upgrade google-auth-oauthlib [herramienta] 

Eso es todo lo necesario para ponerse en marcha. Si falla alguna de las instalaciones, revise la ortografía y el espaciado a fondo.

Autentificando 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 el nombre del archivo primero. Este ID de cliente debe ser correcto. No cambies 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 siguiente código de autorización y péguelo nuevamente en la ventana de su terminal.

Deberías recibir una confirmación de lectura. Credenciales guardadas: / home / pi… , lo que significa que el Pi ha sido autorizado con éxito con su cuenta de Google.

Probándolo

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

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

Tendrá que reemplazar my-dev-project con su ID de proyecto (que se encuentra bajo la rueda dentada de configuración de la Consola de acción). Tu ID del modelo del dispositivo aparece en la sección Registro de dispositivos de la Consola de acciones.

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

¡Eso es! Google Assistant se está ejecutando en tu Raspberry Pi. Tenga en cuenta que si el volumen de salida es un poco bajo, puede cambiarlo diciendo “Hola Google, sube tu volumen hasta un 80%..”

Bono: 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 Google Assistant para que funcione con los pines GPIO es relativamente simple, pero requiere algunos pasos adicionales. Dirígete a la Consola de acción de Google y encuentra tu dispositivo en Registro de dispositivos. Haz clic en él, y abre el menú de rasgos:

Gire el Encendido apagado rasgo en y haga clic Salvar.

Ahora asegurándose de que estás dentro de la env entorno virtual, clona una versión del SDK a tu Pi usando git:

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

Dado que este es un entorno virtual, deberás instalar RPi.GPIO antes de seguir adelante.

pip instalar rpi.gpio 

Ahora, navegue a la carpeta que contiene el hotword.py guión.

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

Modificando el script

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

nano hotword.py 

Bajo las declaraciones de importación, agregue el suyo 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 instrucción if para controlar el LED.

#print ('Do command', command, 'with params', str (params)) if command == "action.devices.commands.OnOff": if params ['on']: print ('----- ---------- ') imprimir (' Led encendido ') imprimir (' --------------- ') GPIO.output (18, GPIO.HIGH) else: 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() Funciona antes de que se llame al método process_event.

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

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

python hotword.py --device-model-id SU-MODEL-ID-AQUÍ 

La salida del terminal es la misma que antes, y el asistente funcionará como estándar. Ahora sin embargo, cuando dices “OK Google, enciende” Verás una nueva salida:

Nota: La imagen de arriba ha sido recortada, mostrando solo al asistente que escucha la solicitud, y la declaración de impresión agregada al script.

Deberías ver que tu LED se enciende también!

Tu propio bricolaje Raspberry Pi Google Home Assistant

Este proyecto es una buena introducción al uso de los servicios API de Google. Modificar el código de ejemplo de Google también ayuda a aprender los conceptos básicos de Python.

Con este tutorial como base, puede vincular el Asistente PI a otros proyectos de Raspberry Pi de DIY Proyectos de Raspberry Pi para principiantes Proyectos de Raspberry Pi para principiantes Estos 10 proyectos de Raspberry Pi para principiantes son excelentes para obtener una introducción a las capacidades de hardware y software del Pi, y te ayudará a ponerte en marcha en poco tiempo! Lee más y construye una casa inteligente activada por voz!

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