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).

 

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!

_Wszystkie wpisy z tej kategorii

blogpost
Artykuły

Lesson Learned Explained: Wdrożenie programu ciągłej innowacji w sektorze obronnym

W dynamicznym świecie lotnictwa i przemysłu zbrojeniowego, jeden z naszych klientów postanowił podjąć wyzwanie: jak skutecznie zwiększyć wykorzystanie nowoczesnych technologii i utrzymać konkurencyjność? Odpowiedzią miało być wdrożenie Programu Ciągłej Innowacji, jako fundamentu nowego modelu biznesowego. Kluczowym elementem tego programu było regularne testowanie technologii, aby wprowadzać na rynek innowacyjne produkty.

Czytaj więcej
blogpost
Artykuły

Jak wdrożyć założenia Przemysłu 4.0 mądrzej, szybciej i łatwiej?

Pojęciem związanym z Przemysłem 4.0 jest Smart Factory - inaczej mówiąc "inteligentna fabryka". Ten typ fabryki oparty jest na zintegrowanych systemach przy wykorzystaniu przemysłowego Internetu Rzeczy i nowych metod organizacji produkcji. Celem jest zapewnienie wysokiego poziomu personalizacji produktów i realizacja procesów produkcyjnych przy minimalnym nakładzie pracy. Wdrożenie koncepcji Smart brzmi dobrze, ale wydaje się trudne do realizacji? Bez obaw, to będzie interesująca przygoda, pod warunkiem że po swojej stronie masz odpowiedniego przewodnika.

Czytaj więcej
blogpost
Artykuły

6. biznesowych korzyści modernizacji aplikacji w chmurze Amazon Web Services. Pokonaj dług technologiczny

Oczywiste jest, że firmy muszą nadążać za szybko zmieniającym się krajobrazem cyfrowym, aby pozostać konkurencyjnymi. Modernizacja aplikacji w chmurze jest kluczową strategią aktualizacji przestarzałych systemów. Bez tego działania, nie da się w pełni wykorzystać zalet jakie oferuje chmura, takich jak te zapewniane przez jedną z najpopularniejszych na świecie platform chmurowych, Amazon Web Services (AWS). W […]

Czytaj więcej
blogpost
Artykuły

Podejście Cloud Native: Modernizować istniejące czy budować od podstaw natywne aplikacje chmurowe?

Czym są aplikacje wie chyba każdy. A jak jest z pojęciem Cloud Native? Być może każdy, no prawie każdy, coś słyszał i będzie miał swoje zdanie. Dobrze, to czym jest tak naprawdę Cloud Native Applications ( aplikacje natywne w chmurze / natywne aplikacje chmurowe) i samo podejście Cloud Native? Czy warto tworzyć nowe lub modernizować istniejące aplikacje do modelu Cloud Native, by usprawnić systemy i/lub przezwyciężyć dług technologiczny? W tym artykule postaram się odpowiedzieć na powyższe pytania oraz pokazać dlaczego podejście Cloud Native może być kluczowym elementem sukcesu transformacji cyfrowej każdej organizacji.

Czytaj więcej
blogpost
Artykuły

Czy sztuczna inteligencja zdominuje wizję przyszłości i rozwoju cloud computing?

Początek roku to okres wzmożonych podsumowań minionych miesięcy, a także przygotowywania planów na kolejne. W tym czasie pojawia się wiele mniej lub bardziej trafnych predykcji na temat tego, czego możemy spodziewać się w najbliższej przyszłości w ramach oferowanych przez dostawców usług w chmurze. W przypadku chmury obliczeniowej możemy z dużym prawdopodobieństwem przewidzieć, co w takich […]

Czytaj więcej
blogpost
Artykuły

Bezpieczeństwo chmury Azure: Jak zapewnić model Zero Trust i wykorzystać AI na swoją korzyść? (cz.2)

