Amazon Alexa, o sem­pli­ce­men­te Alexa, è l'as­si­sten­te vocale svi­lup­pa­to da Amazon, che viene uti­liz­za­to ad esempio negli smart speaker come Amazon Echo o Echo Dot. In questi di­spo­si­ti­vi, Alexa è integrato come unità di controllo centrale che risponde ai comandi vocali del­l'u­ten­te. È possibile, ad esempio, ri­pro­dur­re in streaming le canzoni di Amazon Music o Spotify, ri­pro­dur­re brani di Audible, ascoltare le notizie o ri­chie­de­re in­for­ma­zio­ni sul meteo. Il software viene in aiuto anche nell'or­ga­niz­za­zio­ne della giornata, se ne­ces­sa­rio: potete dettare e ri­chia­ma­re le liste della spesa e delle cose da fare e salvare i vostri ap­pun­ta­men­ti nel vostro ca­len­da­rio preferito (Apple, Google, Outlook, ecc.).

E dato che il software di controllo vocale di Amazon è com­pa­ti­bi­le con migliaia di di­spo­si­ti­vi domestici smart come lampade, prese, ter­mo­sta­ti e altri, si può ap­pro­fit­ta­re anche dell'au­to­ma­zio­ne domestica.

N.B.

Alexa viene ag­gior­na­to au­to­ma­ti­ca­men­te tramite il cloud. In più Amazon integra re­go­lar­men­te il software vocale con nuove fun­zio­na­li­tà, co­no­sciu­te anche come Amazon Skills, che possono essere aggiunte tramite l'Alexa Skills Store.

Grazie all’Alexa Voice Service potete godere delle fun­zio­na­li­tà di Alexa anche senza un di­spo­si­ti­vo Amazon e integrare l'as­si­sten­te vocale sui vostri di­spo­si­ti­vi. Il popolare Raspberry Pi si è di­mo­stra­to par­ti­co­lar­men­te adatto a tale scopo, perché rispetto ad Amazon Echo e gli altri di­spo­si­ti­vi non solo offre vantaggi in termini di prezzo, ma può anche essere adattato e per­so­na­liz­za­to a pia­ci­men­to.

Con­fi­gu­ra­re Alexa sul Raspberry Pi: i requisiti per l'AlexaPi

Raspberry Pi è presente sul mercato dal 2012. Da allora, i pro­dut­to­ri hanno con­ti­nua­to a lavorare al­l'ul­te­rio­re sviluppo del mi­ni­com­pu­ter e hanno ri­la­scia­to varie versioni suc­ces­si­ve 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 sod­di­sfa­re i requisiti per l'in­te­gra­zio­ne di Alexa: per garantire un fun­zio­na­men­to ottimale del­l'as­si­sten­te vocale, si consiglia di uti­liz­za­re almeno un Raspberry Pi 2 (modello B). Poiché Alexa richiede una con­nes­sio­ne a Internet, è ne­ces­sa­rio anche un adat­ta­to­re WLAN se non si desidera collegare per­ma­nen­te­men­te il mi­ni­com­pu­ter a Internet tramite un cavo di rete.

In al­ter­na­ti­va potete scegliere anche un Raspberry Pi 3 dotato di serie di un adat­ta­to­re WLAN integrato.

Avrete inoltre bisogno dei seguenti accessori per uti­liz­za­re Alexa sul vostro Raspberry Pi:

  • Scheda MicroSD con una capacità di almeno 8 GB (meglio se 16 GB o più)
  • Ali­men­ta­to­re USB di almeno 2.000 mAh
  • Microfono USB
  • Al­to­par­lan­ti USB o Bluetooth (se Raspberry Pi 3)

Per una migliore espe­rien­za audio è possibile collegare una scheda audio USB a Raspberry. Se non volete eseguire l'in­stal­la­zio­ne e la con­fi­gu­ra­zio­ne del sistema operativo e di Alexa com­ple­ta­men­te a distanza dal PC (modalità headless), dovete collegare al mi­ni­com­pu­ter anche un monitor, una tastiera e un mouse.

Tutorial AlexaPi: come tra­sfor­ma­re il Raspberry Pi in un as­si­sten­te vocale Alexa

