19 października 2017

Nadchodzi nowe wsparcie w IoT: NarrowBand dla internetu rzeczy - Nb-IoT + T-Mobile w hub::raum/Kraków

Wiele startupów tworzy IoT i niewiele wie o możliwościach jakie niesie przyszłość w temacie komunikacji urządzeń internetu rzeczy. Tzn. używają WiFi + Bluetooth, bo RaspberryPi i inne tanie płytki mające wsparcie społeczności ułatwiają dostęp do wiedzi i darmowego softu. To jest super z punktu widzenia przygotowania prototypu i uruchomienia PoC. Jednak takie rozwiązania nie spełniają często standardów automatyki: bezawaryjna praca ciągła, gwarancja działania do 5 lat, modułowa modernizacja/upgrade software/hardware, brak zakłóceń sfery dookólnej i niewielkie zużycie mocy.
Po prostu patrząc na IoT robione "na kolanie" widzę dużo ludzi, którzy po obejrzeniu YT tworzą swoje środowiska, natomiast robią to bez szerszej wiedzy z dziedziny elektroniki/sieci/informatyki. Takie prototypy najczęściej idą do szuflady i docelowy system wbudowany jest zamawiany w firmie znającej się na rzeczy a czasami też startupowcy uczą się elektroniki od podstaw i budują wiele prototypów dochodząc do wyznaczonego celu. Ale mimo wszystko sobie jakoś radzą na rynku systemów wbudowanych, bo jest to dość bogaty w "prawie gotowe" rozwiązania rynek.

Jeśli chodzi o startupy IoT oraz wsparcie urządzeń internetu rzeczy jest dla nich radosna nowina.
Otóż jak firma T-Mobile na swojej stronie IoT zadeklarowała, już niedługo obok internetu i transmisji danych 2G/3G/4G ujrzymy w ofercie nowa generację połączeń 5G o nazwie NarrowBand. Energooszczędne i dedykowane pasma dla transmisji danych z urządzeń M2M.

Prezentacja pochodzi ze stron T-Mobile - link do prezentacji na temat Internet rzeczy + Nb-IoT


Tak się składa, że lubię meetupy i trafił mi się jeden w tym temacie w Krakowie - na temat tej nieznanej wcześniej technologii NarrowBand (Bazyli, dzięki za zaproszenie). Jak to zwykle bywa spakowałem plecak, kupiłem bilety, aby spędzić 98% czasu w podróży i 4h na inspirującym spotkaniu z inżynierami skupionymi wokół hardware i transmisji danych. Jak się zorientowałem miejsce nazwane hub::raum to work place w Krakowie, gdzie swoje projekty rywalizują startupy zaproszone przez firmę T-MOBILE do pierwszej fazy testów wdrożeniowych dla technologii NarrowBand. Bardzo przyjazne miejsce i z unoszącymi się w powietrzu startupowymi tematami :)


Kiedy przybyłem na spotkanie zaskoczyła mnie spora ilość rożnych płytek prototypowych wspierających NarrowBand ( NB-IoT ). Zawierające różne marki modemów oraz podstawek dev. kits zwróciły moją uwagę - oto jak wyglądały:























Okazało się, że powyższe developerskie kity to nasze przedmioty ćwiczeń. Wow, od razu radość na inżynierskiej duszy, że praktyka a nie tylko teoria rządzi na tym spotkaniu.

Z rzeczy ważnych dowiedziałem się, że w Krakowie w okolicy warsztatów jest działająca aktywna stacja GSM/UMTS dla testów NarrowBand. Wdrożenia dla powszechnego użycia we własnych produktach jakie się zapowiadają na 2018 rok dotyczą wstępnie Krakowa i Warszawy.
Coś co Was ucieszy to fakt, że NarrowBand jest przeznaczony i zaprojektowany od początku dla IoT, zakłada małe pakiety danych nie więcej niż kilka mega bajtów na miesiąc. Jego szacowana cena rocznego abonamentu to ok. 20 USD :) i tutaj fąfary ; )
Nie ma na tą chwilę modemów wspierających protokół TCP natomiast są modemy wspierające UDP. Istotny fakt to niemożliwość podłączenia się z zewnątrz do urządzenia. Tzn. możemy tylko traktować modem jako klienta sieci i jeśli postawimy na nim aplikację to z założenia powinien to być klient do usługi a nie aktywny serwer.

