Proiecte cu Raspberry Pi: Cum să construiești propriul tău Google Assistant

Ok google, how’s the weather in the weekend? Cu o simplă comandă vocală îi poți cere “asistentului tău” să-ți redea muzică, știrile sau să-ți spună cum va fi vremea pe următoarele zile. Fără să te folosești de ajutorul mâinilor, de la distanță, poți seta alarme, poți controla dispozitive inteligente cum sunt luminile, temporizatorii sau comutatoarele de la sistemele de automatizare ale electrocasnicelor sau îți poți crea lista de cumpărături doar spunând ceea ce trebuie să cumperi. El notează tot. În loc să apeși de foarte multe ori pe ecranul telefonului, poți solicita din voce să se deschidă o anumită aplicație, să afli ce ședință ai în calendar săptămâna viitoare sau să apeleze persoane din agenda telefonului.

Google Assistant îți oferă răspunsuri personalizate și complexe cu ajutorul comenzilor vocale. Cum s-a ajuns în acest punct al dezvoltării inteligenței artificiale și cum îți poți face chiar tu propriul Google Assistant, fără să fie nevoie să te folosești de telefonul mobil, îți spunem pe larg în rândurile ce urmează.

Ce este Google Assistant?

Google Asistent este așa cum îi spune și numele un asistent virtual, dezvoltat de motorul de căutare Google, care se bazează pe inteligența artificială. În sensul larg al cuvântului, Inteligența Artificială (IA) reprezintă orice tehnologie proiectată să imite modul în care se comportă un om. Învățarea mecanică (machine learning) este o parte importantă a inteligenței artificiale și se bazează pe capacitatea computerelor de a re(acționa) în baza cantității uriașe de date pe care le analizează. Exemplu cel mai bun în acest sens sunt chiar asistenții virtuali care pot înțelege comenzile vocale.

Spre deosebire de asistentul virtual anterior, Google Now care oferea răspunsuri în baza unor solicitări vocale clare, Google Assistant se poate angaja în conversații. După o perioadă de exclusivitate pe smartphone-urile Pixel și Pixel XL, din februarie 2017, Google Assistant a fost implementat și pe dispozitivele Android. Mai mult decât atât, Google Assistant a fost extins pentru a interacționa cu o mare varietate de dispozitive, inclusiv cu electrocasnicele inteligente.

Google Assistant este apelat prin voce umană și în urma comenzii posesorului acesta caută pe internet informațiile solicitate, programează evenimentele în calendarul telefonului, setează alarme sau apelează contactele din telefon.

Cum îți poți construi propriul Google Assistant?

În aprilie 2017, a fost lansat un kit de dezvoltare software (SDK) care permite dezvoltatorilor să-și construiască propriul hardware care să poată rula Google Assistant. Google spune că va funcționa bine pe dispozitivele Raspberry Pi 3 și Linux.

Acest kit a fost integrat în plăcile Raspberry Pi din sistemele de comandă vocală ale mașinilor Audi și Volvo, dar și în anumite aparate inteligente de uz casnic, precum frigiderele, mașinile de spălat sau cuptoarele. Practic, șoferul apelează rapid numeroasele funcții de pe volan pentru a gestiona climatizarea și funcțiile de confort.

Proiectele din domeniul Inteligenței Artificiale cu Raspberry Pi sunt în prezent în plină dezvoltare. De fapt, în afară de Google Assistant mai există și alte platforme IA care concurează pentru ca specialiștii să le instaleze cu Raspberry Pi. Aceste platforme sunt Alexa de la Amazon, IBM Watson, Siri de la Apple și altele mai puțin cunoscute.

Toate companiile de software care dezvoltă asistenți virtuali se sprijină pe comunitatea Raspberry Pi pentru a-și dezvolta programele. Această colaborare face posibil ca și Raspberry Pi să dezvolte prototipuri mai rapide pentru dispozitivele IA (Inteligență Artificială) și IoT (Internet of Things), practic să fie mai accesibile pentru specialiști.

