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

15 grudnia 2016

UbuntuBSD - bezpieczny kernel z FreeBSD + popularna dystrybucja Linuxa Ubuntu + system plików ZFS

Przypomniałem sobie ostatnio 2001 rok, kiedy to po raz pierwszy zainstalowałem system FreeBSD i był to nie lada wyczynem. Podłączenie do łącza/internetu poprzez dialup/SDI również wyamgał czasu. Pomogła mi na pewno "salka internetowa", czyli taka mała kańcapa którą mieliśmy w Technikum Łączności nr. 2 w Lublinie i faktycznie tam terminal tekstowy na FreeBSD to była codzienność :-) Po kilku latach stabilnego działania serwerka/bramy do internetu postawionego na FreeBSD, nastał na czas na PLD, wiele Live CD distros, RedHat Linux a następnie w ok. 2008 roku na Ubuntu Linux.

Jestem użytkownikiem Ubuntu Linux ~9 lat i doceniam korzenie odziedziczone z Debian Linux w tym systemie. Jednak ciekawostki z DistroWatch są dla mnie codzinnością i w związku z pewnym kontrowersyjnym newsem czynię ten wpis.


Objawił się moim oczom pewnego dnia UbuntuBSD i pomyślałem, że diabełek z widłami oraz koło wsparcia dla wszystkich to moze być ciekwe połączenie :-)
Oczywiście jak każdy ciekawski dystrybucji Linuxa pobrałem ISO i zainstalowałem na dostępnym storagu. I tutaj niespodzianka, bo od razu moim oczom rzuciło się pomieszanie komend z dwóch systemów ... co spowodowało u mnie na początku zdziwienie. W sumie czegoś takiego mogłem się spodziewać, ale kiedy człowiek nie poczuje mixów w praktyce, nie zdaje sobie sprawy, jak artyści-programiści mieszają różne koncepty ;-) 
Z jednej strony jądro FreeBSD a z drugiej shell/środowisko/komendy używane na codzień w Ubuntu.

Najważniejsze funkcje i właściwości oferowane przez UbuntuBSD:
– wsparcie dla technologi jail (wirtualizacja i zabezpieczenie dla jądra systemu)
– OSS jako domyślny system dźwięku
– OpenBSD Packet Filter (pf)
– wsparcie dla systemu plików ZFS (to jest mega wyczyn i moim zdaniem wielki plus)
– GNU userland
– nie zawiera żadnych pakietów własnościowych (non-free)
– używa pakietów Debuana "deb" do instalowania oprogramowania
– pakiety mogą być obsługiwane za pośrednictwem menadżera pkietów APT
– wsparcie dla maszyn wirtualnych, takich jak VMware oraz VirtualBox


5 grudnia 2016

FPGA w chmurze - Amazon EC2 F1 - logika programowalna dla każdego

Na ostatniej konferencji re:Invent organizowanej od kilku ładnych lat przez firmę Amazon pojawił się ciekawy smaczek Amazon EC2 F1 instances with field programmable gate arrays (FPGA). Chciałbym wypowiedzieć się na ten temat, bo uważam, że jest to kolejny krok milowy w dziejach rozwiązań dedykowanych, które dotyczą programowalnej elektroniki. A tam gdzie jest software oraz hardware jest też moje zainteresowanie ;-) szczególnie, kiedy jest wzmianka o develop, simulate, debug, and compile your hardware acceleration code

Tym wpisem chciałbym przybliżyć tych, którzy nie widzą co to FPGA i do czego można tego wynalazku użyć. Wspomnę też o płytkach rozwojowych, na których można ćwiczyć programowanie matryc programowalnych. Jako smaczek dnia zapodam swoją wizję użycia FPGA w chmurze - Amazon EC2 F1 a dokładnie jaką widzę przyszłość chmur internetowych wspieraną przez matryce programowalne.

Jakie rozwiązania poprzedzały FPGA ?

Jest to sprzęt w elektronice nazywany reprogramowalną macierzą, w której można odwzorować układy logiczno sekwencyjne bez specjalnego lutowania ich, czyli wykonywania projektowania obwodów drukowanych i montażu podzespołów bazowych, w tym układów z bramkami logicznymi. W latach 80-tych do późnych 90-tych poprzedniego wieku używało się układów TTL oraz w bogatszych wersjach MOS i CMOS, które miały określone bramki, poprzez ścieżki na płytce łączyło się bramki w układy sekwencyjno-logiczne i dawało to efekt jak poniżej prosta płyta główna CPU zbudowana z bramek:

Na drodze rozwoju matryc programowalnych były jeszcze układy PLD i CPLD, które były bardzo dobrym wstępem FPGA. Kiedyś używałem PLD do dekodowania adresów w systemach mikroprocesorowych MCS-51. Wyglądało to dość obiecująco, kiedy równanie logiczne można było wypalić w układzie wielokrotnie podczas dopracowywaania prototypu.

A tak wyglądał prototyp z układem CPLD, który umożliwiał eksperymentowanie i uruchamianie macierzy logicznych (1 układ scalony zamiast ~40 - patrz na drugi obrazek powyżej):

Czym jest FPGA ?

Prześledziliśmy historię i doszliśmy do FPGA, czyli układów charakteryzujących się strukturą, która jest prostokątną macierzą elementów składającą się z części logicznych nazywanych komórkami. Komórki umieszczone są w otoczeniu komutacyjnym kanałów połączeniowych. Dzięki zastosowaniu standaryzacji można te układy programować i nadawać im przeznaczenie w dowolnym momencie zmieniając ich wnętrze.