W poprzednim artykule poruszyliśmy temat czym jest model Zero Trust i dlaczego jest tak istotny w zapewnieniu najwyższego poziomu bezpieczeństwa zasobów firmy w chmurze i poza nią. W tej części będziemy kontynuować przegląd usług chmury publicznej Azure a także skupimy się na wątku AI w temacie bezpieczeństwa. Microsoft Defender dla chmury Microsoft Azure to rozległe […]

Czytaj więcej
blogpost
Artykuły

Bezpieczeństwo chmury Azure: Jak zapewnić model Zero Trust i wykorzystać AI na swoją korzyść? (cz.1)

Od czasu globalnej popularyzacji pracy zdalnej, zespoły cyberbezpieczeństwa stają przed coraz większymi wyzwaniami, aby zapewnić skuteczny i bezpieczny dostęp do krytycznych zasobów oraz danych organizacji, a także zagwarantować ich bezpieczne przechowywanie. Skomplikowane ataki phishingowe (wpływające krytycznie na bezpieczeństwo plików oraz infrastruktury), nie rzadko wspomagane AI, w wyniku których ujawniane są dane uwierzytelniające, pozwalają na ataki z […]

Czytaj więcej
blogpost
Artykuły

Czy Edge to nowa chmura?

Wiele organizacji, które przyjęły chmurę, traktuje Edge jako naturalne rozszerzenie swoich rozwiązań opartych na niej. Z drugiej strony, te firmy, które są na samym początku podróży ku chmurze, są często znacznie bardziej świadome możliwości obu technologii, więc rozważają ich równoczesne wykorzystanie od samego początku.Pytania są więc następujące:Czy Edge zastąpi chmurę? Czy korzystanie z Edge'a w chmurze przeniesie ciężar rozwoju oprogramowania z powrotem do on-premise? Wspólnie zastanówmy się nad odpowiedziami, zapraszam do lektury.

Czytaj więcej
blogpost
Artykuły

Obliczenia kwantowe: Kot Schrödingera zadomowił się w chmurze

Zapnij pasy i dołącz  do mnie w podróży do świata, w którym kot może być zarówno martwy, jak i żywy, a cząsteczka może znajdować się w dwóch miejscach jednocześnie. Odkryjemy fascynujący świat obliczeń kwantowych (Quantum Computing) i ich rolę w przetwarzaniu w chmurze.

Czytaj więcej
blogpost
Artykuły

Czy chmura hybrydowa i multi-cloud obronią Cię przed vendor lock-in? Czy rzeczywiście musisz się tego wystrzegać?

Uzależnienie od dostawcy (vendor lock-in), to pojęcie nad wyraz często łączone z branżą IT, a w ostatnich latach szczególnie z chmurą obliczeniową, chociaż zdecydowanie nie jest z nimi nierozerwalnie związane. Przez ekonomistów rozpatrywane było w szerszym kontekście na długo przed tym, kiedy świat po raz pierwszy usłyszał o AWS czy Azure. Z perspektywy klienta oraz użytkownika, zazwyczaj bywa postrzegane w negatywnym świetle, niejednokrotnie wywołując niechęć i strach przed skorzystaniem z danej usługi lub produktu.Na pierwszy rzut oka wydaje się, że w obszarze chmury publicznej problem nie jest błahy. Nawet główni beneficjenci zjawiska, czyli najwięksi dostawcy usług chmurowych, zdecydowali się poruszyć to zagadnienie na swoich oficjalnych stronach internetowych, więc najwyraźniej coś musi być na rzeczy…A czy faktycznie jest, sprawdzimy w tym artykule. Przyjrzymy się ryzykom, jakie niesie za sobą vendor lock-in dla organizacji planujących adopcję chmury. Zastanowimy się również, czy skorzystanie z usług kilku dostawców (multi-cloud) jednocześnie może być dobrą receptą na poprawę sytuacji. Ponadto, weźmiemy pod lupę chmurę hybrydową.

Czytaj więcej

Zostańmy w kontakcie

Skontaktuj się