Techniczna wartość jaka płynie z takiego rozwiązania to również oszczędność energii tzn. nasz produkt IoT może wysyłać rzadziej dane i przez to działać na akumulatorze dłużej. Producenci modemów NarrowBand wprowadzili specjalne tryby oszczędzania energii oraz wybudzania, aby nasze urządzenia działały dłużej.

A teraz nieco fotek i komentarzy do nich. Oto początek prezentacji ze spotkania.



Oto typowy deweloper kit jakiego używałem na warsztatach i zestaw komend AT stosowanych do niego.









Zasadniczo to działa po podłączeniu do USB. Pojawia się w systemie wirtualny port ttyUSBx (ew. kolejny COMx) i wystarczy otworzyć port i zrobić restart modemu. Przedstawia nam się od razu i możemy działać z ustawieniem trybu i zasad działania.

Oto zrzut ekranu z praktycznego terminala cutecom na Ubuntu i wspierającego wydawanie komend AT.







Wśród uczestników spotkałem fascynatow nowych technologii i hardware. Nie jest to spore grono fanatyków, ale dość konkretne jak to w inżynierskiem środowisku bywa. Jako gift otrzymałem od jednego gościa PCB zrobione w Chinach na którym można osadzić modem i kartę SIM w postaci układu scalonego. Dowiedziałem się, że w naszym kraju można kupić takie SIMy w T-Mobile, które wlutowuje się w PCB i przez to wielkość urządzenia znacząco maleje.
Oto jak prezentuje się taka płytka z dwóch stron. Może ktoś skorzysta i pobawić się tematem jak ja.




Moje zabawki, z którymi będę niebawem się bawił w podłączenie modemu GSM do sieci wyglądają tak:





Zamierzam kupić kilka kart rożnych operatorów i pobawić się w transmisję danych a jeśli będę miał NarrowBand w zasięgu to również wchodzi w grę :) ale szukam sponsora/dostawcy na modem SARA N21  na ten moment najwięcej urządzeń NB-IoT widziałem w u-Blox, ale z czasem się to napewno zmieni.


Gdybyście chcieli obejrzeć co n.t. NarrowBand planuje T-Mobile Polska - polecam ten cenny materiał o NarroBand IoT w odniesieniu do Polski:






Napiszcie o Waszych przygodach z IoT, GSM, modemami i ew. NarrowBand w komentarzach.



Linki


Narrowband-IoT: wsparcie Internetu rzeczy

9 października 2017

Fenomen DEVOPS na ratunek dla skostniałych i niezbyt wydajnych zespołów w IT (programista i administrator w jednym)

Widowiskowe prezentacje na konferencjach to nie tylko takie, które powalają technologią i frapują, że tego tricku architektonicznego jeszcze nie mamy w naszym systemie :-) Są to również sprawy "miękkiej natury ludzkiej", które w branży IT stanowią często niezbędny pomost pomiędzy tymi, którzy potrafią ale im się nie chce a tymi, którzy mogliby więcej bo mogą dać z siebie więcej dla wyższych idei :-)

Jak wiadomo z ciekawej sztuki V jak Vendetta "idea jest niezniszczalna" i w tym wpisie chętnie poruszę temat spraw nie technicznych, które wspierają ludzi technicznych. Idei, które trwają w świecie DevOps :-)


Jak się zaczęło to całe DevOps i gdzie po drodze spotkali się ludzie z IT?

Na początku był Dev a potem pojawił się Ops albo odwrotnie, zależnie od źródeł ... ;-)
Zmierzam do tego, że na początku ery komputerów i informatyki istnieli deweloperzy, którzy stworzyli maszyny, po czym dalej byli zajęci kodowaniem i mieli misje rozwoju oprogramowania. Zabrakło im czasu na utrzymywanie i zarządzanie technicznymi aspektami ich dzieła i pojawił się zawód administratora w informatyce.
Celowo bardzo ten wstęp uprościłem, gdyż te dwie role i do tej pory rozdzielne zawody: programista / developer oraz sysops / ops / administrator za sprawą tzw. chęci stały się jednością:)

"Banalne" założenie – łączymy wysiłki zespołów rozwoju i utrzymania (Development i Operations).