Așadar, să trecem la lucru! Mai jos, am adunat practic tot ce este necesar pentru a construi propriul tău Google Assistant cu Raspberry Pi pentru a avea următoarele funcționalități:

  • Google Assistant (cele mai multe funcții, cu excepția redării media pe Pi)
  • Activare vocală / cuvânt cheie: “Hei Google” sau “Ok Google” și adresezi întrebarea
  • Pornirea unui program/serviciu, deci nu trebuie să deschizi manual programul la fiecare repornire.

Deci, pentru a începe proiectul Google Assistant vei avea nevoie de:

  • Raspberry Pi 3
  • Micro card SD (minimum 8 GB) cu Raspbian instalat
  • Microfon USB
  • Un difuzor

Pasul 1: Înregistrarea dispozitivului

Accesează https://console.actions.google.com pentru a-ți înregistra proiectul în Google Console. Intră pe https://console.cloud.google.com  pentru a-ți activa API-ul Google Assistant.

Asigură-te că selectezi proiectul nou creat în panoul de selecție de lângă sigla Platformei Cloud! Apoi, selectează tabul Api&Services și activează-ți api-ul Google Assistant.

Asigură-te că ai activat toate setările https://myaccount.google.com/activitycontrols pentru ca api-ul să funcționeze corect.

După aceea, revino la https://console.actions.google.com pentru a înregistra dispozitivul Raspberry Pi în colțul din dreapta jos al panoului de aplicații. Downloadează fișierul cu credețialele (datele de autentificare) pentru a le putea folosi mai târziu.

Pasul 2. Setarea audio

Notează-ți numerele cardului / dispozitivului audio folosind:

arecord -l
aplay -l

Folosește aceste informații pentru a edita fișierul asoundrc:

nano /home/pi/.asoundrc
pcm.!default {
  type asym
  capture.pcm "mic"
  playback.pcm "speaker"
}
pcm.mic {
  type plug
  slave {
    pcm "hw:<card number>,<device number>"
  }
}
pcm.speaker {
  type plug
  slave {
    pcm "hw:<card number>,<device number>"
  }
}

Poți testa dispozitivul folosind:

speaker-test -t wav
arecord --format=S16_LE --duration=5 --rate=16000 --file-type=raw out.raw
aplay --format=S16_LE --rate=16000 out.raw
alsamixer

Pasul 3. Instalează Biblioteca Google Assistant

Configurează directoarele în care vom instala mediul virtual:

mkdir ~/googleassistant
nano ~/googleassistant/credentials.json

Vom folosi un spațiu virtual pentru ca spațiul personal să nu devină prea aglomerat. Instalează venv cu:

sudo apt-get install python3-dev python3-venv

Instalează ultima versiune de pip și activează mediul cu:

python3 -m venv env && env/bin/python -m pip install –upgrade pip setuptools –upgrade && source env/bin/activate

Instalează libraria Google Assistant pentru Python:

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

Pasul 4. Autorizează Pi pentru Google Assistant

Instalează instrumentul de autorizare pentru a putea autoriza cu API-ul Google Assistant pe care tocmai l-am activat pentru aplicație:

python -m pip install –upgrade google-auth-oauthlib[tool]

Vei primi un url de autorizare

google-oauthlib-tool --client-secrets ~/googleassistant/credentials.json \
--scope https://www.googleapis.com/auth/assistant-sdk-prototype \
--scope https://www.googleapis.com/auth/gcm \
--save --headless

Este posibil să primești o eroare de autorizare. Pentru a rezolva acest lucru setează în platforma Google Cloud în zona de autentificare Credentials -> OAuth Consent Screen   Asigură-te că ai selectat aplicația ta (Application name)! În momentul în care vei introduce codul de autorizare vei vedea:

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

Pasul 5. Erorile portului Audio

Este posibil să întâlnești următoarea eroare:

OSError:  PortAudio library not found
(env) pi@raspberrypi :~/googleassistant $

Instalează:

sudo apt-get install libportaudio2

Pentru a preveni pierderea și întârzierea semnalului audio introdu următorul comentariu: /etc/pulse/default.pa

De asemenea, rulează PulseAudio pentru a evita problemele cu Google Assistant:

sudo nano /etc/systemd/system/pulseaudio.service

Adaugă următoarea linie de cod:

[Unit]                      
Description=PulseAudio Sound Server in system-wide mode [Service] 
Type=forking                      
PIDFile=/var/run/pulse/pid                      
ExecStart=/usr/bin/pulseaudio --system --disallow-exit=1 \                       
 --disable-shm=1 --fail=1 --daemonize
