Jak zamienić (nie)zwykłe RaspberryPi w AWS Echo komunikujące się z otoczeniem przy użyciu modułu konwersacyjnego AWS Alexa? Jak z jej pomocą zapytać o pogodę w Londynie, poprosić o wyłączenie świateł w domu czy umówić wizytę u dentysty? Jak w paru krokach rozszerzyć Aleksę o (praktycznie) dowolne funkcjonalności? Jak sprawdzić czy słuchający nas ludzie są zadowoleni, smutni albo nie daj Boże – przerażeni? Na te i inne pytania odpowie poniższy artykuł- materiał został przedstawiony podczas październikowej konferencji DevForge w Białymstoku w ramach prelekcji „Mów do mnie jeszcze – budujemy własną AWS Alexa na Raspberry Pi”.

AWS na Rapsberry Pi

Kilka słów o Amazon Echo

AWS Echo to urządzenie umożliwiające obsługę głosową (którą udostępnia poprzez AWS Alexa) przydatną w codziennej pracy, rozrywce czy zwykłych domowych czynnościach ( takich jak odtwarzanie muzyki, sterowanie inteligentnym domem, umawianie spotkań, przedstawianie prognozy pogody i wiele więcej).

 

Zobaczmy jak Echo reklamuje sam Amazon:

 

Czy chcielibyście mieć takie urządzenie u siebie w domu? Teraz jest to możliwe nawet bez kupowania fabrycznie nowego, lśniącego produktu Amazona. Wystarczy RaspberryPi (albo tak naprawdę zwykły komputer osobisty) i odrobina osprzętu.

Mów do mnie jeszcze – budujemy własną AWS Alexa na Raspberry Pi krok po kroku:

1. Zakładamy konto Developerskie na Amazonie

Aby zacząć pracę musimy założyć konto na stronie developer.amazon.com i zarejestrować nasze urządzenie. Cały proces jest opisany na stronie – https://github.com/alexa/avs-device-sdk/wiki/Create-Security-Profile.

Po ukończonej instrukcji powinniśmy mieć zarejestrowane nowe urządzenie;

AWS Echo

 

2. Konfigurujemy malinkę

Pierwszym krokiem jest zamienienie naszej malinki w tzw. „Alexa enabled device”, czyli po prostu urządzenie, które będzie w stanie konsumować serwis Alexy i z pomocą peryferii (mikrofon i głośniki) wchodzić w interakcję z otoczeniem. W tym momencie zakładamy że skonfigurowaliście sobie OS’a na malince, np. Raspbian, więc jeśli jeszcze tego nie zrobiliście zapoznajcie się z – https://github.com/alexa/alexa-avs-sample-app/wiki/Setting-up-the-Raspberry-Pi.

 

Następnie musimy zainstalować SDK Alex’y na naszym Raspberrym a zrobimy to wykonując prosty tutorial z oficjalnej strony projektu – https://github.com/alexa/avs-device-sdk/wiki
Na powyższej github’owej stronie znajdziecie przewodniki do Raspberry Pi, Ubuntu, macOS, Windowsa, iOS czy Androida. Jest w czym wybierać ale my skupimy się na wersji malinowej, która jest dostępny tutaj: https://github.com/alexa/avs-device-sdk/wiki/Raspberry-Pi-Quick-Start-Guide-with-Script

 

Po przeprowadzeniu kroków z przewodnika Wasz sprzęt będzie gotowy do przykładowych interakcji z Alexa Voice Service. Spróbujcie, korzystając z dostarczonego Sample App, zapytać np. jaka jest teraz pogoda albo sprawdźcie jaki rezultat przyniesie pytanie – „Alexa – tell me a joke”.

 

3. Zbudujmy coś więcej!

Po wstępnym rozpoznaniu i zabawie z Alexa Voice Service czas na projekt nieco ambitniejszy. Czy prowadząc wykład, rozmawiając ze znajomymi albo przeglądając zdjęcia z koncertu nie byłoby ciekawie wiedzieć w jakim nastroju są słuchacze? Oczywiście że byłoby! Spróbujmy zamodelować aplikację (tzw. Alexa skill – czyli umiejętność, która rozszerza zbiór domyślnych interakcji, przygotowanych przez Amazona i nie tylko dla AVS) która automatycznie wykona zdjęcie z pomocą kamery podłączonej do RaspberryPi i przeanalizuje nastrój widowni.

 


Zanim przystąpimy do budowy całej architektury – zamodelujmy Alexa Skill, który będzie mógł reagować na nasze polecenie i przekazywać sterowanie dalej (np. do modułu serverless oferowanego przez AWS – czyli AWS Lambda). W tym celu ponownie logujemy się na stronie developer.amazon.com by stworzyć nowy, prosty Skill, który zareaguje na kilka fraz (pytających o nastrój widowni) i odpali Lambdę by proces obrabiania zdjęcia i publikacji wyników mógł się toczyć wedle naszego życzenia. Wyczerpujący opis jak tworzyć Skilla i podpinać go z Lambdą znajdziecie tutaj – https://developer.amazon.com/docs/custom-skills/host-a-custom-skill-as-an-aws-lambda-function.html (nie wspominając o dziesiątkach filmików na YT, gdzie prowadzący implementują własne Skille w kilka(dziesiąt) minut na żywo). Docelowo chcemy aby nasz – nazwijmy go „Check Audience Mood” Skill reagował na poniższe frazy (tutaj zwane Intentami):