Prima di poter con­fi­gu­ra­re l'as­si­sten­te vocale, è ne­ces­sa­rio in­stal­la­re un sistema operativo sul Raspberry o sulla scheda SD inserita. L'opzione migliore è Raspbian, uf­fi­cial­men­te sup­por­ta­to dalla Raspberry Pi Foun­da­tion, che può essere scaricato come file immagine di­ret­ta­men­te dal sito web della Foun­da­tion. Spac­chet­ta­te il file sulla scheda SD e uti­liz­za­te­lo per avviare il vostro Raspberry Pi e in­stal­la­re il sistema operativo.

Se invece non de­si­de­ra­te in­stal­la­re un sistema operativo, potete anche ac­qui­sta­re una scheda SD pronta all'uso, come se ne trovano ad esempio sullo shop online "The Pi Hut" su cui Raspbian è già pre­in­stal­la­to.

Nella seguente guida vi spie­ghia­mo passo per passo come mettere Alexa in funzione dopo l'in­stal­la­zio­ne 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 nuo­va­men­te clic su "Crea il tuo account".

Venite au­to­ma­ti­ca­men­te rein­di­riz­za­ti all'area svi­lup­pa­to­ri. Prima di poter uti­liz­za­re strumenti come Alexa Voice Server, tuttavia, è ne­ces­sa­rio fornire alcune in­for­ma­zio­ni personali ag­giun­ti­ve, cliccando su "Completa re­gi­stra­zio­ne" nella barra dei menu in alto.

Passaggio 2: re­gi­stra­re Raspberry Pi per Alexa Voice Service

Dopo aver fornito le in­for­ma­zio­ni richieste e aver accettato i Termini di utilizzo e le Linee guida, avrete accesso alla dashboard per svi­lup­pa­to­ri, che vi consente di vi­sua­liz­za­re e gestire i vari progetti Amazon. Sotto la voce "amazon alexa" troverete il pulsante "Alexa Voice Service", che avvia l'at­ti­va­zio­ne del vostro Raspberry per l'as­si­sten­te vocale:

Nel menu suc­ces­si­vo, fate clic sul pulsante "GET STARTED" e ri­spon­de­te alle domande di Amazon relative al progetto pia­ni­fi­ca­to.

Alle voci "Product name" e "Product ID" è possibile inserire ad esempio "AlexaPi" o "Ra­sp­ber­ry­PiA­le­xa".

Come "Product type" se­le­zio­na­te l'opzione "Device with Alexa built-in" (di­spo­si­ti­vo con software di Alexa integrato). Ri­spon­de­te con No alla domanda sull'uso di un'ap­pli­ca­zio­ne Companion.

Nel campo "Product category" scegliete "Wireless Speakers". Nella de­scri­zio­ne del prodotto non è ne­ces­sa­rio entrare nel dettaglio, è suf­fi­cien­te scrivere ad esempio "Raspberry Pi Alexa Speaker".

Poiché volete con­trol­la­re il vostro Raspberry Pi come il classico al­to­par­lan­te Alexa esclu­si­va­men­te tramite comando vocale, se­le­zio­na­te "Hands-free" (controllo vocale da vicino) e "Far-field" (controllo vocale a distanza) come tipi di in­te­ra­zio­ne pia­ni­fi­ca­te.

Alle domande con­clu­si­ve sull'uso com­mer­cia­le o sull'uso di Raspberry per Alexa for Business e Alexa Mobile Accessory Protocol ri­spon­de­te con No, così come alla domanda se il vostro progetto è spe­ci­fi­ca­men­te concepito per bambini.

Passaggio 3: creare un profilo di sicurezza LWA

Il passo suc­ces­si­vo è creare un profilo di sicurezza LWA (Login with Amazon) per il Raspberry Pi in modo che possa essere ve­ri­fi­ca­to in Amazon. Poiché non ne avete ancora uno, cliccate su "CREATE NEW PROFILE" e inserite un nome adatto e una breve de­scri­zio­ne del profilo:

