4- Getting started: Installare Google Assistant SDK sulla Pi-Zero

Nel numero 57 di The MagPi di maggio 2017 Google regalava un Voice kit per incoraggiare le persone a costruirsi il proprio Google Home.
Il progetto si chiama AIY,  miscuglio tra AI (Artificial Intelligence) e DIY (Do It Yourself), e nasce con l’intento di  soddisfare la crescente voglia di prodotti dotati di intelligenza artificiale.

Seguendo le istruzioni all’interno della rivista o sul sito è possibile costruire una vocal user interface (VUI), all’interno di un cubo di cartone, in grado di utilizzare i servizi cloud di Google (Assistant SDK o Cloud Speech API ) trasformando così l’interazione uomo-macchina più simile all’interazione uomo-a-uomo.
Google Home non è disponibile in Italia, però con Raspberry Pi Zero W e l’impiego di Google Assistant Service con API gRPC possiamo avere il nostro assistente per controllare  qualunque dispositivo con la voce.

Tech Stack

[1] Raspberry Pi Zero W
[2] MicroSD card con Raspbian (16 GB )
[3] Setup del microfono USB e lo speaker
[4] Aver abilitato l’API di Assistant e ottenuto la OAuth Key
[5] Aver installato Python 3.x

Step 1 – Setting up Python Virtual Env

Un’ottima best practice è creare un’ambiente di lavoro virtuale indipendente dall’installazione di default di python in modo da poter testare e lavorare in sicurezza con diversi moduli , ma prima eseguiamo il seguente comando:

Con il modulo  venv ,che fa parte della standard library di Python 3, creeremo da termianle un nuovo ambiente virtuale a cui daremo il nome env:

Ora con pip installeremo o in caso aggiorneremo i setuptools (versione 38.5.1) :

Infine per attivare l’ambiente env digiteremo il comando:

Se attivo (env) comparirà fra parentesi come prefisso del prompt dei comandi:

Step 2 – Clonare il repository di Assistant 

Installiamo git (versione 1:2.11.0-3+deb9u2):

Ora con GIT cloneremo da GitHub il repository di Google Assistant SDK che creerà nella nostra MicroSD in /home/pi/ una nuova cartella assistant-sdk-python.

Copiamo l’intera directory grpc contenuta nel SDK Python appena clonato, con l’opzione ricorsiva -r , all’interno della nuova cartella di lavoro a cui saremo il nome ZeroAssistant che verrà creata in /home/pi/

Dal file manager PCMan possiamo vedere come nella nostra  home ora ci siano due nuove cartelle e che all’interno di ZeroAssistant ci sono alcuni codici di esempio (python  samples) che ci potranno essere d’aiuto nella configurazione di Assitant.

Step 3 – Installazione OAuthtool

Ora dobbiamo fornire il token di autorizazione che avevamo scaricato in questo tutorial  stando attenti a fornire il percorso corretto e a non rinominarlo. Per farlo dobbiamo prima installare l’authorization tool:

Il file json dev’essere nella MicroSd della Pi-Zero quindi se l’avessimo scaricato su un altro computer basta spostarlo con un file manager come WinSCP magari nella cartella /home/pi/

Ci verrà così dato un URL che apriremo dal browser della Pi-Zero o preferibilmente da un altro computer per velocizzare l’operazione.

Ci verrà richiesto di loggarci con il nostro account Google (1) e ci verrà fornito un codice di autorizzazione (2) che incolleremo nella shell della Pi-Zero.

L’operazione ha esito positivo nel momento in cui le credenziali vengono salvate:

Step 4 – Installazione gRPC API

Prima di poter utilizzare il binding in Python di Google Assistant gRPC API dobbiamo  soddisfare alcune dipendenze:

Ora non ci resta che installare il servizio google assistant gRPC con il seguente comando:

L’esecuzione di questo comando sulla Pi-Zero potrebbe richiedere anche 50 minuti di tempo quindi vi consiglio di prendervi una pausa con un buon thé nero.

Ora installiamo i requirements per la libreria che troviamo nella cartella ZeroAssistant precedentemente creata.

Step 5 – Installazione SDK

Sempre da terminale installiamo l’SDK di Google Assistant con i relativi python samples:

L’ultima versione del SDK è la 0.4.3 rilasciata il 21 febbraio 2018.

Step 6 – Registrazione dispositivo

Dobbiamo fornire a Google Assistant alcune informazioni inerenti al nostro device (tipologia,il produttore,etc) che verranno associate al nostro progetto.
Sostituiamo alla voce my-model un nome a nostra scelta con l’unica cautela che  dev’essere univoco a livello mondiale.

Da root digitiamo il comando di esempio:

Ad informarci dell’esito positivo della registrazione avremo:

Controlliamo che le informazioni che abbiamo inserito siano corrette e per ricordarci il Project ID che ci verrà inseguito richiesto:

Step 7 – Hey Google!

We want users to have an ongoing 2 way dialogue with Google
Sundar Pichai, Google I/O 2016

Dal suo debutto nel 2012 come Google Now  si era abituati ad attivare l’assistente  vocale con “Ok Google”  invece oggi è più naturale e colloquiale farlo con “Hey Google”. All’inizio la nuova hotword era limitata allo smartspeaker Home e agli smartphone Pixel, ma poi è stato attivata per tutti gli altri dispositivi in grado di supportare Google Assistant.


Il nuovo assistente vocale a “due vie di dialogo” era stato presentato dal CEO Sundar Pichai come evoluzione di Google Now durante la conferenza annuale Google I/O 2016.

Da smartphone per attivare Google Assistant è sufficiente tenere permuto a lungo il pulsante home invece da computer dobbiamo premere Enter e  sarà pronto a rispondere ai nostri comandi:

Sitografia

[1] Google Assistant is a two-way conversational personal assistant for all your devices

AIY Projects
[1] Google AIY Voice Kit for Raspberry Pi
[2] The MagPi, 04/05/2017
[3] Billy Rutledge, AIY Projects: Do-it-yourself AI for Makers, Google Developers, 04/05/ 2017
[4] Aggiornamento AIY Projects: nuovi progetti, nuovi partner e nuovi kit per i maker, 22/09/2017

Hey Google
[1] Lorenzo Longhitano ,“Hey Google” è ora la nuova parola d’ordine di Google Assistant, Wired, 18/12/2017
[2] Vezio Ceniccola, Google Assistant arriva ufficialmente in Italia: finalmente parla italiano!, Androidworld, 01/11/2017
[3] Jacob Kleinman, Soon You Won’t Have to Say ‘Hey Google’ to Launch Google Assistant, Lifehacker, 30/01/2018

Documentazione 
[1] Introduction to Google Assistant Service
[2] Configure and Test the Audio
[3] Install the SDK and Sample Code
[4] Release Notes

gRPC
[1] Google Assistant API
[2] Python Samples for the Google Assistant gRPC API

Device model
[1] Register the Device Model