Układy FPGA używane są w cyfrowym przetwarzaniu sygnałów, lotnictwie i wojsku, w fazie prototypowej układów ASIC i w wielu innych dziedzinach. Aby zdefiniować zachowanie układu FPGA używa się języka opisu sprzętu takiego jak Verilog czy VHDL. Następnie przy pomocy narzędzi syntezy generuje się listę połączeń, która potem w procesie implementacji jest odwzorowywana w konkretnym układzie. Należy zwrócić uwagę, że proces syntezy dopuszcza tworzenie układów logicznych dowolnych rozmiarów, podczas gdy proces implementacji jest próbą wpisania go do konkretnego układu FPGA, gdzie może zabraknąć zasobów do realizacji zadanej logiki. Dlatego większość środowisk pozwala na przeprowadzenie pełnej symulacji działania i rozmieszczenia bramek na macieży FPGA. W oprogramowaniu firmy Altera wygląda to tak:

Jak zaprogramować FPGA ?

W celu zdefiniowania działania naszej logiki na układach FPGA używamy języka opisu sprzętu HDL takiego jak Verilog czy VHDL. Producenci układów FPGA udostępniają nieodpłatnie bardzo zaawansowane symulatory i kompilatory, które ułatwiają uruchomienie wytworzonej macierzy na układzie FPGA. Oto lista popularnych symulatorów HDL dla FPGA. Oto filmik pokazujący jak dalece zaawansowane są takie środowiska do symulacji FPGA:



Warto wspomnieć o tym, że FPGA to świat, w którym można zrealizować wiele różnych przedsięwzięć. Np. chcemy mieć ATARI lub inną architekturę to w serwisie Open Cores znajdziemy wiele projektów związanych z ciekawymi tematami wokół logiki programowalnej. Przykład starych mikrokontrolerów jest błachy, gdyż coś co rzuca się w ochy na OpenCores to PicoBlaze, czyli procesor zbudowany pod FPGA / ASIC i umożliwiający zrównoleglanie obliczeń, kiedy takich procesorów softwarowych na jednen układ FPGA wrzucimy np: kilka tysięcy :-) Tak, to jest możliwe i jeszcze jedno: tak działają karty graficzne GPU, które posiadają często układy ASIC i potrafią się przeprogramowywać w locie zależnie od zastosowania. A jak wiadomo GPU w obliczeniach przoduje i to dzięki mocy reprogramowanych matryc mamy takie wielkie krajowe produkty jak np: gra Wiedźmin wykorzystujące moc GPU. Do innych typów jednostek należą procesowy sygnałowe DSP, dla których też jest wiele propozycji na stronie Open Cores. A co ciekawe popularne stają się bardzo układy kryptograficzne oparte na FPGA, co w świecie szyfrowanych połączeń i zmierzchu HTTP/2 coraz bardziej nabiera na wartości :-)

Jakie moduły do nauki FPGA polecam ?

Oto lista płytek z FPGA, które mogę polecić. Bawiłem się DE10-Lite Board i uważam to za pełen wypas na początek przy relatywnie niskiejj cenie w stosunku do możliwości. Wygląda to tak:



Nie przypadkowa jest też możliwość podłączania modułów w formie wyprowadzeń modułów dla Arduino Uno.
Na płytce znajdziecie: 2x20 GPIO, ADC, SDRAM, akcelerometer, wyjście VGA, wyświetlacze 7-segmentowe, przełączniki. To wszystko + 50000 elementów logicznych do zaprogramowania stwarza optymalne warunki deweloperskie.

Co robi FPGA wśród usług firmy Amazon ?

Niewątpliwie karierę konkurencyjną w świecie chmur i wirtualizacji wszystkiego co możliwe w IT. Dodatkowo ułatwia programistom FPGA eksperymenty. Najpewniej otwiera nowe okno w świecie symulatorów i prototypów, których zbudowanie to był dla wielu innowacyjnych firm ogromny krok milowy.

Co może zrobić użycie "FPGA in the Cloud" w niedalekiej przyszłości ?

W zastosowaniu Cloud widać trendy związane z obliczeniami, czyli przetwarzanie dedykowanymi algorytmami obrazów/dźwięków/filmów/danych. Jak można sobie wyobrazić serwerownia przyszłości może zawierać klocki zmieniane w ramach potrzeb, bo przeprogramujemy sobie FPGA i mamy wydajny system do obsługi storage, a np: nocą w ramach przestojów przetwarzamy obrazki i przerzucamy instancję na inny tryb, która jest lepiej utylizowana w tych zadaniach batchowych. Daje to nam obraz wyprzedzający to co mamy dzisiaj: do masowego przetwarzania obrazków (lub AI) najlepszy będzie rack z kartami GPU. Jeśli chcemy taniej to teraz wiele tańszych skrzynek przeznaczamy do czegośtam a może wystarczą dwie instacje F1 nafaszerowane różnymi dziedzinowymi blokami i to pospinane z logiką usług backendowych.
Ta wizja związana z F1 to początek innego sposobu (softwerowego) patrzenia na możliwości rekonfiguracji dedykowanych usług. Kto wie, czy po czasie nie stanie się to tańsza metoda serwowania czegokolwiek, bo mając macierz można na niej osadzić softwerowe procesory do przetwarzania sygnałów, zbudować komórki pamięci, mostki, generatory sygnałów, AI, etc...
Zobaczymy, jak się to spopularyzuje, bo AWS market pokazuje, że będzie można używać lub kupować wiele gotowych aplikacji osadzanych na F1.
Wśród zainteresowanych F1 nie zabraknie pewnie górników BitCoin. Jeśli przy okazji dla nich zrobili w Amazonie usługę F1, to oddali wielki ukłon w stronę ich dziedziny. Na pewno chęć zysku kopaczy bitcoin spowoduje spływ kasy za czas działania na kopaniu instancji Amazon F1. Tak na serio to jest przykłąd spłycający możliwości FPGA i Amazon F1.