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.