alexa development console

 

Widzimy, że nasz Skill będzie reagował gdy zapytamy Alexę frazami:

  • are they happy
  • check mood
  • are they pleased
  • check audience


Polecam w tym miejscu nieco „pobawić” się Intentami, i Skillami jako takimi jako, że Amazon udostępnia bogatą dokumentację i możliwość testowania „na sucho” interakcji głosowych – bez konieczności instalowania rozwiązań na fizycznych urządzeniach.

 

Wracając do naszego pomysłu sprawdzania nastroju publiczności – przykładowy projekt mógłby wyglądać następująco:

Budowanie AWS Echo, Alexa, Rapsberry pi

 

Przyjrzyjmy się po kolei składowym tego rozwiązania:

 

1. W pierwszym kroku aktywujemy Alexę by użyła naszego Skilla, odpowiednio wywołując Intent, np. „Alexa, ask – check audience mood – are they happy?” (uzbrójmy się w cierpliwość, Alexa ma czasem problem z homonimami i nie zawsze w 100% za pierwszym razem rozpozna nasze zdanie, dodatkowo czasem może polecieć NPE z Sample App… trzeba próbować 😊 )

 

2. Po poprawnym rozpoznaniu Skill wywoła Lambdę, którą w nim zdefiniowaliśmy by odłożyć na kolejce SQS informację, że potrzeba nam wykonania zdjęcia kamerą.

 

3. Do Raspberrego mamy podpiętą kamerę, która wykonuje zdjęcia za pomocą skrytpu czekającego na wiadomość odkładaną na SQS (oczywiście można to wykonać na inne sposoby, np. otwierając tunel i „rozmawiając” z jakimś mikro-serwisem, używając ngork’a etc.) i w moim przypadku wykonuje zdjęcie korzystając z programu fswebcam, którego do wykonania zdjęcia możemy zmusić następującą linijką:

fswebcam -r 1280×720 –no-banner /home/pi/webcam/$DATE.jpg

Oczywiście DATE to zmienna która w skrypcie jest generowana by nadać zdjęciu unikalną nazwę. Wykonane foto jest następnie ładowane do bucketu na S3 (hosting plików z grubsza rzecz biorąc na AWS).

 

4. Obiekt zdjęcia, który wyląduje w naszym dedykowanym buckecie S3 ma zapięty trigger powodujący odpalenie się Lambdy, w której zaszyjemy większość kodu potrzebnego do obsłużenia sekwencji rozpoznawania ludzkich emocji i publikacji wyników. W skrócie:

  • Obiekt zdjęcia ląduje w S3 i wywołuje automatycznie dedykowaną Lambdę
  • W Lambdzie wyłuskujemy obrazek i przekazujemy go do serwisu AWS Rekognition, który zwróci nam zidentyfikowane obiekty spośród których wyciągniemy twarze i rozpoznane nastroje, przykładowy skrypt wywołujący Rekognition w Pythonie 2.7:

Następnie budujemy listę zawierającą informację o emocjach ludzi rozpoznanych przez Rekognition (serwis ten zwraca nam bogatą odpowiedź o wyłuskanych danych wraz ze stopniem „pewności” dokonanej identyfikacji)

Posiadając taką listę nie pozostaje nam nic innego niż zbudować z niej czytelny wpis, który następnie możemy opublikować, np. na twitterze (w artykule pomijam rejestrowanie developerskiego konta i konsumowanie API Twittera, nie sprawi ono jednak nikomu większych problemów).

Jesteśmy gotowi do akcji!

4. Oglądamy nasze dzieło w działaniu!

 

Gotowy zestaw może wyglądać podobnie do poniższego:

Budowanie AWS Alexa, Rapsberry, sprzęt

Wystarczy wywołać Alexę i zapytać – „Alexa, ask Check Audience Mood – are they pleased?” by po chwili na skonfigurowanym zawczasu koncie twitterowym pojawiła się wykonana fotografia wraz z analizą nastrojów załączoną jako treść:

