Raspberry Pi y Alexa: tutorial de Alexa
Amazon Alexa, o simplemente, Alexa, es el asistente de voz desarrollado por Amazon, integrado en altavoces inteligentes como Amazon Echo o Echo Dot. En estos dispositivos, Alexa actúa como una unidad de control central que responde a los comandos de voz del usuario. Por ejemplo, permite reproducir canciones de Spotify o Amazon Music, escuchar audiolibros de Audible o acceder a noticias e información meteorológica. El software también es compatible con varias aplicaciones para organizar la rutina diaria: puedes tanto anotar como consultar las listas de la compra y las tareas pendientes con suma rapidez, al igual que apuntar las citas en los calendarios que quieras (incluidos los de Apple, Google y Outlook).
Este software de voz de Amazon también es compatible con miles de dispositivos domésticos inteligentes, como lámparas, enchufes o termostatos, entre muchos otros, por lo que también permite automatizar el hogar.
Alexa se actualiza automáticamente a través de la nube. Además, Amazon proporciona regularmente nuevas características para este software de control de voz, denominadas Skills de Amazon, que pueden adquirirse en la tienda Alexa Skills.
Con Alexa Voice Service puedes disfrutar de las funciones de Alexa sin necesidad de tener un dispositivo Amazon, integrando el asistente de voz en tu propio dispositivo. La popular Raspberry Pi y Alexa han demostrado ser especialmente compatibles, ya que la Raspberry Pi no solo es más económica en comparación con Amazon Echo y otros dispositivos similares, sino que también se puede adaptar y personalizar a gusto del usuario.
Configurar Alexa en la Raspberry Pi: requisitos para AlexaPi
La Raspberry Pi se lanzó al mercado en 2012. Desde entonces, sus fabricantes han seguido desarrollando este miniordenador y han lanzado varias versiones, como Raspberry Pi 2 y 3 o Rasperry Pi Zero. Sin embargo, no todas las versiones de este ordenador de una sola placa cumplen con los requisitos para incorporar Alexa. La Raspberry Pi 2 (modelo B) es una de las recomendadas para poder utilizar el asistente de control de voz de manera óptima. Dado que Alexa requiere estar conectada a Internet, en el caso de que utilices este modelo de Raspberry necesitarás también un adaptador WLAN si no deseas tener el miniordenador conectado permanentemente a Internet mediante un cable de red.
Si optas por una Raspberry Pi 3, te ahorrarás complicaciones, porque este modelo ya viene con un adaptador WLAN de serie.
Además, necesitarás los siguientes accesorios para utilizar Alexa en la Raspberry Pi:
- Tarjeta microSD de al menos 8 GB (idealmente 16 GB o más)
- Cargador USB de al menos 2000 mAh
- Micrófono USB
- Altavoz USB o Bluetooth (en el caso de la Raspberry Pi 3)
Para mejorar el sonido, también tienes la opción de conectar una tarjeta de sonido USB a la Raspberry. Además, si no deseas realizar la instalación y la configuración del sistema operativo y de Alexa de forma totalmente remota desde el ordenador (con el llamado modo headless), es importante conectar la pantalla, el teclado y el ratón al miniordenador.
Tutorial de AlexaPi: convertir la Raspberry Pi en altavoz de Alexa
Antes de configurar el asistente de control de voz, primero debes instalar un sistema operativo en la Raspberry o en la tarjeta SD que vayas a utilizar. Se recomienda Raspbian, que cuenta con el respaldo oficial de Raspberry Pi Foundation y que puede descargarse como un archivo de imagen directamente desde la página web de la fundación. Descomprime el archivo en la tarjeta SD y ábrelo para iniciar la Raspberry Pi e instalar el sistema operativo. En el siguiente vídeo se explica al detalle cómo hacerlo:
Si prefieres ahorrarte el paso de instalar el sistema operativo, también puedes comprar una tarjeta SD lista para usar en la que Raspbian ya esté preinstalado: se venden, por ejemplo, en la tienda online The Pi Hut.
Después de instalar Raspbian, ya puedes poner Alexa en marcha. En la siguiente guía te explicamos cómo hacerlo paso a paso.
Primer paso: crear una cuenta de desarrollador de Amazon
Para acceder a Amazon Voice Service, necesitas una cuenta de desarrollador de Amazon, que puedes crear accediendo a la página Amazon Developer. Haz clic en “Identificarseˮ y, luego, selecciona “Crea tu cuenta deˮ. También puedes iniciar sesión con tu cuenta normal de Amazon si ya tienes una.
Introduce tus datos de registro (nombre, dirección de correo electrónico y contraseña) y vuelve a hacer clic en “Crea tu cuenta deˮ.
Después, inicia sesión automáticamente en la zona de desarrolladores. Sin embargo, antes de poder utilizar las herramientas, como Alexa Voice Server, necesitarás añadir más datos personales. Para ello, haz clic en “Finalizar registroˮ en la barra de menú superior.
Segundo paso: registrar la Raspberry Pi en Alexa Voice Service
Una vez hayas proporcionado los datos requeridos y aceptado los términos y condiciones de uso, podrás acceder al panel de desarrolladores, que te permitirá ver y administrar tus diversos proyectos de Amazon. Bajo la categoría amazon alexa se encuentra el botón “Alexa Voice Serviceˮ, donde puedes iniciar la activación de la Raspberry para utilizar el asistente de control de voz:
En el siguiente menú, haz clic en el botón “GET STARTEDˮ. Amazon te solicitará algunos datos sobre el proyecto planificado.
En los campos de “Product nameˮ y “Product IDˮ, por ejemplo, puedes introducir “AlexaPiˮ o «RaspberryPiAlexa».
Como tipo de producto, selecciona la opción “Device with Alexa built-inˮ (dispositivo con Alexa incorporado). Responde que no a la pregunta de “Will your device use a companion app?ˮ.
En la lista desplegable de “Product categoryˮ, selecciona la opción de “Wireless Speakersˮ. En la descripción del producto, no es necesario extenderse mucho: basta con una breve descripción como “Raspberry Pi Alexa Speakerˮ.
Como nuestra intención es configurar la Raspberry Pi para Alexa como altavoz clásico, exclusivamente por control de voz, marca las opciones de “Hands-freeˮ (control de voz desde cerca) y “Far-fieldˮ (control de voz desde lejos) como tipos de interacción deseada.
Marca la casilla de “noˮ en las preguntas finales sobre el uso comercial, “Alexa for Businessˮ y “Alexa Mobile Accessory Protocolˮ, así como en la pregunta de si el proyecto está específicamente diseñado para niños.
Tercer paso: crear un perfil de seguridad LWA
En el siguiente paso, debes crear un perfil de seguridad LWA (Login with Amazon, o iniciar sesión con Amazon) para la Raspberry Pi, con el fin de que Amazon pueda verificarlo. Para ello, haz clic en “CREATE NEW PROFILEˮ y, a continuación, escribe un nombre adecuado y una breve descripción del perfil:
Después de hacer clic en “NEXTˮ, aparece otro menú en el que tienes que especificar las direcciones URL para la autenticación LWS. Introduce aquí las siguientes direcciones (y guárdalas pulsando en “ADDˮ):
- Allowed origins: https://localhost:3000
- Allowed return URLs: https://localhost:3000/authresponse
Después, revisa las condiciones de Amazon y Alexa Voice Service, marca la casilla de consentimiento y finaliza el proceso de creación del perfil pulsando el botón “FINISHˮ:
Si la configuración se llevó a cabo correctamente, verás una notificación de Amazon en una ventana emergente que lo confirmará.
Cuarto paso: registrar la información del producto y del cliente
A partir de ahora, el perfil que acabas de crear para tu AlexaPi estará siempre disponible en “Productsˮ. Sin embargo, en este punto, antes de pasar a instalar Alexa, debes echar un vistazo a los datos del producto y del cliente necesarios para configurar el asistente de control de voz. Para ello, haz clic en el perfil de la Raspberry en la descripción general del producto y toma nota de los datos que figuran bajo “Client IDˮ y “Client secretˮ. La información más importante en relación con el producto es el “Product IDˮ, que equivale al nombre asignado al producto (en este tutorial, “AlexaPiˮ).
Quinto paso: instalar Alexa en la Raspberry Pi
La forma más fácil de instalar Alexa en la Raspberry Pi es a través de la plataforma de desarrollo GitHub. Allí encontrarás, entre otras cosas, la aplicación de ejemplo Alexa AVS Sample App, que permite instalar el software de control de voz en el miniordenador. El requisito previo es disponer de un cliente Git, que se puede descargar inmediatamente después de efectuar una actualización rápida del sistema, si no está ya instalado de forma predeterminada. Para actualizar el software del sistema, introduce, en primer lugar, los siguientes comandos en la terminal de Raspbian:
sudo apt-get update
sudo apt-get upgrade -y
A continuación, es el turno del cliente git:
sudo apt-get install git
Con ayuda del cliente, descarga la aplicación de ejemplo AVS Sample App o clona el repositorio GitHub:
sudo git clone https://github.com/alexa/alexa-avs-sample-app.git
En 2018, la aplicación AVS Sample App estuvo algún tiempo en modo de mantenimiento, durante el cual no incluía las últimas funciones de Alexa. En tales casos, la solución AVS-Device-SDK sí incluye las características más recientes del asistente de control de voz.
Después de transferir el repositorio de GitHub a la Raspberry Pi, transfiere los datos guardados durante el cuarto paso al archivo de instalación automatic_install.sh. Puedes abrirlo con el editor de texto que prefieras como, por ejemplo, GNU nano.
Guarda los cambios e inicia la instalación de Alexa en la Raspberry Pi con el siguiente comando:
. automated_install.sh
Sexto paso: primeros pasos de configuración durante la instalación
Ya durante la instalación del software de control de voz, debes realizar las primeras configuraciones y responder a algunas preguntas. Por ejemplo, al principio tienes que aceptar los términos y condiciones y el uso de aplicaciones de terceros (si procede). En la siguiente pregunta, declaras que ya tienes una cuenta de desarrollador de Amazon, mientras que en la tercera confirmas los datos sobre el “Product IDˮ, el “Client IDˮ y el “Client secretˮ. En los tres casos, escribe «y» y, después, pulsa la tecla [Enter].
A continuación, aparece una de las opciones de configuración más importantes: la elección de la salida de voz deseada. Elige la opción es-ES para establecer el español como el idioma en el que te comunicarás con Alexa. Además, durante la instalación, debes determinar si la salida de sonido del altavoz Raspberry Pi de Alexa debe ser a través de un conector de clavija (3,5 mm) o del conector HDMI. Finalmente, debes especificar si deseas mantener la palabra de activación predeterminada (Alexa) o utilizar otro comando de voz para iniciar el asistente.
Séptimo paso: autenticar el altavoz Raspberry-Pi de Alexa
Para autenticar la Raspberry, ahora necesitas el Alexa Companion Service, una especie de interfaz o puerta de enlace para establecer la conexión entre el miniordenador y los servidores de AVS. Para utilizar este servicio, cambia al directorio adecuado mediante la terminal y, después, inicia la aplicación con el servicio de paquetes npm. Para ello, introduce los siguientes comandos uno tras otro:
cd ~/alexa-avs-sample-app/samples/companionService
npm start
Si se ha iniciado correctamente, la terminal muestra el mensaje “Listening on Port 3000ˮ. Minimiza la ventana de la terminal y abre una nueva instancia del símbolo del sistema.
Es importante minimizar y no cerrar la ventana de la terminal en la que se ha iniciado Alexa Companion Service. El servicio debe ejecutarse en segundo plano para que la Raspberry Pi pueda comunicarse con los servidores de Alexa Voice.
El siguiente paso es abrir el directorio del cliente de Companion. Como está programado en Java, puedes utilizar Maven, la herramienta de gestión de proyectos Java (mvn):
cd ~/alexa-avs-sample-app/samples/javaclient
mvn exec:exec
Unos segundos después de introducir el comando, se abre una ventana de diálogo emergente que te pide que accedas a una URL específica con un navegador para registrar la Raspberry. Acepta la solicitud haciendo clic en “Aceptarˮ. El enlace se abrirá automáticamente en el navegador predeterminado.
Después de hacer clic en “Aceptar, se abre otra ventana de diálogo en el cliente Java, a la que no debes prestar atención en este momento.
En el navegador, verás la página de inicio de sesión de Amazon o, en algunos casos, el mensaje de que el sitio web no está disponible. Esto último, sin embargo, no supone ningún problema: no tienes más que hacer clic en “Advancedˮ (avanzado) en la esquina inferior izquierda y, después, en “Proceed to localhostˮ (continuar a localhost) para acceder a la ventana de inicio de sesión. Inicia sesión con tu cuenta de desarrollador de Amazon y confirma que tu altavoz Raspberry Pi de Alexa puede obtener acceso a la cuenta de Amazon.
Si la autenticación se lleva a cabo con éxito, el navegador genera el mensaje de “device tokens readyˮ. Ahora puedes pulsar “OKˮ en la ventana del cliente Java que ignoraste previamente para finalizar la autenticación.
Octavo paso: activar la detección de la palabra de activación
Alexa ya está lista para usar, por lo que puedes interactuar con el software de voz en cualquier momento a través del cliente AVS: para ello, haz clic en el icono del micrófono y formula la pregunta que desees. Sin embargo, para que Alexa también se active cuando digas la palabra de activación, como Alexa, necesitas iniciar el llamado Wake Word Agent. Para ello, en una nueva ventana de la terminal, accede al directorio del agente (KITT AI) y, luego, inícialo:
cd ~/alexa-avs-sample-app/samples/wakeWordAgent/src
./wakeWordAgent -e kitt_ai
Si la terminal muestra el mensaje “Connected to AVS clientˮ, puedes utilizar Alexa con normalidad mediante el control por voz.
Noveno paso: crear un script de inicio automático para Alexa en la Raspberry Pi
Para evitar tener que iniciar Alexa manualmente cada vez que enciendas la Raspberry Pi, también debes crear un script de inicio que se ejecute automáticamente cada vez que se encienda el miniordenador. Para hacerlo, en primer lugar, crea el archivo de script con el siguiente comando de terminal:
sudo nano alexa.sh
En el script, introduce las siguientes líneas de código:
#!/bin/bash
lxterminal -l -e "cd ~/alexa-avs-sample-app/samples/companionService && npm start;" &
sleep 10s
lxterminal -l -e "cd ~/alexa-avs-sample-app/samples/javaclient && mvn exec:exec;" &
sleep 30s
lxterminal -l -e "cd ~/alexa-avs-sample-app/samples/wakeWordAgent/src && ./wakeWordAgent -e kitt_ai;" &
Esta secuencia de comandos automatiza el proceso de autenticación descrito en el séptimo paso, iniciando primero el Alexa Companion Service y, después, el cliente Java. Posteriormente, inicia el Wake Word Agent descrito en el octavo paso.
Guarda el script y concede al sistema los derechos de acceso necesarios mediante chmod:
sudo chmod +x alexa.sh
Para el script, crea un archivo de inicio automático:
sudo nano /home/pi/.config/autostart
Completa este archivo con el siguiente contenido, de modo que el script generado se ejecute automáticamente cada vez que inicies la Raspberry Pi como altavoz de Alexa:
[Desktop Entry]
Comment=Comment
Exec=/home/pi/alexa.sh
Name=alexa.sh
Path=/home/pi/alexa.sh
Type=Shell