Tak na serio poruszam temat dość niesamowity w branży IT, kiedy dwie popadające w skrajności - tak, nie przesadzam - grupy informatyków o podobnych zainteresowaniach zawodowych ścierały się ze sobą i utrudniały sobie prace a tu nagle ....
Z pomocą przyszedł tzw. Agile wraz z manifestami zwinności w codziennym postępowaniu. Niczym kodeks, który stanowi bazę dla wszelkich czynności zawodowych zjawia się: Agile Manifesto , który wspomógł ideologicznie cały świat IT. 
Istotnie są tacy, którzy się temu nie poddali - jak zwykle "mądrzejsi" - ale nie o nich jest ten wpis. Skupiam się na ludziach, którzy lubią na co dzień ryzykować i eksperymentować, którzy porzucili wygodną strefę komfortu na rzecz zwinności w pracy.

Oto zasady, którymi posługuje się na stale od wielu lat:
Wytwarzając oprogramowanie i pomagając innym w tym zakresie, odkrywa się lepsze sposoby wykonywania tej pracy. W wyniku tych doświadczeń przedkłada się:
  • Ludzie i interakcje ponad procesy i narzędzia
  • Działające oprogramowanie ponad obszerną dokumentację
  • Współpracę z klientem ponad formalne ustalenia
  • Reagowanie na zmiany ponad podążanie za planem
Według Manifestu Agile docenia się to, co wymieniono po prawej stronie, jednak bardziej ceni się to, co po lewej (src)

Otóż, naturalnie zainteresowanie programowaniem ze strony administratorów systemów operacyjnych oraz zainteresowanie budową systemu Linux ze strony programistów, czy inżynierów oprogramowania spowodowało falę pozytywnych kreacji. Nie teoretyzuję tutaj, bo widzę na co dzień zadowolonych adminów, software developerów, którzy nazywają siebie DevOpsami.



Nazwałem zjawisko w tytule jako Fenomen DevOps dlatego, że nie znam branży, w której dwa kierunki rozwoju zawodowego spotykają się tak ochoczo i brną we współpracę.
Są widoczne naturalnie pozytywne skutki tego połączenia w wielu organizacjach. Wiele firm z TOP 500 już wdrożyła Agile, SCRUM, czy Lean ew. Kanban i po latach nauki mogą cieszyć się zwinnością w produkcji zmian w swoich produktach.


Co zyskujemy wdrażając w organizacji kulturę DevOps ?



Argumenty poniższe są zapożyczone z praktyki:

  • zadowolenie wśród pracowników i brak barier branżowych (dyskusje na różne tematy)
  • otwartość i transparentność w działaniach (każdy z każdym współpracuje jak najlepiej potrafi)
  • utrzymanie i rozwój produktów przez wiele zwinnych osób (bo im się chce, a nie muszą)
  • zespoły produkujące są też utrzymującymi swoje produkty (bo wiedzą o nich wszystko)
  • zespoły monitorują swoje wdrożenia i produkty metrykami biznesowymi i technicznymi (wiedzą przed awarią, że zasoby niebawem się skończą i zareagują na automatyczny alarm)
  • automatyzują pracę, która jest powtarzalna i monotonna (bo są wygodni i maszyna zrobi to zawsze tak samo, w tym czasie mogą pójść na herbatkę)
  • dzielą się ze światem Open Source, bo biorą z niego też niektóre składowe swoich produktów
  • pozwalają na krytykę innym ze swojej pracy i dyskutują o tym, wyciągają wnioski (wartościowa cecha ludzka)
  • panują nad kodem i wiedzą co zrobić, aby koszt utrzymania nie rósł stale (bo są inżynierami)
  • motywują się wzajemnie przez dzielenie pasjami zawodowymi (taki to wesoły świat IT)
  • razem z biznesem patrzą sobie na ręce, bo mają metryki i mogą (biznes też się uczy wiele z właściwych metryk n.t. zdarzeń w produkcie)
  • robią Hackatony, aby udowodnić sobie i innym, że zabawki zrobione w 24h potrafią zaskakiwać oraz poznają kolegów z innych odległych oddziałów (same atuty)
  • drobne zmiany, które można szybko zobaczyć na produkcji są cenniejsze niż 5 m-cy straty
  • eksperymentowanie to domena ludzi odważnych (czyli DevOpsów)


