Raspberry Pi: tutorial su Alexa
Amazon Alexa, o semplicemente Alexa, è l'assistente vocale sviluppato da Amazon, che viene utilizzato ad esempio negli smart speaker come Amazon Echo o Echo Dot. In questi dispositivi, Alexa è integrato come unità di controllo centrale che risponde ai comandi vocali dell'utente. È possibile, ad esempio, riprodurre in streaming le canzoni di Amazon Music o Spotify, riprodurre brani di Audible, ascoltare le notizie o richiedere informazioni sul meteo. Il software viene in aiuto anche nell'organizzazione della giornata, se necessario: potete dettare e richiamare le liste della spesa e delle cose da fare e salvare i vostri appuntamenti nel vostro calendario preferito (Apple, Google, Outlook, ecc.).
E dato che il software di controllo vocale di Amazon è compatibile con migliaia di dispositivi domestici smart come lampade, prese, termostati e altri, si può approfittare anche dell'automazione domestica.
Alexa viene aggiornato automaticamente tramite il cloud. In più Amazon integra regolarmente il software vocale con nuove funzionalità, conosciute anche come Amazon Skills, che possono essere aggiunte tramite l'Alexa Skills Store.
Grazie all’Alexa Voice Service potete godere delle funzionalità di Alexa anche senza un dispositivo Amazon e integrare l'assistente vocale sui vostri dispositivi. Il popolare Raspberry Pi si è dimostrato particolarmente adatto a tale scopo, perché rispetto ad Amazon Echo e gli altri dispositivi non solo offre vantaggi in termini di prezzo, ma può anche essere adattato e personalizzato a piacimento.
Configurare Alexa sul Raspberry Pi: i requisiti per l'AlexaPi
Raspberry Pi è presente sul mercato dal 2012. Da allora, i produttori hanno continuato a lavorare all'ulteriore sviluppo del minicomputer e hanno rilasciato varie versioni successive come il Raspberry Pi 2 e 3 o il Rasperry Pi Zero. Tuttavia, non tutte le versioni del single-board computer sono in grado di soddisfare i requisiti per l'integrazione di Alexa: per garantire un funzionamento ottimale dell'assistente vocale, si consiglia di utilizzare almeno un Raspberry Pi 2 (modello B). Poiché Alexa richiede una connessione a Internet, è necessario anche un adattatore WLAN se non si desidera collegare permanentemente il minicomputer a Internet tramite un cavo di rete.
In alternativa potete scegliere anche un Raspberry Pi 3 dotato di serie di un adattatore WLAN integrato.
Avrete inoltre bisogno dei seguenti accessori per utilizzare Alexa sul vostro Raspberry Pi:
- Scheda MicroSD con una capacità di almeno 8 GB (meglio se 16 GB o più)
- Alimentatore USB di almeno 2.000 mAh
- Microfono USB
- Altoparlanti USB o Bluetooth (se Raspberry Pi 3)
Per una migliore esperienza audio è possibile collegare una scheda audio USB a Raspberry. Se non volete eseguire l'installazione e la configurazione del sistema operativo e di Alexa completamente a distanza dal PC (modalità headless), dovete collegare al minicomputer anche un monitor, una tastiera e un mouse.
Tutorial AlexaPi: come trasformare il Raspberry Pi in un assistente vocale Alexa
Prima di poter configurare l'assistente vocale, è necessario installare un sistema operativo sul Raspberry o sulla scheda SD inserita. L'opzione migliore è Raspbian, ufficialmente supportato dalla Raspberry Pi Foundation, che può essere scaricato come file immagine direttamente dal sito web della Foundation. Spacchettate il file sulla scheda SD e utilizzatelo per avviare il vostro Raspberry Pi e installare il sistema operativo.
Se invece non desiderate installare un sistema operativo, potete anche acquistare una scheda SD pronta all'uso, come se ne trovano ad esempio sullo shop online "The Pi Hut" su cui Raspbian è già preinstallato.
Nella seguente guida vi spieghiamo passo per passo come mettere Alexa in funzione dopo l'installazione di Raspbian.
Passaggio 1: creare un account Amazon Developer
Per accedere ad Amazon Voice Service, dovete impostare un account Amazon Developer. Createne uno andando sul sito web di Amazon Developer e fate clic su "Accedi" e poi su "Crea il tuo account". Potete anche accedere con il vostro normale account Amazon, se ne avete già uno.
Inserite i dati di accesso (nome, indirizzo e-mail e password) e fate nuovamente clic su "Crea il tuo account".
Venite automaticamente reindirizzati all'area sviluppatori. Prima di poter utilizzare strumenti come Alexa Voice Server, tuttavia, è necessario fornire alcune informazioni personali aggiuntive, cliccando su "Completa registrazione" nella barra dei menu in alto.
Passaggio 2: registrare Raspberry Pi per Alexa Voice Service
Dopo aver fornito le informazioni richieste e aver accettato i Termini di utilizzo e le Linee guida, avrete accesso alla dashboard per sviluppatori, che vi consente di visualizzare e gestire i vari progetti Amazon. Sotto la voce "amazon alexa" troverete il pulsante "Alexa Voice Service", che avvia l'attivazione del vostro Raspberry per l'assistente vocale:
Nel menu successivo, fate clic sul pulsante "GET STARTED" e rispondete alle domande di Amazon relative al progetto pianificato.
Alle voci "Product name" e "Product ID" è possibile inserire ad esempio "AlexaPi" o "RaspberryPiAlexa".
Come "Product type" selezionate l'opzione "Device with Alexa built-in" (dispositivo con software di Alexa integrato). Rispondete con No alla domanda sull'uso di un'applicazione Companion.
Nel campo "Product category" scegliete "Wireless Speakers". Nella descrizione del prodotto non è necessario entrare nel dettaglio, è sufficiente scrivere ad esempio "Raspberry Pi Alexa Speaker".
Poiché volete controllare il vostro Raspberry Pi come il classico altoparlante Alexa esclusivamente tramite comando vocale, selezionate "Hands-free" (controllo vocale da vicino) e "Far-field" (controllo vocale a distanza) come tipi di interazione pianificate.
Alle domande conclusive sull'uso commerciale o sull'uso di Raspberry per Alexa for Business e Alexa Mobile Accessory Protocol rispondete con No, così come alla domanda se il vostro progetto è specificamente concepito per bambini.
Passaggio 3: creare un profilo di sicurezza LWA
Il passo successivo è creare un profilo di sicurezza LWA (Login with Amazon) per il Raspberry Pi in modo che possa essere verificato in Amazon. Poiché non ne avete ancora uno, cliccate su "CREATE NEW PROFILE" e inserite un nome adatto e una breve descrizione del profilo:
Dopo aver fatto clic su "NEXT" appare un altro menu in cui dovete specificare gli URL per l'autenticazione LWS. Inserite qui i seguenti indirizzi (e salvateli con "ADD"):
- Allowed origins: https://localhost:3000
- Allowed return URLs: https://localhost:3000/authresponse
Quindi spuntate la casella per dare il vostro consenso alle Condizioni d'uso di Amazon e Alexa Voice Service e completate il processo di creazione del profilo facendo clic sul pulsante "FINISH":
Se la configurazione è avvenuta con successo, Amazon vi invierà una notifica pop-up.
Passaggio 4: annotare le informazioni sul prodotto e sul client
Il profilo che avete creato per il vostro AlexaPi è ora disponibile in qualsiasi momento alla voce "Products". Prima di iniziare l'installazione di Alexa, tuttavia, dovreste già richiamare e annotare le informazioni sul prodotto e sul client necessarie per la configurazione dell'assistente vocale. A tal fine, fate clic sul profilo del Raspberry nella panoramica dei prodotti e annotate le voci "Client ID" e "Client secret". L'informazione decisiva del prodotto è il "Product ID", che corrisponde al nome del prodotto assegnato (in questo tutorial "AlexaPi").
Passaggio 5: installare Alexa sul Raspberry Pi
Il modo più semplice per installare Alexa sul vostro Raspberry Pi è tramite la piattaforma per sviluppatori GitHub. Qui troverete, tra l'altro, l'Alexa AVS Sample App, che potete usare per trasferire il software di controllo vocale sul vostro minicomputer. È necessario disporre di un client Git, che potete scaricare direttamente dopo un rapido aggiornamento del sistema, se non è già installato di default. Inserite quindi innanzitutto i seguenti comandi nel terminal Raspbian per aggiornare il software di sistema:
sudo apt-get update
sudo apt-get upgrade -y
Questo è seguito dal controllo del client Git:
sudo apt-get install git
Utilizzando il client, è possibile scaricare l'AVS Sample App o clonare il repository GitHub:
sudo git clone https://github.com/alexa/alexa-avs-sample-app.git
L'AVS Samle App è attualmente in modalità manutenzione, quindi non include le ultime funzioni di Alexa. Con l'AVS Device SDK è disponibile una soluzione alternativa, che offre anche le nuove funzioni dell'assistente vocale.
Dopo aver trasferito il repository GitHub sul vostro Raspberry Pi, trasferite le informazioni salvate al punto 4 nel file di installazione automated_install.sh. Potete aprirlo con l'editor di testo che preferite, ad esempio con nano.
Salvate le modifiche e avviate l'installazione di Alexa sul vostro Raspberry Pi con il seguente comando:
. automated_install.sh
Passaggio 6: primi passi di configurazione durante l'installazione
Durante l'installazione del software vocale è necessario effettuare le prime impostazioni e rispondere ad alcune domande. Innanzitutto dovete accettare i Termini e le Condizioni e l'uso di applicazioni di terze parti (se necessario). Con la domanda successiva confermate di avere già un account Amazon Developer prima di confermare "Product ID", "Client ID" e "Client secret" nella terza domanda. In tutti e tre i casi, digitate "y" e quindi premete il tasto Invio.
Segue una delle opzioni di impostazione di base: la selezione dell'output vocale desiderato. Successivamente avete la possibilità di scegliere l'italiano come lingua durante la comunicazione con Alexa. Durante l'installazione, indicate inoltre se l'uscita audio del vostro altoparlante Raspberry Pi Alexa deve avvenire tramite il connettore jack (3,5 mm) o tramite l'uscita HDMI. Infine, specificate se desiderate mantenere la parola di attivazione predefinita "Alexa" o usare un altro comando vocale per avviare l'assistente vocale.
Passaggio 7: autenticare l'altoparlante Raspberry Pi Alexa
Per l'autenticazione del Raspberry è ora necessario l'Alexa Companion Service, che è una sorta di interfaccia o gateway per la connessione tra il minicomputer e i server AVS. Per utilizzare il servizio, andate alla directory appropriata tramite il terminale e quindi avviate l'applicazione utilizzando il package manager npm. Per fare questo, inserite i seguenti comandi uno dopo l'altro:
cd ~/alexa-avs-sample-app/samples/companionService
npm start
Se l'avvio ha avuto successo, il vostro terminale presenta il messaggio "Listening on Port 3000". Riducete la finestra del terminale e aprite una nuova istanza della riga di comando.
La finestra del terminale in cui avete avviato l'Alexa Companion Service deve essere solo minimizzata, non chiusa. Il servizio deve essere eseguito in background in modo che il vostro Raspberry Pi possa comunicare con i server Alexa Voice.
Nella fase successiva, passate alla directory del Companion Client e apritelo. Dal momento che è programmato in Java, potete utilizzare il Java Build Manager Maven (mvn):
cd ~/alexa-avs-sample-app/samples/javaclient
mvn exec:exec
Pochi istanti dopo aver inserito il comando si apre una finestra di dialogo pop-up che vi invita ad aprire un URL specifico nel browser per registrare il Raspberry. Seguite le istruzioni cliccando su "OK". Il link si aprirà automaticamente nel vostro browser predefinito.
Dopo aver cliccato su "OK", si apre un'altra finestra di dialogo nel client Java, che potete ignorare per ora.
Nel browser vedrete ora la pagina di accesso ad Amazon o, in alcuni casi, il messaggio che il sito web non è disponibile. Se così fosse, non preoccupatevi: basta cliccare su "Advanced" (Avanzate) nell'angolo in basso a sinistra e poi su "Proceed to localhost" (Procedi su localhost) per accedere alla finestra di login. Accedete con il vostro account Amazon Developer e confermate che il vostro altoparlante Raspberry Pi Alexa è autorizzato ad accedere all'account Amazon.
Dopo l'autenticazione il browser invia il messaggio "device tokens ready". Ora potete cliccare su "OK" nella finestra del client Java finora ignorata per completare l'autenticazione.
Passaggio 8: attivare il riconoscimento della parola di attivazione
Alexa è ora pronto all'uso per poter interagire con il software vocale in qualsiasi momento tramite il client AVS cliccando sull'icona del microfono e ponendo la domanda che si desidera. Per attivare Alexa anche pronunciando semplicemente la parola di attivazione selezionata, come "Alexa", dovete avviare il cosiddetto Wake Word Agent. Aprite, in una nuova finestra del terminale, l'elenco dell'agente (KITT AI) per avviarlo:
cd ~/alexa-avs-sample-app/samples/wakeWordAgent/src
./wakeWordAgent -e kitt_ai
Se il terminale mostra il messaggio "Connected to AVS client" è possibile utilizzare Alexa nel modo consueto tramite controllo vocale.
Passaggio 9: creare uno script di avvio automatico per l'assistente vocale Raspberry Pi Alexa
Per evitare di dover avviare Alexa manualmente ogni volta che avviate il vostro Raspberry Pi, create uno script di avvio che viene eseguito automaticamente quando viene avviato il minicomputer. Per fare questo, create prima il file di script con il seguente comando del terminale:
sudo nano alexa.sh
Inserite quindi le seguenti righe di codice nello script:
#!/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;" &
Lo script automatizza il processo di autenticazione descritto al punto 7, avviando prima l'Alexa Companion Service e poi il client Java. Questo è seguito dall'avvio ritardato dell'agente Wake Word descritto al punto 8.
Salvate lo script e conferite al sistema i permessi di accesso necessari tramite chmod:
sudo chmod +x alexa.sh
Ora create un file di avvio automatico per lo script:
sudo nano /home/pi/.config/autostart
Inserite nel file i seguenti contenuti in modo che lo script generato venga eseguito automaticamente ogni volta che avviate il vostro altoparlante Raspberry Pi Alexa:
[Desktop Entry]
Comment=Comment
Exec=/home/pi/alexa.sh
Name=alexa.sh
Path=/home/pi/alexa.sh
Type=Shell