sobota, 13 maja 2017

Google AIY Projects - Assistant bez Voice Kit od Google

Dzisiaj opiszę jak zmienić konfigurację systemu do Voice Kit, który był dostępny z 57 numerem magazynu MagPi.

Oficjalny opis Voice Kit znajdziemy pod tym linkiem -> Link

Jeżeli go nie posiadamy możemy zmodyfikować system, którego obraz jest dostępny tu -> Link

Po wgraniu obrazu mamy do dyspozycji zmodyfikowanego Raspbiana od Google, widocznego niżej.



Voice Kit posiada płytkę na której znajduje się mikrofon i układ audio z głośnikiem, możemy jednak wykorzystać dowolny mikrofon USB lub kamerkę internetową z mikrofonem i głośnik z wtykiem mały jack.

Będzie jeszcze potrzebny jakiś przycisk chwilowy i dioda led.

Łączymy do Raspberry Pi 3 jak na schemacie.


Najpierw pobieramy obraz systemu, stąd -> Link

Po pobraniu rozpakowujemy go i będziemy mieć obraz systemu aiyprojects-2017-05-03.img

Wgrywamy go na kartę programem Win32 Disk Imager, który jest dostępny pod tym linkiem -> Link

Pobieramy go, instalujemy i uruchamiamy.

Po uruchomieniu wybieramy pobrany obraz aiyprojects-2017-05-03.img w Plik obrazu.


Klikamy Zapisz.


Wybieramy Yes i rozpocznie się zapis obrazu na kartę SD.


Po zakończeniu zapisu powinien wyświetlić się Zapis pomyślny, klikamy OK i wkładamy kartę SD do Raspberry Pi.

Podłączamy Raspberry Pi do telewizora lub monitora przewodem HDMI, podłączamy myszkę i klawiaturę na USB, kamerkę lub mikrofon USB i na końcu zasilanie.

Uruchomi się nam zmodyfikowany obraz Raspbiana.

Pierwszą rzeczą jaką zrobimy, to połączmy się po Wifi z domową siecią, jeżeli ktoś chce, to może używać połączenia lan.

U góry po prawej stronie znajduje się ikonka połączeń sieciowych, klikamy Turn On Wi-Fi, aby włączyć Wifi w Raspberry Pi.

Powinno wykryć naszą domową sieć Wifi, wpisujemy hasło i powinniśmy mieć połączenie z Wifi


Po kliknięciu prawym przyciskiem myszy na ikonkę sieci wybieramy Wireless & Wired Network Settings i proponuję ustawić Ip na stałe.


Wybieramy interface wlan0 i wpisujemy IP i adresy DNS, Ip sprawdzimy po najechaniu myszką na ikonkę sieci, adres DNS sprawdziwmy wpisując w Terminalu:

cat /etc/resolv.conf

Klikamy więc w ikonkę Terminalu w górnym menu po lewej stronie.

Wpisujemy polecenie jak wyżej i wyświetlą się nam adresy DNS.


Wpisujemy je w konfiguracji wlan0


Ja mam akurat adres routera 192.168.3.1 i przydziela mi adresy Ip z zakresu: 192.168.3.2 do 192.168.3.255, ale adres routera, to zazwyczaj 192.168.1.1

Teraz jeszcze zmieniamy sobie ustawienia systemu na polskie, robimy to w Preferencje -> Raspberry Pi Configuration


Najlepiej zmienić sobie hasło w Change Password.


Domyślne hasło to: Raspberry

W Current password wpisujemy więc: Raspberry i 2 razy wpisujemy nowe hasło.

W Interfaces włączamy sobie SSH.


W Locialisation zmieniamy sobie wszystkie ustawienia na polskie i restartujemy Raspberry Pi.

Teraz przystępujemy do zmian w systemie aby dostosować do ustawień z wykorzystaniem kamerki lub mikrofonu USB i głośników.

Klikamy Start dev terminal na pulpicie.


Wpisujemy polecenie:

sudo leafpad /boot/config.txt

aby zmienić domyślne ustawienia karty dźwiękowej

Na samy dole zmieniamy wpis na:

# Enable audio (loads snd_bcm2835)
dtparam=audio=on
#dtoverlay=i2s-mmap
#dtoverlay=googlevoicehat-soundcard



Teraz domyślną kartą dźwiękową nie będzie już układ z Voice Hat.

Klikamy zapisz i zamykamy.

Jeszcze zmieniamy wpisy w pliku /etc/asound.conf

Jest to opisane na oficjalnej stronie Google -> Link

Wpisujemy więc w Terminalu:

sudo leafpad /etc/asound.conf

Kasujemy całość wpisu i wklejamy tam:

pcm.!default {
type asym
capture.pcm "mic"
playback.pcm "speaker"
}
pcm.mic {
type plug
slave {
pcm "hw:1,0"
}
}
pcm.speaker {
type plug
slave {
pcm "hw:0,0"
}
}

Zapisujemy plik i zamykamy i robimy restart, wpisując w terminalu:

sudo reboot