Dopo aver fatto clic su "NEXT" appare un altro menu in cui dovete spe­ci­fi­ca­re gli URL per l'au­ten­ti­ca­zio­ne LWS. Inserite qui i seguenti indirizzi (e salvateli con "ADD"):

  • Allowed origins: https://localhost:3000
  • Allowed return URLs: https://localhost:3000/au­th­re­spon­se

Quindi spuntate la casella per dare il vostro consenso alle Con­di­zio­ni d'uso di Amazon e Alexa Voice Service e com­ple­ta­te il processo di creazione del profilo facendo clic sul pulsante "FINISH":

Se la con­fi­gu­ra­zio­ne è avvenuta con successo, Amazon vi invierà una notifica pop-up.

Passaggio 4: annotare le in­for­ma­zio­ni sul prodotto e sul client

Il profilo che avete creato per il vostro AlexaPi è ora di­spo­ni­bi­le in qualsiasi momento alla voce "Products". Prima di iniziare l'in­stal­la­zio­ne di Alexa, tuttavia, dovreste già ri­chia­ma­re e annotare le in­for­ma­zio­ni sul prodotto e sul client ne­ces­sa­rie per la con­fi­gu­ra­zio­ne del­l'as­si­sten­te vocale. A tal fine, fate clic sul profilo del Raspberry nella pa­no­ra­mi­ca dei prodotti e annotate le voci "Client ID" e "Client secret". L'in­for­ma­zio­ne decisiva del prodotto è il "Product ID", che cor­ri­spon­de al nome del prodotto assegnato (in questo tutorial "AlexaPi").

Passaggio 5: in­stal­la­re Alexa sul Raspberry Pi

Il modo più semplice per in­stal­la­re Alexa sul vostro Raspberry Pi è tramite la piat­ta­for­ma per svi­lup­pa­to­ri GitHub. Qui troverete, tra l'altro, l'Alexa AVS Sample App, che potete usare per tra­sfe­ri­re il software di controllo vocale sul vostro mi­ni­com­pu­ter. È ne­ces­sa­rio disporre di un client Git, che potete scaricare di­ret­ta­men­te dopo un rapido ag­gior­na­men­to del sistema, se non è già in­stal­la­to di default. Inserite quindi in­nan­zi­tut­to i seguenti comandi nel terminal Raspbian per ag­gior­na­re 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

Uti­liz­zan­do il client, è possibile scaricare l'AVS Sample App o clonare il re­po­si­to­ry GitHub:

sudo git clone https://github.com/alexa/alexa-avs-sample-app.git
N.B.

L'AVS Samle App è at­tual­men­te in modalità ma­nu­ten­zio­ne, quindi non include le ultime funzioni di Alexa. Con l'AVS Device SDK è di­spo­ni­bi­le una soluzione al­ter­na­ti­va, che offre anche le nuove funzioni del­l'as­si­sten­te vocale.

Dopo aver tra­sfe­ri­to il re­po­si­to­ry GitHub sul vostro Raspberry Pi, tra­sfe­ri­te le in­for­ma­zio­ni salvate al punto 4 nel file di in­stal­la­zio­ne automated_install.sh. Potete aprirlo con l'editor di testo che preferite, ad esempio con nano.

Salvate le modifiche e avviate l'in­stal­la­zio­ne di Alexa sul vostro Raspberry Pi con il seguente comando:

. automated_install.sh

Passaggio 6: primi passi di con­fi­gu­ra­zio­ne durante l'in­stal­la­zio­ne

Durante l'in­stal­la­zio­ne del software vocale è ne­ces­sa­rio ef­fet­tua­re le prime im­po­sta­zio­ni e ri­spon­de­re ad alcune domande. In­nan­zi­tut­to dovete accettare i Termini e le Con­di­zio­ni e l'uso di ap­pli­ca­zio­ni di terze parti (se ne­ces­sa­rio). Con la domanda suc­ces­si­va con­fer­ma­te di avere già un account Amazon Developer prima di con­fer­ma­re "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 im­po­sta­zio­ne di base: la selezione del­l'out­put vocale de­si­de­ra­to. Suc­ces­si­va­men­te avete la pos­si­bi­li­tà di scegliere l'i­ta­lia­no come lingua durante la co­mu­ni­ca­zio­ne con Alexa. Durante l'in­stal­la­zio­ne, indicate inoltre se l'uscita audio del vostro al­to­par­lan­te Raspberry Pi Alexa deve avvenire tramite il con­net­to­re jack (3,5 mm) o tramite l'uscita HDMI. Infine, spe­ci­fi­ca­te se de­si­de­ra­te mantenere la parola di at­ti­va­zio­ne pre­de­fi­ni­ta "Alexa" o usare un altro comando vocale per avviare l'as­si­sten­te vocale.