Liczby w różnych źródłach mówią o tym fenomenie dość konkretnie.

Z jakimi rozwiązaniami wiąże się DevOps ?

Celowo pozostawiłem nazwy w języku angielskich, bo ozn. bardzo konkretne działania
  1. Continuous build - czyli zmiana to uruchomienie procesów budowania świata/środowiska od zera w konkretnym scenriuszu
  2. Continuous testing - czyli każda zmiana to uruchomienie testów automatycznych i zbudowanie paczki do wdrożenia lub alert
  3. Continuous inspection - przeglądy kodu (Code Review), audyty, zapis historii zmian, autora zmian
  4. Continuous integration - jeśli zbudujemy swój projekt, to jeszcze zintegrujmy go z resztą usług - jak zadziałają nie tylko nasze testy ale też innych, to jest bardzo dobrze
  5. Continuous delivery - małe przyrosty zmian dające minimalną wartość produktu to cenny każdy dzień w pracy
  6. Continuous configuration enforcement - wiem, gdzie przestawić przełączniki mojej aplikacji i wszelkie paramerty. Nie potrzebuję wdrożenia, aby zmienić właściwości i warunki pracy usług. Zawsze inni widzą, co zmieniałem ostatnio i mogą w trakcie awarii odpowiedni szybko zareagować.
  7. Continuous deployment - najlepiej kiedy każda zmiana w kodzie, na dowolnym branchu uruchamia procedury testów automatycznych / integracyjnych. Lubimy spać spokojnie.
  8. Continuous monitoring - na każdym etapie wytwarzania, testowania, wdrożenia, działania staraj się widzieć metryki a najlepiej podepnij do nich automatyczny system alarmujący w SMS lub dzwoniący. Tak przy każdej zmianie testuj też system alertujący, uratuje to Twój swiat.  
  9. Continuous recovery - jeśli nie udało się wdrożenie, rollback to nie problem - wycofujemy i próbujemy dalej
  10. Continuous scaling - cóż, w święta większy ruch, to nie problem jeden parametr lub automatyczne skalowanie instancji lub maszyn spowoduje, że wydajność usług nie spadnie


Antywzorzec jaki zauważyłem w rozumieniu DevOps to jest robienie oddzielnych integracji zespołów DEV i odzielne OPS, to czyni świat IT gorszym a ludzi klasyfikuje niepotrzebnie na dewów i adminów. Ludzie nie lubią być sortowani, ale bardzo cenią sobie możliwość poznania zdania innych stron.
Inny problem to zamknięte w sobie i niewspółpracujące typki o dziwnych charakterach - cóż, warto być wyrozumiałym i dać im czas oraz szansę rozwoju. Po jakimś czasie będą bardzo wdzięczni za otworzenie oczu i wytarcie mgły sprzed ich oczu ;-) kiedy zobaczą swój kod na produkcji pod wysokim obciążeniem i kiedy miliony polaków przed swoimi monitorami klika ten "mój guzik" :-)

Jeśli nadal zastanawiasz się, czym jest DevOps i nie wiesz, jak wdrożyć u siebie zapraszam do dyskusji. Chętnie odpowiem o tym, jak ja to rozumiem i poznam też inne punkty widzenia.







8 października 2017

[ Naprawianie na Kolanie ] Praktyczne naprawianie elektroniki, robotów, błędów w oprogramowaniu, systemów operacyjnych

Odważyłem się i postanowiłem naprawiać różne praktyczne rzeczy materialne i mniej materialne na oczach telewidzów YOUTUBE

NAPRAWIANIE NA KOLANIE - tak nazwałem serię odcinków typu FIX IT ! w moim wydaniu, gdzie prezentuję jak w warunkach amatorskich (domowych) można naprawić, dokonać przeglądu, zmienić i udoskonalić urządzenia codziennego użytku.

Pierwszy odcinek dedykuję użytkownikom iRobot Roomba 650  a szczególnie mojemy mentorowi w tematyce Agile/SCRUM/Kanban/XP. Pomyślałem, że zawsze kilka stówek w kieszeni :-) to nie problem, więc jak to polak z natury ciekawski naprawiam sobie z wizją i fonią zapisaną na youtube.

