Creiamo un Assistente vocale con Raspberry
di Vincenzo Caputo
09 Dicembre 2017
Raspberry
LE COSE DI CUI HAI BISOGNO PER QUESTO PROGETTO:
- Un Raspberry PI
- Micro SD
- Un dispositivo Android
- App Tasker
- App Plugin AutoVoice
- Scheda Audio USB
- Un microfono (meglio se panoramico) tipo questo
Qualche anno fa, quando ho iniziato a smanettare con Tasker, mi ha colpito subito la possibilità di creare comandi vocali per eseguire le azioni di tasker e quindi di conseguenza di modificare il mondo attorno a me grazie alla mia voce, magari accendendo una lampadina, o aprendo una porta o facendo salire una tenda, ecc... Certo quattro anni fa faceva ancora una certa impressione realizzare una cosa del genere, oggi invece siamo molto più abituati alle interazioni vocali con i dispositivi che ci circondano.
Ricordo che tra i primi problemi con cui mi sono scontrato nel realizzare un sistema vocale di controllo della domotica di casa mia, basata su Tasker, c'è stato quello della disponibilità del dispositivo/microfono ad essere sempre attivo o ad essere attivato al momento della richiesta vocale. Ben presto ho capito che, dover andare presso il mio tablet o tirare fuori lo smartphone per tappare sull'icona che metteva in ascolto il dispositivo, faceva perdere gran parte dell'utilità di utilizzare la voce per azionare i comandi. Infatti una volta di fronte al dispositivo tanto valeva premere direttamente sull'icona che azionava il task desiderato. Ho cercato allora di utilizzare la funzione di autovoice "always listening" che mi permetteva di mettere il dispositivo in ascolto continuo per poter dare liberamente i comandi mentre gironzolavo per la casa.Altro problema: all'attivaizone della madalità "Continuous" di autovoice parte un fastidioso beep che si ripete ogni 4 secondi rendendo di fatto inutilizzabile questa modalità in ambito domotico.
Ho ripiegato allora sul più classico "ok Google" grazie all'integrazione tra autovoice e Gnow, anche se non ho mai digerito fino in fondo l'obbligo di dover dire proprio "ok Google" e di non poter cambiare la parola di attivazione. In ogni caso fino a poco tempo fa, con questo sistema, le cose sono andate abbastanza bene e ne ho fatto largo uso sopratutto in automobile per non dove staccare la mani dal volante quando davo i comandi. Da qualche settimana la sostituzione di Gnow a favore di Google Assistant, ha complicato ulteriormente le cose, ma non è questo l'articolo dedicato all'argomento.
Un po di tempo fa mi è capitato di leggere che il plugin di avutovoice era stato rilasciato sottoforma di estensione del Browser Google Chrome. L'ho installato al volo e ci ho fatto qualche prova con il pc in ufficio non appronfondendo più di tanto la questione perchè per gli utilizzi che ne faccio io, non mi sembrava tanto comodo dover accendere un pc per dover pronunciare un comando vocale. Fino a quando qualche giorno fa mi sono chiesto se questa estensione non potesse girare su Rasbian con Raspberry e diventare finalmente il mio dispositivo "always listening" senza l'obbligo dell'odioso (per me naturalmente) ok Google!
Detto fatto, mi sono messo all'opera, ho installato l'ultima versione di Raspbian su Raspberry PI 3, ho aperto il browser Chromium (che è la versione open di Chrome) e ho cercato subito l'estensione sullo store. Autovoice risultava installabile anche su Chromium, quindi sono andato avanti l'ho configurata e... dannazione, Raspberry non ha un ingrasso MIC! Ho acquistato su Amazon una scheda audio USB per fornire l'ingresso microfono al mio raspberry et voilà! Funziona alla perfezione. L'ho posizionato in casa collegato al Router WiFi con il microfono e riesco a dare comandi vocali liberamente finalmente senza dover dire "ok Google". In realtà ho sotituito la parola chiave con un più figherrimo "Jarvis"! Nel video a fine articolo potete vedere il sistema in azione.
Ma andiamo a descrivere passo passo come procedere:
Naturalmente procuriamoci tutto il necessario come da lista della spesa in cima all'articolo. Poi rechiamoci al seguente link e scarichiamo Raspbian. Estraiamo l'immagine appena scaricata sulla Micro SD seguendo i seguenti passi.
- Scarica Etcher e installalo.
- Collega un lettore di schede SD con la scheda SD all'interno.
- Apri Etcher e seleziona dal tuo disco rigido il Raspberry Pi .img o il .zipfile che desideri scrivere sulla scheda SD.
- Seleziona la scheda SD in cui desideri scrivere l'immagine.
- Controlla le tue selezioni e fai clic su "Flash!" per iniziare a scrivere i dati sulla scheda SD.
Bene, inserite la MicroSD nel Raspberry collegatelo alla rete LAN, collegate la scheda audio USB e un microfono, tastiera mouse, monitor e poi alimentatelo con un alimentatore da smartphone.Se avete fatto tutto bene vedrete avviarsi Rasbian. Un volta entrati nel sistema aprite il Browser Chromium e cercate l'estensione autovoice dall'apposito store. Sotto alcune immagini (le ho prese da Ubuntu sul mio Notebook ma sono identiche a raspbian) per indicarvi i percorsi:
Come nella seguente schermata scegliete di visitare il Web Store delle estensioni:
Nella seguente immagine potete vedere il plugin che va installato dallo store delle stensioni di Chrome:
Procedete concedendo le autorizzazioni ad autovoice per l'utilizzo del microfono come vedete qui di seguito:
In questa fase (o in quelle successive) vi verrà chiesto di inserire le credenziali gmail per loggarvi dentro Chromium, subito dopo entrare nella configurazione di autovoice cliccando con il tasto destro del mouse sull'icona di autovoice in alto a destra nella finestra del browser e scegliendo opzioni. Configurate come vedete qui di seguito:
Naturalmente potrete cambiare la parola "Jarvis" con quella che preferite oppure potrete omettere del tutto di valorizzare quel campo, ma in tal caso qualunque cosa diciate in ogni momento verrà processata dal sistema.
Da notare che nell'ultima immagine trovate Your Devices. Questi sono i dispositivi a cui il vostro raspberry invierà i comandi recepiti. Per far comparire i dispositivi dovrete andare nell'app autovoice sul vostro smartphone o tablet e nelle opzioni andare alla voce "Devices" e collegare l'account google di riferimento (naturalmente lo stesso che avete usato per configurare Chrmium sul Raspberry). Nel video di esempio il mio raspberry invia i comandi al Tablet Nexus 7 su cui ho impostato alcuni task che reagiscono ad autovoice. Praticamente è come se i comandi li inviassi direttamente dal tablet.
Infine facciamo in modo che Raspbian lanci ad ogni riavvio una sessione di Chomium per far si che parta anche l'estensione di autovoice .Aprite un terminale dentro raspbian e digitate sudo nano ~/.config/lxsession/LXDE-pi/autostart e alla fine del file aggiungete la stringa chomium-browser come potete osservare nella seguente immagine. Uscite e salvate.
Ora vi lascio al video domostrativo e aspetto numerosi i commenti e le domande. Buona visione!
Produrre e aggiornare contenuti su vincenzocaputo.com richiede molto tempo e lavoro. Se il contenuto che hai appena letto è di tuo gradimento e vuoi supportarmi, clicca uno dei link qui sotto per fare una donazione.