Podsumowując – analiza zdjęć czy ich publikacja na twitterze to co prawda nie rocket science (ani brain surgery – if You know what I mean 😉) ale w przypadku implementowania tego na stacku AWS widzę dwie zasadnicze korzyści:

  • Czas – całość modelowania tego PoC to nie więcej niż dwa, luźnie wieczory zabawy. Nie trzeba znać się na sieciach neuronowych by zbudować całkiem interesujące projekty w niedużym czasie (polecam porozglądać się za inspirującymi projektami publikowanymi przez rozmaitych pasjonatów!)
  • Skala – Amazon w materii zasięgu dotarcia do klientów daje nam sporą przewagę, bowiem ilość partnerów technologicznych a co za tym idzie – ilość urządzeń na ilu nasze rozwiązania mogą być odpalane (inteligentne domy, samochody, wsparcie osób niepełnosprawnych i wiele innych obszarów) powodują przyjemny zawrót głowy na myśl o potencjalnych możliwościach i korzyściach

Zachęcam do samodzielnego eksperymentowania i życzę inspirującej przygody z narzędziami Amazona – twórzcie wspaniałe rzeczy!

How useful was this post?

Click on a star to rate it!

Average rating 5 / 5. Vote count: 4

No votes so far! Be the first to rate this post.

W przypadku naruszenia Regulaminu Twój wpis zostanie usunięty.
Votre nom et prénom

_Wszystkie wpisy z tej kategorii

Chmura napędza cyfrową transformację

Chmura coraz częściej stanowi kluczowy aspekt powodzenia procesu transformacji cyfrowej. Rozmowa z Christianem Thiem, starszym analitykiem biznesowym w TT PSC Germany GmbH, dostarczy…
Czytaj dalej

Co musisz wiedzieć o serverless computing?

Serverless cmputing nadal budzi sporo wątpliwości, szczególnie wśród tych środowisk, które właśnie zaczynają korzystanie z usług chmurowych lub dopiero planują migrację do chmury…
Czytaj dalej

Czym jest DevOps as a service i czemu warto z tego skorzystać?

Oszczędność, skrócenie czasu wdrażania zmian oraz weryfikowanie ich poprawności – to tylko kilka przykładowych korzyści, których gwarantem jest DevOps. Ta innowacyjna metodologia wprowadziła…
Czytaj dalej

9 powodów, dla których powinno się wykorzystywać chmurę w prowadzeniu biznesu

Zgodnie z raportem firmy RightScale „2019 State of the Cloud Report from Flexera”, aż 94% firm używa chmury. To nie przypadek, że tyle…
Czytaj dalej

Jak zacząć przygodę z Azure i przygotować się do certyfikacji AZ-900

Zapotrzebowanie na specjalistów w obszarze Cloud stale rośnie. Jak zdobyć szeroki zakres kompetencji i szybko odnaleźć się w temacie chmury? Najlepiej zacząć od…
Czytaj dalej

Chmura na czas kryzysu, czyli jak usprawnić pracę w swojej firmie

Świat, który znaliśmy przez ostatnie lata mocno się zmienia. Wymusza na nas zmianę przyzwyczajeń, a także sposobów w jaki pracujemy i realizujemy nasze…
Czytaj dalej

Jak zadbać o bezpieczeństwo aplikacji serverless w AWS?

Konferencja AWS re:Invent 2019, podobnie jak jej poprzednie edycje, obfitowała w ciekawe wykłady typu breakout sessions, których celem było przybliżenie uczestnikom wybranego zagadnienia…
Czytaj dalej

Parametry SSM w automatyzacji AWS

Jakiś czas temu zostałem zaangażowany w projekt, który miał dostarczyć Windchilla w sposób wysoko dostępny – w sumie nic nowego, klaster załatwia sprawę…
Czytaj dalej

Jak dotknęliśmy chmur – relacja z AWS re:invent 2019

Udział w konferencji AWS re:Invent wymaga od uczestników, pomijając finansowanie, nieco zaangażowania i odrobiny samozaparcia. W naszym przypadku zakup wejściówek na konferencje w…
Czytaj dalej

Najważniejsze nowości z AWS re:Invent 2019

Ciekawi Cię jakie nowości zostały zaprezentowane na AWS re:Invent, ale nie masz czasu stale przeglądać doniesień z Vegas? Nie musisz już szukać. Specjalnie…
Czytaj dalej

Jak wykorzystać Talend Open Studio w branży medycznej?

Wykorzystywanie nowoczesnych technologii w medycynie jest coraz powszechniejsze. Papierowe karty pacjentów wypadają z obiegu i zastępują je elektroniczne formy przechowywania danych. Proces digitalizacji…
Czytaj dalej

Czym jest chmura Amazon Web Services?

Chmura obliczeniowa to jedna z najdynamiczniej rozwijających się technologii na świecie. Stopniowo wypiera tradycyjne rozwiązania serwerowe, zgarniając dla siebie coraz większą część rynku.…
Czytaj dalej

Dlaczego serverless jest przyszłością aplikacji

Co kilka lat, w świecie IT, pojawia się nowe, przełomowe rozwiązanie. Aktualnie, wszystkie oczy są skupione na Machine Learning(ML) oraz Sztucznej Inteligencji(AI). Wcześniej…
Czytaj dalej

_Zostańmy w kontakcie

Skontaktuj się