Teraz klikając w ikonkę głośnika, będziemy mieli widoczny mikrofon USB i układ audio z Raspberry Pi już bez układu z Voice Hat.

Ja używam kamerki Logitech C920 i jak widać już jest poprawnie wykryta.


Teraz wybieramy USB Device Settings i ustawiamy:

bcm2835 ALSA -> wybierz elementy sterujące i zaznaczamy PCM.


dla mikrofonu zaznaczamy Mikrofon.


Teraz jeszcze zmienimy wpis w pliku /home/pi/voice-recognizer-raspi/checkpoints/check_audio.py

W terminalu wpisujemy:

leafpad /home/pi/voice-recognizer-raspi/checkpoints/check_audio.py

Zmieniamy wpis: VOICEHAT_ID = ‘googlevoicehat’ na: VOICEHAT_ID = ‘bcm2835’


Zapisujemy plik i zamykamy.

Teraz możemy przeprowadzić test działania klikając na pulpicie 2 razy ikonkę Check audio.

Teraz otwieramy stronę: https://console.cloud.google.com/cloud-resource-manager w przekladarce internetowej i tworzymy projekt jak to opisałem w wcześniejszym wpisie na blogu -> Link

Jeżeli już wcześniej utworzyliśmy projekt Google Assistant pobieramy plik JSON.

Wybieramy nasz projekt, po lewej u góry Narzędzia usługi -> Menadżer Api -> Dane logowania i na dole po prawej mamy -> Pobierz JSON.

Plik zostanie pobrany do /home/pi/Downloads otwieramy więc Menadżer plików i zmieniamy nazwę pliku na: assistant.json


Plik kopiujemy do /home/pi/assistant.json

Teraz uruchamiamy Start dev terminal z pulpitu i wpisujemy: src/main.py

Otworzy się automatycznie strona internetowa do naszego konta Google.


Wybieramy nasze konto i klikamy Zezwól.


Znowu w wcześniej otwartym terminalu wpisujemy:

src/main.py

U mnie pojawił się błąd z PySocks jak niżej


Wpisujemy więc w Terminalu:

pip install PySocks



Teraz możemy kliknąć ikonkę Check audio na pulpicie, jeżeli dalej będzie problem z mikrofonem, a co zdarzyło się u mnie, to jeszcze tworzymy plik .asoundrc w katalogu/home/pi/ wpisujemy więc w terminalu:

sudo nano /home/pi/.asoundrc

i kopiujemy tam tą samą zawartość, co do pliku asound.conf jak pokazano niżej.


Zapisujemy plik i zamykamy i jeszcze raz przeprowadzamy test klikając w ikonkę Check audio na pulpicie.

Jeżeli wszystko przebiegnie ok to mamy już skonfigurowane audio poprawnie, wygląda to tak.


Teraz przeprowadzamy test działania, czyli klikamy ikonkę Start dev terminal na pulpicie i wpisujemy:

src/main.py

jeżeli wszystko działa, to dodajemy jeszcze wpis w Terminalu, aby uruchamiało się przy starcie:

sudo systemctl enable voice-recognizer

Po restarcie wszystko powinno uruchamiać się automatycznie.

Nie posiadam przycisku arkadowego jak w zestawie z Voce Hat i wykorzystałem zwykła diodę i przycisk.

Jak to działa widać na poniższym filmie.














środa, 10 maja 2017

Google AIY Projects - czyli sztuczna inteligencja na Raspberry Pi

Dzisiaj opiszę jak zainstalować Google Assistant, czyli pierwszy projekt od Google na Raspberry Pi 3.

Google Assistant to pierwszy projekt od Google z serii Google AIY Projects.

Projekt Google Assistant powstał we współpracy z fundacją Raspberry Pi i ma on na celu wykorzystanie głosowej komunikacji z Raspberry Pi.

Dzięki temu projektowi Raspberry Pi zamienia się w głosowego asystenta, dzięki któremu będziemy mogli sterować różnymi urządzeniami wydając polecenia głosowe.

Asystentowi możemy zadawać różne pytania, a on dosyć szybko udzieli nam odpowiedzi, komunikacja głosowa odbywa się w języku angielskim, możemy zapytać np. jaka jest pogoda w naszej miejscowości, ponadto po napisaniu programu w Pythonie lub modyfikacji gotowego programu wydając polecenie głosowe np. "Turn On Light" będziemy mogli włączyć domowe oświetlenie lub inne urządzenia w domu np. express do kawy.

Możemy również zbudować różne urządzenia wykorzystując np. serwo do sterowania ramieniem robota lub np. silnik elektryczny ze sterownikiem, aby wprawić robota w ruch, można podłączać różne czujniki jak temperatury lub wilgotności, co stworzymy zależy tylko od naszej fantazji.

Google razem z fundacją Raspberry Pi wypuściło do sprzedaży gotowy Voice Kit wraz z 57 numerem magazynu MagPi, niestety magazyn został dosyć szybko wyprzedany online i był dostępny w sklepach stacjonarnych w Wielkiej Brytanii, Irlandii i Stanach Zjednoczonych.

Voice Kit jest opisany tu -> Link i jest to jeden z pierwszych projektów Google AIY Projects.