[Install]                      
WantedBy=multi-user.target

Activează serviciul și adaugă userul pi grupului pulse-access:
sudo systemctl --system enable pulseaudio.service
sudo adduser pi pulse-access

Dezactivează modulul următor pentru a evita întârzierile audio:

/etc/pulse/default.pa
#load-module module-suspend-on-idle
sudo nano /etc/systemd/system/assistant.service

Pasul 6. Transformă Google Assitant în propriul serviciu personal

Crează un fișier  ~/start_assistant.sh folosind ID-ul modelului de dispozitiv din platforma Google Action:

#!/bin/bash
source /home/pi/googleassistant/env/bin/activate
googlesamples-assistant-hotword --device-model-id <your_device_model_id> 

Fă scriptul executabil:

chmod +x start_assistant.sh

Crează un fișier service în /etc/systemd/system/assistant.service

[Unit]
Description=Google Assistant
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
ExecStart=/bin/bash /home/pi/start_assistant.sh
Restart=on-abort
User=pi
Group=pi
[Install]
WantedBy=multi-user.target

Activează și pornește serviciul:

sudo systemctl enable assistant.service
sudo systemctl start assistant.service

Pasul 7. Ai terminat!

De acum te poți bucura de propriul tău Google Assistant pe Raspberry Pi folosind expresiile “Hey Google” sau “Ok Google“. De asemenea, poți înregistra dispozitivul în aplicația Google Assistant pe iOS sau Android.

Autostrada imprimată 3D – un proiect de succes care leagă în sfârșit Capitala de Moldova

După multe așteptări, proiecte eșuate și promisiuni care nu s-au ținut, echipa Robofun a găsit soluția pentru a crea autostrada pe care mulți cetățeni o consideră esențială în infrastructura României care leagă Bucureștiul de Iași.

Detaliile proiectului inedit le poți afla mai jos.

Pasiunea pentru imprimare 3D, primul pas către un drum de mare viteză

Echipa din spatele acestui proiect a afirmat că toată ideea le-a venit de la un hobby comun pe care îl au pentru imprimarea modelelor 3D. S-au gândit cum ar putea pune în practică planul și s-au apucat de treabă.

La recomandarea prietenilor au ales să meargă cu un sens, astfel că au trasat drumul pentru cele 3 benzi ale autostrazii, iar la întoarcere au completat sensul celălalt.

Traseul autostrazii a fost atent ales pentru a ajunge prin vecinătatea orașelor importante de pe drumul ce leagă Capitala de Iași, cum ar fi: Buzău, Bacău sau Roman. Astfel, proiectul inițial a configurat o lungime de aproximativ 420 km pe care însă să îi poți parcurge cu mașina în mai puțin de 4 ore față de drumul obositor pe care trebuia să-l faci în cel puțin 7 ore.

Impact puternic asupra localnicilor din vecinătatea construcției

Lucrările s-au efectuat în timp record, astfel că nimeni nu a avut ocazia să acorde atenția cuvenită pentru a anunța public marele proiect, însă localnicii din Icușești au remarcat această inițiativă și au considerat-o demnă de ziarul lor local în care si-au exprimat admirația pentru echipa care le-a adus un drum de mare viteză către marile orașe din apropriere. Unul dintre localnici a declarat pentru Monitorul de Icușești:

Suntem foarte mândri că suntem pe traseul autostrăzii. Acum putem să dezvoltăm turismul și economia, să îmi vină înapoi baieții plecați în Anglia.

Inaugurare robotică

La doar 1 săptămână de la startul construcției, autostrada Moldovei a fost inaugurată cu entuziasm de Robo și Fun, cei 2 roboți din echipa celor care au venit cu această idee inedită și care s-au asigurat de implementare până în ultimul moment.

Ne bucurăm că o pasiune s-a transformat într-un proiect de care se pot bucura acum toți cei care vor să facă un city-break în Iași.

Pentru comenzi de noi autostrazi, daca va doriti o autostrada privata sau daca Guvernul isi doreste alte autostrazi publice, va rugam trimiteti un mail la contact at robofun.ro pentru programarea constructiei.