Problem jaki poruszam ww pierwszym odcinku to to stukanie podczas pracy i związane z tym zanieczyszczenie części mechanicznej (trybów) głównego modułu czyszczącego w iRobot Roomba.
Wiele osób kojarzy firmę iRobot , która wprowadziła wspaniały wynalazek na rynek jakim jest automatyczny "pseudo odkurzacz". Każdy chciałby go mieć, ale nie wszyscy sobie zdają sprawę, że trzeba go stosownie konserwować. Oczywiście, mam tutaj na myśli regularne czyszczenie, bo jak to w mechatronicznych urządzeniach bywa kurz i brud nie wspomagają automatu.






Miłego oglądania i oczywiście naprawiania robotów :-)

16 maja 2017

Pixar's Renderman + Ubuntu + Blender = realistyczne renderowanie grafiki 3D

Od zawsze oglądamy produkcje firmy Pixar, ale nie wszyscy wiedzą, że piękne sceny do tych produkcji filmowych w tym bajek są renderowane w opublikowanym do użytku za darmo rendererze  Renderman. Niedawno ten silnik obchodził swoje 25 lat, co jest wielkim sukcesem w tej branży.



W związku z tym, że bawię się czasami blenderem (w modelowanie rzeczywistości oraz przygotowanie modeli do druku 3D) spróbowałem podłączyć ten renderer w ubuntu, aby uzyskać na swoich scenach takie realistycznie wyrenderowane grafiki 3D.

W kwestii samej architektury rozwiązania warto wspomnieć, że Pixar oferuje po rejestracji do celów nie komercyjnych skompilowany serwer i w procesie instalacji wiążemy go poprzez e-mail z kontem na stronie firmy Pixar. Dla wielu programów do modelowania 3D są dostępne dedykowane pluginy, które pozwalają na wykonywanie renderowania scen na silniku RenderMan

Renderer Pixara jest bardzo bogatym w opcje narzędziem z interfejsem graficznym.
Ten produkt pracował przy produkcjach, kótre nie raz wygrywały Oscara i nie tylko.


Dzięki niemu w scenach akcji w „Final Fantasy VIII” znalazło się efektowne rozmycie tła, w „Strażnikach Galaktyki” świat z komiksów Marvela zyskał nowe życie, popisowo złamał się Titanic, a Jedyny Pierścień wpadł do ognia Góry Przeznaczenia. źródło

Cechuje go kilka ważnych aspektów:

  • fotorealizm - RenderMan produktuje bardzo realistyczne obrazy z bazujących na fizyce cieniowaniu i świetle. To co mnie zaskoczyło, to w opcji renderowania ustawia się datę i godzinę, a pozycja słońca w scenie się wylicza automatycznie. Bardzo sprytne i praktyczne podejście.  
  • wydajność - bardzo efektywnie renderuje duże i skomplikowane - ze sporą ilością odbić światła - sceny. Oczywiście można renderować na farmie, czyli w cloudzie, co ułatwia pracę w tej branży.
  • jakość - możemy tworzyć wysokiej jakości obrazy z nowościami typu zaawansowane filtrowanie oraz rozmyciem w ruchu
  • kontrola - język RenderMan Shading Language i format danych Pixar's 3D (RIB) umożliwiają automatyzację kreacji oraz wyrażenie dowolnej ekspresji twórczej.
Oczywiście wspierane są wszystkie popularne dzisiaj systemy operacyjne.

Tutaj film pokazujący, jak podłączyć RenderMan w Blenderze.








Chciałbym przedstawić różne materiały wyrenderowane w Blenderze 2.78c, w tym oczywiście przy pomocy Pixar's RenderMan. Celowo zachowałem światło ze zmroku, aby ukazać jak w warunkach słabszego oświetlenia RenderMan radzi sobie ze scenami.

RenderMan rendering dla zachodzącego słońca








25 kwietnia 2017

Zwycięstwo Open Source nad pospolitą komercją