Nie musimy jednak koniecznie posiadać Voice Kit, aby zainstalować Google Assistant na Raspberry Pi.

Oficjalna instrukcja instalacji od Google znajduje się tu -> Link

Będą nam potrzebne:

1. Raspberry Pi 3 i zasilacz
2. Karta Micro SD.
3. Dowolny mikrofon na USB lub kamerka internetowa z wbudowanym mikrofonem USB.
4. Głośniki z wtykiem mały jack.

Pierwszą rzeczą jaką należy zrobić, to zainstalować system Raspbian na karcie SD.

Jak to zrobić opisałem w tym wpisie na blogu -> Link

Aby zainstalować Google Assistant musimy posiadać konto na Google, jeżeli go nie mamy to zakładamy.

Powinna działać dowolna kamerka USB, ja użyłem kamerki Logitech C920.


Jeżeli mamy już zainstalowanego Raspbiana i skonfigurowane połączenie z siecią lan, co opisałem w linku podanym wyżej, podłączamy kamerkę lub mikrofon USB i głośniki (ja użyłem domowego sprzętu HiFi) włączamy zasilanie Raspberry Pi.

Po uruchomieniu kamerka powinna być widoczna po kliknięciu prawym klawiszem myszy na ikonkę głośnika w menu u góry po prawej stronie.

Zaznaczamy Analog jak pokazano niżej.

Teraz wybieramy -> External Device Settings

Widoczna jest domyślna karta dźwiękowa bcm2835 ALSA, rozwijamy to menu i wybieramy nasza kamerkę, klikamy Select Controls i zaznaczamy Microphone.

Zamykamy klikając Close.

Teraz widzimy że mikrofon jest aktywny i możemy regulować głośność.

Klikamy OK i powinniśmy mieć wszystko ustawione.

Teraz uruchamiamy przeglądarkę internetową koniecznie na Raspberry Pi -> menu u góry po lewej stronie.


Wpisujemy adres:

https://console.cloud.google.com/cloud-resource-manager

Wyświetli się okienko logowania do konta Google, na dole proponuję wybrać język polski.


Wpisujemy adres email i hasło do konta Google.

Klikamy Utwórz Projekt.


Wpisujemy dowolną nazwę, ja wpisałem sobie: googlevoice i klikamy Utwórz.

W powiadomieniach powinniśmy mieć wiadomość o o utworzeniu nowego projektu.


Po wybraniu powinniśmy widzieć nazwę naszego projektu, wybieramy Menadżer API -> Panel informacyjny.


Klikamy Włącz API.


W wyszukiwarce wpisujemy: google assistant i wybieramy Google Assitant API.


Teraz klikamy Włącz.


Teraz klikamy Dane logowania i wybieramy Ekran zgody OAuth, wpisujemy nazwę i klikamy na dole Zapisz.


Zaznaczamy Inne, wpisujemy nazwę i klikamy Utwórz.


Teraz klikamy OK.


Klikamy w nazwę.


Do góry wybieramy Pobierz JSON.


Zostanie pobrany plik JSON do home/pi/Downloads

Teraz możemy zamknąć przeglądarkę internetową.

Logujemy się do terminala w BitVise i instalujemy python virtual environment poleceniem:

sudo apt-get install python3-dev python3-venv

wpisujemy y


Następnie w konsoli:

sudo apt-get install portaudio19-dev libffi-dev libssl-dev

i znowu zatwierdzamy y


Teraz:

python3 -m venv env



Następnie:

env/bin/pip install pip setuptools --upgrade



Teraz:

source env/bin/activate



Instalujemy Google Assistant SDK poleceniem:

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



Instalacja trochę potrwa

Teraz:

python -m googlesamples.assistant.auth_helpers --client-secrets /home/pi/Downloads/xxx

Teraz uwaga w miejsce xxx wpisujemy całą nazwę pliku JSON, który wcześniej pobraliśmy do katalogu /home/pi/Downloads

Wchodzimy więc w menadżer plików BitVise i kopiujemy pełną nazwę pliku w miejsce xxx i wciskamy Enter



Teraz kopiujemy adres pokazany w terminalu do przeglądarki internetowej (można w komputerze), który jest po słowach Please visit this URL to authorize this application:

Wybieramy nasz konto Google i klikamy Zezwól.

Wyświetli się kod, który kopiujemy w w miejsce po słowach Enter the authorization code:

Teraz w przeglądarce internetowej wpisujemy adres:

https://myaccount.google.com/activitycontrols?pli=1

Włączamy sobie opcję: Aktywność w internecie i aplikacjach, pozostałe również możemy włączyć.


Teraz uruchamiamy Google Assistant poleceniem:

python -m googlesamples.assistant



Wciskając Enter możemy już zacząć rozmawiać z asystentem Google.

Jak to wygląda widać na poniższym filmie.


Jeżeli chcemy po restarcie lub ponownym włączeniu Raspberry Pi uruchmić Google Assistant wpisujemy w konsoli:

source env/bin/activate

oraz:

python -m googlesamples.assistant