| Home | | What i'm doing | | About Me | __

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

Conversational Interfaces, Getting Started, Informatica, Natural Language Processing, Python /
By Andres Reyes / Febbraio 25, 2018 / No Comments

Sommario

  • Tech Stack
  • Step 1 - Setting up Python Virtual Env
  • Step 2 - Clonare il repository di Assistant 
  • Step 3 - Installazione OAuthtool
  • Step 4 - Installazione gRPC API
  • Step 5 - Installazione SDK
  • Step 6 - Registrazione dispositivo
  • Step 7 - Hey Google!
  • Sitografia

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:

1
$ sudo apt-get install python3-dev python3-venv

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:

1
$ python3 -m venv env

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

Python
1
$ env/bin/python -m pip install --upgrade pip setuptools

Infine per attivare l'ambiente env digiteremo il comando:

1
$ source env/bin/activate

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

1
(env) pi@raspberrypi:~ $

Step 2 - Clonare il repository di Assistant 

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

1
$ sudo apt-get install git

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.

1
(env) git clone https://github.com/googlesamples/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/

1
(env) cp -r assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/grpc ./ZeroAssistant

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:

1
(env) pip install --upgrade google-auth-oauthlib[tool]

1
2
3
Successfully installed cachetools-2.0.1 certifi-2018.1.18 chardet-3.0.4 click-6.7
google-auth-1.4.1 google-auth-oauthlib-0.2.0 idna-2.6 oauthlib-2.0.6 pyasn1-0.4.2
pyasn1-modules-0.2.1 requests-2.18.4 requests-oauthlib-0.8.0 rsa-3.4.2 six-1.11.0 urllib3-1.22

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/

1
2
(env) google-oauthlib-tool --client-secrets client_secret_XXXXX.json
--scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless

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

1
2
Please go to this URL: https://...
Enter the authorization code:

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:

1
2
credentials saved: /home/pi/.config/google-oauthlib-tool/credentials.json
(env) pi@raspberrypi:~ $

Step 4 - Installazione gRPC API

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

1
(env) sudo apt-get install portaudio19-dev libffi-dev libssl-dev

1
(env) pip install --upgrade wheel

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

1
(env) pip install --upgrade google-assistant-grpc

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.

1
2
Successfully installed google-assistant-grpc-0.1.0 googleapis-common-protos-1.5.3
grpcio-1.9.1 protobuf-3.5.1

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

1
2
cd ZeroAssistant
(env) pip install --upgrade -r requirements.txt

Step 5 - Installazione SDK

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

1
python -m pip install --upgrade google-assistant-sdk[samples]

1
2
Installing collected packages: google-assistant-sdk
Successfully installed google-assistant-sdk-0.4.3

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.

1
2
3
(env) googlesamples-assistant-devicetool register-model --manufacturer my-manufacturer \
          --product-name my-product-name [--description my-product-description] \
          --type device-type [--trait supported-trait] --model my-model

Da root digitiamo il comando di esempio:

1
2
(env) googlesamples-assistant-devicetool register-model --manufacturer "Google Assistant SDK"
          --product-name "ZeroAssistant" --type LIGHT --model ZeroAssistantModel

Ad informarci dell'esito positivo della registrazione avremo:

1
2
Creating new device model
Model ZeroAssistantModel successfully registered

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

1
(env) googlesamples-assistant-devicetool get --model ZeroAssistantModel

1
2
3
4
Device Model ID: ZeroAssistantModel
        Project ID: zeroassistant-196222
        Device Type: action.devices.types.LIGHT
No traits

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.

1
2
(env) googlesamples-assistant-pushtotalk --project-id zeroassistant-196222
--device-model-id ZeroAssistantModel --lang it-IT

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:

1
2
3
4
5
6
7
8
9
INFO:root:Connecting to embeddedassistant.googleapis.com
Press Enter to send a new request...
INFO:root:Recording audio request.
WARNING:root:SoundDeviceStream read overflow (3200, 6400)
INFO:root:End of audio request detected
INFO:root:Finished playing assistant response.
Press Enter to send a new request...
INFO:root:Recording audio request.
INFO:root:Transcript of user request: "Ehi Google".

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

Tweet

IXD INTERACTION

  • UX- User Experience
  • UI - User Interface
  • CI - Convesational interface
  • BCI - Brain computer interface
  • PD - Product Design
  • NLP - Natural Language Processing

DEV DEVELOPER

  • Simulink
  • Matlab
  • Fpga
  • Zerynth
  • Python
This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish

Inserisci/Modifica link

Inserisci l'URL di destinazione

Oppure inserisci un link a un contenuto esistente

    Nessun termine di ricerca inserito. Vengono mostrati i contenuti più recenti. Cerca o usa i tasti freccia su e freccia giù per selezionare un elemento.