Zasady w świecie otwartego oprogramowania są dość naturalne:
  • stwórz sobie projekt, który możesz zrobić lub szukasz innych chętnych do jego realizacji
  • korzystaj z kodu innych i zgłaszaj swobodnie poprawki, błędy, pomysły, uwagi
  • kontrybuuj, czyli dorzucaj kiedy chcesz swoje trzy grosze zupełnie "za darmo" do projektów
  • ciesz się życiem, sukcesami i ew. dolarami za zdobycze/osiągnięcia całego świata IT bazującego na Open Source
  • nie narzekaj, po prostu poprawiaj niedoróbki jako wolontariusz - wielu też się teraz uczy
  • inne specyficzne zależne od konkretnych prawnych licencji
Jak to bywa w wielkim świecie oprogramowania są firmy, które pokazują co produkują i takie, co ukrywają tajnie swoje kody. Do niedawna było tak, że wielcy tego świata z branży IT robili kod tylko dla siebie i pokazywali wyjątkowo fragmenty na konferencjach branżowych. Lata mijały, coraz trudniej im się wiodło i od kilku lat mają swoje konta na github.com i tam świadomie dzielą się w ramach FLOSS za darmo wyprodukowanym kodem. Również respektują przytoczone na wstępnie zasady :-)

To jest WIELKI SUKCES OPEN SOURCE, kiedy przeglądając kod takich firm jak: Google, Allegro, Zelando, Amazon, eBay, Netflix, Uber, Facebook, Apple, IBM, Redhat, NASA, NSA itd. możemy podziwiać kunszt i uczyć się od najlepszych, o ile jaramy się warsztatem programistycznym innych programistów z całego świata. 

Osobiście "pożywiam" się takim otwartym kodem na co dzień i muszę tutaj wspomnieć, że analiza statyczna, testy bezpieczeństwa, testy jednostkowe, testy behawioralne to kanony, które już stanowią podstawę publikacji wielu projektów Open Source.
Nie ma już sytuacji, że tak jak kiedyś na sourceforge.org ściągaliśmy spakowane źródła z kodem, to nie było wiadomo, czy działa, czy nie działa. Obecnie na github, gitlab, bitbucket i wielu innych sitach mamy dostęp do wysokiej jakości kodu za darmo
TAK jest to wiedza, która jest za DARMOCHĘ.
Jeśli drogi czytelniku zamierzasz zostać programistą, to musisz wiedzieć, że istnieje ogromna ilość kodu do przejrzenia, wsparcia i współtworzenia. Co wiążę się z nowymi sposobami zdobywania wiedzy, poprzez społecznościowe przeglądy naszego kodu, dyskusje z ludźmi zaangażowanymi w brażę, z pasjonatami. Koniec z nudnymi wykładowcami - taki żarcik, nie wymrą zbyt szybko - bo współcześnie każdy nowy trend w IT ma swoich zwolenników, społeczność i darmowe kursy eLerningowe.

W tej sytuacji, jeśli jakaś komercyjna firma, która nie ma udziałów w OpenSource w sensie nie dokłada swojej cegiełki, a tylko korzysta jest pozbawiona najpewniej ludzi z pasją. Bo ludzie z zainteresowaniami chętnie wspierają innych, kontrybują do Open Source i są bardzo otwarci na dzielenie się wiedzą i kodem na zewnątrz. To stoi w sprzeczności z interesami firm, które zamykają się na Open Source, więc mam taką hipotezę, że inżynierowie oprogramowania jacy do nich trafią będą mniej otwarci na NOWE technologie niżeli fanatycy zmieniającej się branży.
Dochodzimy do sedna: jeśli zatrudniasz ludzi z pasją do Open Source to wiedz, że Twoja firma dzięki takim ludziom posiada przewagę konkurencyjną. Ludzie w zamkniętych technologiach/korporacjach czekają aż jakiś support rozwiąże za nich problem, a ludzie z otwartych firm sami robią Pull Requesrty ze zmianami do używanych przez nich projektów Open Source.

Skąd te wnioski ? Z praktycznego współtworzenia kodu i społeczności Open Source m.in. tutaj http://github.com/bieli oraz z edukacji znajomych (w tym licznych klas młodzieży) w tematyce programowania i budowy systemów komputerowych.

Zachęcam tym samym wszystkich do spróbowania, załóżcie konto na GITHUB, nauczcie się GITa i spróbujcie swoich sił w bardzo silnej branży IT. Świat otwartego oprogramowania liczy na waszą kontrybucję :-) i kto wie, może tak przełomowy projekt jak jądro Linuxa, czy rozproszony system kontroli wersji GIT.