Passaggio 7: au­ten­ti­ca­re l'al­to­par­lan­te Raspberry Pi Alexa

Per l'au­ten­ti­ca­zio­ne del Raspberry è ora ne­ces­sa­rio l'Alexa Companion Service, che è una sorta di in­ter­fac­cia o gateway per la con­nes­sio­ne tra il mi­ni­com­pu­ter e i server AVS. Per uti­liz­za­re il servizio, andate alla directory ap­pro­pria­ta tramite il terminale e quindi avviate l'ap­pli­ca­zio­ne uti­liz­zan­do 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.

N.B.

La finestra del terminale in cui avete avviato l'Alexa Companion Service deve essere solo mi­ni­miz­za­ta, non chiusa. Il servizio deve essere eseguito in back­ground in modo che il vostro Raspberry Pi possa co­mu­ni­ca­re con i server Alexa Voice.

Nella fase suc­ces­si­va, passate alla directory del Companion Client e apritelo. Dal momento che è pro­gram­ma­to in Java, potete uti­liz­za­re 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 re­gi­stra­re il Raspberry. Seguite le istru­zio­ni cliccando su "OK". Il link si aprirà au­to­ma­ti­ca­men­te nel vostro browser pre­de­fi­ni­to.

N.B.

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 è di­spo­ni­bi­le. Se così fosse, non pre­oc­cu­pa­te­vi: basta cliccare su "Advanced" (Avanzate) nel­l'an­go­lo 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 con­fer­ma­te che il vostro al­to­par­lan­te Raspberry Pi Alexa è au­to­riz­za­to ad accedere al­l'ac­count Amazon.

Dopo l'au­ten­ti­ca­zio­ne il browser invia il messaggio "device tokens ready". Ora potete cliccare su "OK" nella finestra del client Java finora ignorata per com­ple­ta­re l'au­ten­ti­ca­zio­ne.

Passaggio 8: attivare il ri­co­no­sci­men­to della parola di at­ti­va­zio­ne

Alexa è ora pronto all'uso per poter in­te­ra­gi­re con il software vocale in qualsiasi momento tramite il client AVS cliccando sul­l'i­co­na del microfono e ponendo la domanda che si desidera. Per attivare Alexa anche pro­nun­cian­do sem­pli­ce­men­te la parola di at­ti­va­zio­ne se­le­zio­na­ta, come "Alexa", dovete avviare il co­sid­det­to Wake Word Agent. Aprite, in una nuova finestra del terminale, l'elenco del­l'a­gen­te (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 uti­liz­za­re Alexa nel modo consueto tramite controllo vocale.

Passaggio 9: creare uno script di avvio au­to­ma­ti­co per l'as­si­sten­te vocale Raspberry Pi Alexa

Per evitare di dover avviare Alexa ma­nual­men­te ogni volta che avviate il vostro Raspberry Pi, create uno script di avvio che viene eseguito au­to­ma­ti­ca­men­te quando viene avviato il mi­ni­com­pu­ter. 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 au­to­ma­tiz­za il processo di au­ten­ti­ca­zio­ne descritto al punto 7, avviando prima l'Alexa Companion Service e poi il client Java. Questo è seguito dal­l'av­vio ritardato del­l'a­gen­te 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 au­to­ma­ti­co per lo script:

sudo nano /home/pi/.config/autostart

Inserite nel file i seguenti contenuti in modo che lo script generato venga eseguito au­to­ma­ti­ca­men­te ogni volta che avviate il vostro al­to­par­lan­te Raspberry Pi Alexa:

[Desktop Entry]
Comment=Comment
Exec=/home/pi/alexa.sh
Name=alexa.sh
Path=/home/pi/alexa.sh
Type=Shell
Vai al menu prin­ci­pa­le