Tutaj oczywiście ukłon w stronę Open Source i wyraz szacunku, że zaufanie jakie pokładałem w otwartym oprogramowaniu ładnych ~25 lat temu współcześnie jest normalnością, standardem i koniecznością. Jest to spójne ogniwo pomiędzy wieloma firmami i freakami, gdzie widać wspólny cel, kształtowanie etyki zawodowej i realny rozwój technologii przez każdego chętnego.


Open Source dzisiaj to synonim Otwartego Spokojnego Umysłu i niechaj tak pozostanie :-)



28 marca 2017

Rozpoznawanie mowy w chmurze i z procesorem języka naturalnego NLP-5x

Ostatnio wiele trendów wskazuje na to, że analiza i synteza mowy ludzkiej to niedaleka przyszłość branży IT. Chciałbym zwrócić uwagę, że już 5 lat temu wiele startupów podchodziło do tego tematu z niemal tytanicznym wysiłkiem konstruując dedykowany hardware. Oczywiście współcześnie wiemy, że zatrudnia się do tego całe chmury komputerów oraz sieci neuronowe, aby uzyskać wartościowe efekty. Wynalazcy, o których jest ten wpis stale wierzyli w powodzenie swojego pomysłu i utworzyli coś co nazwali procesorem języka naturalnego NLP-5x. Przyjrzymy się również historii rozpoznawania mowy oraz jakie produkty są obecnie na rynku konsumenckim dostępne.

Okazuje się, że słynny wynalazca Alexander Graham Bell, któremu przypisujemy taki wynalazek jak telefon pracował nad maszyną, której można dyktować tekst. Nie udało mu się osiągnąć celu, ale efektem ubocznym jego pracy jest mikrofon i oczywiście otwarcie epoki komunikacji międzyludzkiej w kolejnym ważnym wymiarze.
To dzięki telefonii mamy tak znaczący postęp technologiczny i szacunek dla Pana Bella za ten wynalazek :-) bo zsiedliśmy z siodła i możemy wymieniać informację siedząc :-)
W historii rozpoznawania mowy mamy niewiele znaczących wydarzeń od roku 1952, kiedy to Fonetograf Drayfusa-Grafa, maszyna zapisująca fonemy pokazała, że coś w tej dziedzinie można osiągnąć. Podstawowym i najbardziej naturalnym sposobem komunikacji międzyludzkiej jest mowa. Oczywistym faktem jest, że człowiek chciałby się w ten sposób komunikować również z maszynami. Własnie dlatego powstające odkrycia doprowadziły do utworzenia przez Google korpusu słownikowego rozpoznającego mowę w 2011 roku. Od tej daty, kiedy wiele firm i instytucji testuje i używa produktu Google do tłumaczeń oraz rozpoznawania mowy w wyszukiwaniu, wiele inwencji ukazuje nam rynek.

Dokonania lat 60-tych XX wieku to opracowania algorytmu szybkiej transformacji Fouriera (ang. Fast Fourier Transform - FFT), która skróciła znacznie obliczenia pozwalające na analizę widma oraz niejawne modele Markowa (ang. Hidden Markov Model- HMM) stosowane do modelowania mowy. HMM wykorzystuje prawdopodobieństwo wystąpienia głosek przy zaobserwowanych parametrach mowy. Zarówno FFT jak i HMM do dzisiaj są podstawami systemów rozpoznawania mowy.
W latach 90-tych wprowadzono pierwsze dostępne dla przeciętnego użytkownika systemy ASR (ang. Automatic Speech Recognition - systemy rozpoznawania mowy) takie jak Dragon, czy IBM ViaVoice.

Obecnie systemy ASR możemy podzielić na dwa podstawowe typy: systemy rozpoznawania słów izolowanych z ograniczonym słownikiem (IWRS, ang Isolated Word Recognition Systems) oraz system rozpoznawania mowy ciągłej i swobodnej z bardzo duzym słownikiem (LVCSR, ang. Large Vocabulary Continuous Speech Recognition).

Analiza mowy to wyzwanie dość śmiałe i każda firma w tych czasach chciałaby wykrywać i rozpoznawać mowę, analizować i móc wyciągać wnioski lub oferować coś za pieniądze. Marzenia te powolnie się spełniają i co tutaj kryć napędzają je dość prozaiczne sprawy: literatura/kino SCI-FI; potrzeba posiadania przez konsumentów np: do sterownia otoczeniem przy pomocy głosu (urządzeniami w domu, drzwiami do garażu, telewizorem); zmierzenie się z algorytmami z dziedziny analizy sygnałowej (DSP) oraz możliwość serwowania takiej usługi w chmurze. Ten ostatni punkt to ciasteczko na torcie, bo kolejne produkty będą płaciły za używanie takiej chmury "gadająco-słuchającej" :-) Przykład, który najbardziej dałoby się spieniężyć to doradca telefoniczny, który potrafi z nami porozmawiać o problemach technicznych i nigdy się nie myli. Sprzedawca, który zna dokładnie szczegóły całej oferty i dobiera nam idealnie do potrzeb produkt, a jeśli nie dobierze i tak coś sprzeda (patrz konsultaci w bankach). Taki bot gadający na VoIP to idealny produkt przyszłości.

Na rynku obecnie istnieje coraz więcej produktów sterowanych głosem hucznie nazywanych Internet Of Things, które zapoczątkował produkt Amazon Echo. W jednej z pierwszych wersji wyglądał tak:

Kolumna widoczna powyżej to komputer, który posiada stałe połączenie z chmurą obliczeniową firmy Amazon. Potrafi słuchać rozkazów i kilka sztuczek związanych z zakupami. Doradza jak ubrać się zależnie od pogody i przypomina wydarzenia z terminarza. Ogólnie może być użyty w różnych aplikacjach, bo posiada dedykowane API. Nowsza wersja tego wynalazku to ALEXA lub Echo Dot/ Informacyjnie filmik, jakie są podstawowe możliwości tego wynalazku:

Niezbyt długo trzeba było czekać na odpowiedź konkurencji i tak pojawił się Google Home - oto proste porównanie:

Oczywiście Siri to odpowiedź firmy Apple na potrzeby rozpoznawania mowy i aplikacje wokół tego tematu. Oto rzut okiem i uchem:

Mercedes, Audi, Ford i Fiat wykorzystują do sterowania wyposażeniem multimedialnym i telefonem pokładowym samochodu rozwiązania lidera rynku – firmy Nuance. Podobnie jak Siri w iPhone'ie 4S, sterowany głosem system nawigacji jest w stanie rozpoznawać nazwiska z książki adresowej podłączonego do niego telefonu.

Skoro już przebrnęliśmy przez przedstawienie tematu rozpoznawania mowy, czas na prezentację firmy, która zamknęła rozpoznawanie mowy w krzem i postanowiła, że wyda procesor mowy NLP-5x.

A całość to RISC 16-bitowy DSP dedykowany do dziedziny ASR. Posiada specyfikację techniczną wraz z szeroko rozumianym opisem możliwości aplikacyjnych. Posiada w sobie HMM i jest energetycznie mało zasobożerny jeśli chodzi o zasilanie. Jest to pierwszy tego typu kompletny produkt na rynku, ale rodzi się pytanie, czy rynek na pewno potrzebuje takiego podejścia ... zobaczymy wkrótce.
Poniżej diagram blokowy takiego procesora:

Przykłady działania dostępne są w sieci:

Dużo napisałem o generowaniu mowy, ale synteza mowy też jest elementem ten dziedziny i można poznać jej historię w przystępny sposób tutaj
Na szczególną uwagę zasługuje też nowy kierunek Biometryczna Identyfikacja Tożsamości, który rokuje wielkie nadzieje w użyciu unikalnych cech każdego człowieka jakim jest aparat mowy do potwierdzenia wiarygodności danej osoby rozpoznawalnej wysławianiem się.

Czekam z niecierpliwością, kiedy ten chip stanie się standardem w wyposażeniu wielu urządzeń RTV/AGD i będzie można poznać jego kolejne generacje, jak ma to miejsce w mikrokontrolerach z rodziny ARM.

Linki:
Rozpoznawanie mowy w python wlasny jarvis kopii zapasowej speech_recognition moduł języka Python Kolejny projekt Elona Muska rodem z science-fiction. Chce połączyć komputer z mózgiem - nowa firma Elona Muska NEURALINK