WYDZIAŁ INŻYNIERII MECHANICZNEJ I ROBOTYKI KATEDRA WIBROAKUSTYKI Praca dyplomowa magisterska Imię i nazwisko Kierunek studiów Temat pracy dyplomowej Opiekun pracy Michał Salasa Inżynieria Akustyczna Analiza metod głębokiego uczenia maszynowego do modelowania mowy polskiej dr inż. Jakub Gałka Kraków, rok 2015
Spis treści Spis treści WSTĘP... 5 CEL PRACY... 7 ROZDZIAŁ 1 WPROWADZENIE W PROBLEMATYKĘ... 8 1.1 AUTOMATYCZNE ROZPOZNAWANIE MOWY... 8 1.1.1 Założenia systemu ASR... 10 1.1.2 Parametryzacja sygnału akustycznego... 12 1.1.3 Model akustyczny... 13 1.1.4 Model językowy... 16 1.2 GŁĘBOKIE SIECI NEURONOWE W KONTEKŚCIE MODELOWANIA AKUSTYCZNEGO MOWY... 17 1.2.1 Architektura głębokiej sieci neuronowej... 17 1.2.2 Hybryda DNN-HMM... 20 1.2.3 Bottleneck Features (BNF)... 22 ROZDZIAŁ 2 PRZYGOTOWANIE ŚRODOWISKA PROGRAMISTYCZNEGO ORAZ DANYCH NIEZBĘDNYCH DO PRZEPROWADZENIA BADAŃ... 24 2.1 WYKORZYSTYWANE OPROGRAMOWANIE... 24 2.1.1 Kaldi zestaw narzędzi do automatycznego rozpoznawania mowy... 24 2.1.2 ATLAS biblioteki numeryczne... 25 2.1.3 OpenFST zestaw narzędzi do modelowania automatów skończonych... 26 2.1.4 CUDA platforma do obliczeń równoległych... 26 2.1.5 SRILM zestaw narzędzi do modelowania językowego... 27 2.1.6 FaNT narzędzie do przetwarzania nagrań dźwiękowych... 27 2.2 KORPUSY MOWY POLSKIEJ... 27 2.2.1 Charakterystyka korpusów... 28 2.2.2 Wydzielenie podzbiorów korpusów... 30 2.2.3 Zakłócanie korpusów ewaluacyjnych... 33 ROZDZIAŁ 3 TRENING MODELI AKUSTYCZNYCH... 42 3.1 WYGENEROWANIE INFORMACJI JĘZYKOWYCH... 42 3.2 KONSTRUKCJA DANYCH TRENINGOWYCH... 45 3.3 TRENING MFCC-GMM-HMM... 45 3.4 TRENING BNF-GMM-HMM... 57 3.5 TRENING FBANK-DNN-HMM... 65-3 -
Spis treści ROZDZIAŁ 4 EWALUACJA ORAZ ANALIZA PORÓWNAWCZA WYNIKÓW... 70 4.1 OPIS ANALIZOWANYCH METRYK... 70 4.2 KOMPILACJA GRAFÓW DEKODUJĄCYCH... 72 4.3 DOSTROJENIE KONFIGURACJI DEKODERA... 74 4.4 PORÓWNANIE SKUTECZNOŚCI MODELI AKUSTYCZNYCH... 79 4.5 PORÓWNANIE ODPORNOŚCI MODELI AKUSTYCZNYCH NA ZAKŁÓCENIA... 80 4.5.1 Odporność na zaszumienie... 80 4.5.2 Odporność na pogłos... 91 PODSUMOWANIE... 102 BIBLIOGRAFIA... 103 SPIS ILUSTRACJI... 106 ZAŁĄCZNIK - WYNIKI EWALUACJI... 109-4 -
Spis treści Wstęp Automatyczne rozpoznawanie mowy jest technologią rozwijaną nieustannie od lat trzydziestych XX wieku. Od tamtego czasu powstało wiele ważnych teorii i rozwiązań, które regularnie zwiększały skuteczność i wszechstronność implementowanych systemów. Był to systematyczny i powolny rozwój, który w ostatnich kilku latach nabrał ogromnego tempa. W przeszłości, systemy ASR (ang. Automatic Speech Recognition) funkcjonowały raczej jako ciekawostka niż jako ważny element w komunikacji człowieka z maszyną. Miały na to wpływ głównie stosunkowo wysoka zawodność systemów oraz brak realnego zapotrzebowania (klasyczna metoda myszy i klawiatury była zdecydowanie bardziej wygodna). W ostatnim dziesięcioleciu sytuacja uległa diametralnej zmianie. Pojawiły się technologiczne rozwiązania, dla których wygodniejszym i bardziej naturalnym sposobem kontroli stał się ludzki głos (systemy wspomagające w samochodach, idea inteligentnych domów, wirtualni asystenci w telefonach komórkowych i inne przenośne urządzenia takie jak zegarki elektroniczne). Co więcej, dostęp do coraz szybszych jednostek obliczeniowych (pojawienie się wielordzeniowych CPU oraz GPGPU) oraz możliwość gromadzenia ogromnych ilości danych dzięki sieci Internet pozwoliły na tworzenie znacznie skuteczniejszych i szybszych modeli wykorzystywanych w rozpoznawaniu mowy. W automatycznym rozpoznawaniu mowy znalazło się również miejsce dla znanych już wcześniej metod głębokiego uczenia maszynowego, które jednak nie były aktywnie rozwijane ze względu na ogromną złożoność obliczeniową. Wraz z opisanym wcześniej przyrostem technologicznym i wzrostem zainteresowania systemami ASR coraz więcej jednostek naukowych zaczęło uważnie badać te metody. Powstało wiele ogólnodostępnych narzędzi programistycznych, które pozwalają przeprowadzać swoje własne badania i eksperymenty. W niniejszej pracy dyplomowej podjęto próbę przeprowadzania swoich własnych eksperymentów wykorzystując najnowsze dostępne metody modelowania akustycznego mowy. Autor chciał przebadać wpływ metod głębokiego uczenia maszynowego na skuteczność modeli akustycznych mowy polskiej oraz porównać ich wszechstronność z klasycznym sposobem modelowania. - 5 -
Wstęp W rozdziale pierwszym przedstawiono krótką historię ewolucji systemów automatycznego rozpoznawania mowy oraz opisano podstawowe pojęcia niezbędne do zrozumienia kluczowych mechanizmów kryjących się za tą technologią. Dokonano również przeglądu dostępnej literatury pod kątem zastosowania głębokich sieci neuronowych do modelowania akustycznego mowy oraz omówiono szczegółowo te metody, które będą w niniejszej pracy analizowane. Rozdział drugi dotyczy przygotowania środowiska programistycznego niezbędnego do przeprowadzenia opisanych w pracy eksperymentów. Opisano w nim pokrótce najważniejsze wykorzystywane oprogramowanie oraz zawarto drobne wskazówki co do jego instalacji. W rozdziale drugim scharakteryzowano również korpusy mowy polskiej, które stanowiły źródło danych treningowych, deweloperskich i ewaluacyjnych. Omówiono też dokładnie sposób w jaki wygenerowano z nich odpowiednie podzbiory nagrań oraz metody wprowadzenia zakłóceń akustycznych do podzbiorów ewaluacyjnych. W rozdziale trzecim umieszczono kompletny przebieg treningów trzech analizowanych modeli akustycznych w środowisku Kaldi wraz z opisaniem wywołań najistotniejszych programów i skryptów. Zawarto tutaj także wszystkie informacje niezbędne do odtworzenia tych eksperymentów. Rozdział czwarty rozpoczyna się od opisu metryk wykorzystywanych do ewaluacji systemów automatycznego rozpoznawania mowy. Najważniejszą częścią czwartego rozdziału jest przedstawienie i analiza wyników otrzymanych z ewaluacji trzech systemów zbudowanych z wykorzystaniem wytrenowanych modeli akustycznych. Porównano tutaj ogólną skuteczność systemów zaobserwowaną na wyselekcjonowanych korpusach testowych oraz ich odporność na różnego rodzaju zakłócenia akustyczne. - 6 -
Cel pracy Cel pracy Celem pracy jest przede wszystkim przeprowadzenie jednych z pierwszych eksperymentów wykorzystujących metody głębokiego uczenia maszynowego do modelowania akustycznego mowy polskiej i wytrenowanie modeli akustycznych dla języka polskiego o jak największej skuteczności. Autor ma na celu również przeprowadzenie analizy wykorzystywanych metod pod kątem ogólnej skuteczności i wydajności zbudowanych z ich pomocą systemów ASR z porównaniem do metod klasycznych. Porównaniu ulegnie również odporność systemów na różnego rodzaju zakłócenia akustyczne. - 7 -
Wprowadzenie w problematykę Rozdział 1 Wprowadzenie w problematykę W poniższym rozdziale przedstawione zostaną podstawowe zagadnienia związane z automatycznym rozpoznawaniem mowy oraz sztucznymi sieciami neuronowymi. Zostanie również dokonany przegląd literatury pod kątem różnych metod polegających na wykorzystaniu głębokich sieci neuronowych do akustycznego modelowania mowy, które to metody stały się w ostatnim dziesięcioleciu ważną alternatywą dla klasycznego podejścia. 1.1 Automatyczne rozpoznawanie mowy Historia automatycznego rozpoznawania mowy (ang. Automatic Speech Recognition, ASR) ma swój początek w latach trzydziestych XX wieku. Pierwszy, odnotowany przez literaturę naukową, system rozpoznawania mowy został skonstruowany w 1952 roku w zakładzie Bell Labolatories. Trzech naukowców: Davis, Biddulph oraz Balashek utworzyli system, który był w stanie rozpoznawać cyfry wypowiadane przez pojedynczego mówcę w sposób izolowany (z przerwami). Główny mechanizm bazował na prostym dopasowaniu wzorca, którym dla każdej wypowiadanej cyfry były trajektorie wyznaczone przez dwa pierwsze formanty (zagęszczenia energii) w widmie częstotliwościowym sygnału [4]. Od tego momentu coraz więcej ośrodków naukowych wykazywało zainteresowanie tą tematyką. Kolejne systemy, budowane głównie w USA, Japonii oraz Związku Radzieckim, cechowały się coraz większymi możliwościami (rozpoznawanie głosek, dynamiczne czasowe dopasowanie wypowiedzi, rozpoznawanie ciągłych fraz). Powstawały też pierwsze komercyjne wdrożenia tej technologii (firma Threshold Technology założona przez Toma Martina). W połowie lat siedemdziesiątych dwoma głównymi ośrodkami naukowymi, w których rozwijano technologię rozpoznawania mowy, było IBM pod przewodnictwem Freda Jelinka oraz AT&T Bell Laboratories. Obie grupy obrały sobie za cel rozwinięcie różnych elementów systemów ASR co zaowocowało szybszym rozwojem tej gałęzi nauki. W IBM utworzono system Tangora, który cechował się dużym jak na współczesne czasy, rozmiarem słownika dzięki wprowadzeniu statystycznych modeli językowych (n- - 8 -
Wprowadzenie w problematykę gramów) [11]. Dzięki tym pracom statystyczne modele językowe stały się integralną częścią większość późniejszych systemów rozpoznawania mowy. System tworzony w AT&T Laboratories miał zostać wykorzystany w publicznych liniach telefonicznych i z tego względu jego główną siłą musiała być niezależność od mówcy. Pracę w IBM przyczyniły się do rozwinięcia technik statystycznego modelowania zjawisk akustycznych mowy (Ukryte Modele Markowa) oraz wykorzystywania tak zwanych słów kluczy [28]. Ogromnym krokiem naprzód w latach osiemdziesiątych było powszechne zastępowanie dotychczasowego bezpośredniego dopasowywania wzorców mowy (w dziedzinie częstotliwości) bardziej wyrafinowanym statystycznym modelowaniem akustycznym opartym na Ukrytych Modelach Markowa. To podejście wcześniej znane było tylko w nielicznych ośrodkach, a do jego upowszechnienia przyczyniła się duża liczba publikacji naukowych, w których temat HMM był wyjaśniany. Statystyczne podejście, pozwalające na okiełznanie bardzo dużej zmienności mowy, stało się żelaznym elementem każdego systemu ASR i przetrwało do dziś bardziej szczegółowe omówienie tego tematu znajduje się w kolejnych rozdziałach. Współcześnie wiele jednostek naukowych na świecie specjalizuje się w systemach automatycznego rozpoznawania mowy. Rozbudowywanych jest również wiele komercyjnych rozwiązań (głównie wirtualni asystenci), które z roku na rok stają się coraz bardziej popularne. Do kluczowych rozwiązań w tym temacie należą takie produkty jak Siri (firmy Apple), Google Now (Google), S Voice (Samsung) i Cortana (Microsoft). Cechą charakterystyczną automatycznego rozpoznawania mowy jest jego interdyscyplinarny charakter. Aby dobrze zrozumieć i rozwijać związane z nim technologie należy mieć wiedzę (przynajmniej poglądową) w wielu różnych dziedzinach nauki. Interesujące zestawienie najważniejszych dyscyplin naukowych związanych z rozpoznawaniem mowy wraz z ich przykładowym zastosowaniem zostało przedstawione przez Rabinera i Juanga [18]: Przetwarzanie Sygnałów ekstrakcja istotnych (z perspektywy przetwarzania mowy) informacji pochodzących z zarejestrowanych sygnałów akustycznych poprzez analizę czasowo-częstotliwościową. - 9 -
Wprowadzenie w problematykę Akustyka opisanie praw i zależności związanych z generowaniem i odbieraniem sygnału mowy (fali akustycznej) przez specjalizowane organy człowieka (trakt głosowy, narząd słuchu). Rozpoznawanie wzorców efektywna klasyfikacja nowych serii danych na podstawie wcześniej zgromadzonego zbioru danych treningowych. Teoria informacji procedury estymacji parametrów modeli probabilistycznych, programowanie dynamiczne (algorytm Viterbiego). Lingwistyka wykrywanie relacji między wypowiadanymi częściami mowy (fonologia), analizowanie znaczenia słów (semantyka) struktur gramatycznych w obrębie danego języka. Fizjologia zrozumienie mechanizmów zachodzących w centralnym układzie nerwowym człowieka związanych z szeroko pojętym przetwarzaniem mowy oraz próba przełożenia ich na odpowiednie algorytmy (sztuczne sieci neuronowe). Informatyka umiejętność efektywnego implementowania algorytmów koniecznych do prawidłowego funkcjonowania systemu rozpoznawania mowy. 1.1.1 Założenia systemu ASR Głównym zadaniem systemu automatycznego rozpoznawania mowy jest znalezienie dla analizowanego sygnału akustycznego (sygnału mowy) jego najdokładniejszej transkrypcji (zapisu słownego). Biorąc pod uwagę ogromną zmienność sygnału mowy wynikającą z różnorodności warunków akustycznych oraz różnego sposobu wymawiania słów przez różnych mówców zadanie to jest bardzo skomplikowane. Zadanie przetworzenia mowy na tekst można traktować jako próbę odkodowania nadanej informacji (w tym przypadku słów), która poprzez pewien kanał zaszumiający została przekonwertowana na sygnał akustyczny [12]. Idealnym rozwiązaniem tego problemu byłaby sytuacja, w której znając dokładny model kanału zaszumiającego oraz dysponując kompletnym zestawem zdań możliwych do utworzenia w danym języku, generowalibyśmy sygnał akustyczny dla każdego możliwego zdania i szukali takiej reprezentacji akustycznej, która najlepiej pasuje do oryginalnej wypowiedzi. - 10 -
Wprowadzenie w problematykę Metryką służącą do poszukiwania najlepszego dopasowania jest w systemach rozpoznawania mowy prawdopodobieństwo. Jest to metryka, która najlepiej sprawuje się w warunkach bardzo dużej zmienności mowy. Wywodzi się ona z modelu Bayesowskiego, którego zastosowanie w rozpoznawaniu mowy zostanie teraz przedstawione. Potraktujmy akustyczny sygnał mowy O jako sekwencję pewnych obserwacji oi wygenerowanych przez mówcę zmieniających się w czasie O = o 1, o 2, o 3,, o t. (1.1) W taki sam sposób możemy zapisać dowolny ciąg W słów wi W = w 1, w 2, w 3,, w t. (1.2) Pytaniem, na które próbujemy odpowiedzieć podczas dekodowania wypowiedzi brzmi: Jakie jest najbardziej prawdopodobne zdanie spośród wszystkich zdań danego języka L dla analizowanego akustycznego sygnału mowy O?. Odpowiedź można zapisać w postaci W = argmax W P(W O). (1.3) Wykorzystując regułę Bayesa P(x y) = P(y x)p(x) P(y) równaniem W = argmax W możemy zastąpić powyższe równanie P(O W)P(W) P(O). (1.4) Rozwiązanie powyższego równania (nazywane dekodowaniem) gwarantuje nam znalezienie zdania, które najlepiej pasuje do zadanego sygnału akustycznego. Komponenty P(O W) i P(W) są w tym przypadku kluczowe i oznaczają odpowiednio prawdopodobieństwo wystąpienia danego sygnału mowy O dla hipotetycznego zdania W (wyznaczane przez model akustyczny) oraz prawdopodobieństwo wystąpienia zdania W w danym języku (wyznaczane przez model językowy). Prawdopodobieństwo P(O) można zignorować, ponieważ jest stałe dla danego przypadku (dla każdego hipotetycznego zdania cały czas analizujemy ten sam ciąg obserwacji). Ostatecznie otrzymujemy W = argmax P(O W)P(W). (1.5) W - 11 -
Wprowadzenie w problematykę 1.1.2 Parametryzacja sygnału akustycznego Przed przystąpieniem do dekodowania sygnału akustycznego należy go sparametryzować czyli przedstawić w formie sekwencji akustycznych wektorów cech (wektorów obserwacji). Każdy z tych wektorów reprezentuje najistotniejsze cechy mowy w określonym przedziale czasowym. Istnieje kilka metod parametryzacji sygnału akustycznego spośród których najpopularniejsza jest metoda ekstrakcji współczynników MFCC (ang. Mel-Frequency Cepstral Coefficients). Rys. 1 Przykład parametryzacji MFCC Proces ekstrakcji MFCC rozpoczyna się od podzielenia sygnału akustycznego na ramki o określonej szerokości i zakładkowaniu (zazwyczaj jest to odpowiednio 25 i 10 milisekund). Przyjmuje się, że w tym czasie sygnał mowy jest stacjonarny [30]. Kolejnym krokiem jest wymnożenie widma częstotliwościowego ramek sygnału przez bank filtrów trójkątnych znajdujących się na skali melowej (która symuluje rozdzielczość częstotliwościową ucha ludzkiego), wyciągnięciu logarytmu energii z każdego otrzymanego pasma oraz wykonaniu na powstałych współczynnikach transformacji dekorelującej DCT (ang. Discrete Cosine Transform). 12 pierwszych współczynników cepstralnych tworzy wyjściowy wektor MFCC. W celu zachowania informacji o temporalnych zmianach sygnału z otrzymanej sekwencji wektorów MFCC oblicza się jeszcze pochodne pierwszego i drugiego rzędu, tworząc ostateczny ciąg wektorów - 12 -
Wprowadzenie w problematykę obserwacji o 39 elementach. Ogólny przebieg parametryzacji przedstawiono na poniższym rysunku. Rys. 2 Przebieg parametryzacji MFCC [30] 1.1.3 Model akustyczny Modele akustyczne służą do znalezienia prawdopodobieństwa P(O W), czyli prawdopodobieństwa wystąpienia danej sekwencji wektorów obserwacji (cech) O dla określonego zdania W. W aktualnie rozwijanych systemach rozpoznawania mowy zadanie to jest realizowane przez Ukryte Modele Markowa (ang. Hidden Markov Models), w których prawdopodobieństwo obserwacji każdego stanu emitującego jest modelowane przez miksturę gaussowską (ang. Gaussian Mixture Model). W niniejszym podrozdziale zostanie omówiony ten typ modelowania. W skrócie, Ukryty Model Markowa jest generatorem sekwencji pewnych wektorów obserwacji. Jest to automat skończenie stanowy, który zmienia swój stan w każdej kolejnej jednostce czasu i jeśli wejściowy stan jest stanem emitującym to z określonym prawdopodobieństwem, generowany jest wektor obserwacji. Co więcej przejście między dwoma stanami również realizuje się z określonym prawdopodobieństwem. Ukryty Model Markowa jest w pełni scharakteryzowany przez następujące parametry: - 13 -
Wprowadzenie w problematykę Q = q 1, q 2, q N - zbiór stanów, A = a 01, a 02,, a n1,, a nm - macierz przejść, w której element a ij jest prawdopodobieństwem przejścia ze stanu i do stanu j, O = o 1, o 2,, o N - zbiór obserwacji, B = b i (o t ) - zbiór prawdopodobieństw emisji obserwacji t przez stan emitujący i, q 0, q end - stany nieemitujące obserwacji: początkowy i końcowy. Każdy z tych parametrów ma swój odpowiednik w zadaniu rozpoznawania mowy. Najczęściej wykorzystywaną topologią Ukrytych Modeli Markova jest model Bakisa składający się z pięciu stanów (trzech emitujących), a przejścia między stanami dozwolone są tylko w kierunku końcowego stanu (ang. left-to-right topology) oraz w obrębie tego samego stanu (ang. self-loops). Trzy stany emitujące reprezentują pojedynczy fonem mowy. Zbiór obserwacji O składa się w wektorów cech wyekstrahowanych z sygnału mowy (MFCC). Rys. 3 Topologia modelu Bakisa z trzema stanami emitującymi [30] Do treningu Ukrytych Modeli Markova jak i do dekodowania wyrażeń za ich pomocą musimy zdefiniować funkcję B, która będzie wyznaczać prawdopodobieństwo emisji określonego wektora cech O przez jeden ze stanów z Q. W początkowych - 14 -
Wprowadzenie w problematykę implementacjach systemów ASR wykorzystywano w tych celu algorytm kwantyzacji wektorowej (ang. Vector Quantization). Algorytm ten mimo swojej prostoty okazał się być niewystarczający do modelowania ogromnej złożoności sygnału mowy. Współcześnie do estymacji prawdopodobieństwa obserwacji wykorzystuje się funkcje gęstości prawdopodobieństwa, z których najbardziej efektywne są mikstury gaussowskie (ang. Gaussian Mixture Models) będące ważoną sumą pojedynczych gaussianów. Pojedynczy, jednowymiarowy gaussian opisany jest wzorem f(x μ, σ) = 1 (x μ)2 exp ( ), (1.6) 2πσ2 2σ 2 gdzie µ oznacza średnią gaussiana a σ 2 jego wariancję. Estymacja prawdopodobieństwa emisji t-tej obserwacji przez j-ty stan modelu Markowa wykorzystując jednowymiarowy gaussian przedstawia się następująco b j (o t ) = 1 2πσ 2 exp ( (o t μ) 2 2σ 2 ). (1.7) Wektor obserwacji w przypadku rozpoznawania mowy składa się z 39 elementów dlatego do estymacji prawdopodobieństwa należy wykorzystać wielowymiarowe gaussiany. Przy założeniu, że poszczególne elementy wektora cech są od siebie niezależne (wektor jest zdekorelowany) możemy do estymacji prawdopodobieństwa wykorzystać gaussiany z diagonalną macierzą kowariancji i tego typu macierz wykorzystuje się w praktyce. Ma to duże znaczenie we współczesnych systemat ASR z dwóch powodów. Po pierwsze, zastosowanie pełnej macierzy kowariancji w znaczącym stopniu zwiększyłoby liczbę obliczeń, spowalniając cały system. Po drugie, do dobrego wyestymowania parametrów modeli z pełną macierzą kowariancji potrzebna byłaby bardzo duża ilość danych. Aby wyestymować prawdopodobieństwo obserwacji będącej D-wymiarowym wektorem cech używając D-wymiarowego gaussiana z diagonalną macierzą kowariancji wykorzystujemy zależność b j (o t ) = 1 exp ( 1 (o td μ jd ) 2 D d=1 2 2 σ2 ). 2πσ jd jd (1.8) W rzeczywistości modelowanie wektora cech pojedynczym wielowymiarowym gaussianem byłoby zbyt dużym uproszczeniem (poszczególne elementy wektora cech nie muszą mieć rozkładu normalnego). Aby poprawnie modelować obserwacje akustyczne należy wykorzystać ważoną sumę wielowymiarowych gaussianów. Taka suma - 15 -
Wprowadzenie w problematykę gaussianów nazywa się miksturą gaussowską (ang. Gaussian Mixture Models) a estymacja prawdopodobieństwa obserwacji realizowana jest przez następującą zależność b j (o t ) = M 1 c jm exp [(x μ 2π Σ jm jm) T Σ 1 jm (o t μ jm )] m=1. (1.9) 1.1.4 Model językowy W systemie automatycznego rozpoznawania niezbędne są dwa komponenty odpowiedzialne za modelowanie języka: leksykon oraz model językowy. Leksykon zawiera informacje o wielowariantowej transkrypcji fonetycznej każdego słowa, które może być rozpoznane przez system ASR. Transkrypcja fonetyczna realizowana jest w oparciu o wybrany alfabet fonetyczny, który zależny jest od analizowanego języka. Istnieje wiele międzynarodowych alfabetów fonetycznych takich jak International Phonetic Alphabet czy X-SAMPA, które wykorzystują ujednolicone symbole do reprezentacji poszczególnych części mowy. Kluczowym elementem systemu ASR jest model językowy. Odpowiada on za wyliczenie prawdopodobieństwa P(W), czyli prawdopodobieństwa wystąpienia określonej sekwencji słów (zdania) dla danego języka. Najpopularniejsze modele językowe wykorzystywane w rozpoznawaniu mowy to N-gramowe modele statystyczne. Estymacja parametrów takiego modelu polega na gromadzeniu statystyk dotyczących częstości występowania sekwencji słów (pojedynczych słów dla unigramów, par słów dla bigramów itd.) w określonych korpusach treningowych. W ogólnym przypadku estymacja MLE (ang. Maximum Likelihood Estimation) parametrów modelu N- gramowego opisana jest zależnością n 1 P(w m w n N+1 ) = C(w n 1 n N+1 w n ), (1.10) C(wn 1 n N+1 ) gdzie funkcja C(xy) oznacza częstość występowania w korpusie uczącym ciągu xy. Systemy ASR do rozpoznawania mowy swobodnej korzystają najczęściej z trigramowych modeli językowych. Do budowania większych modeli potrzebna jest bardzo duża ilość danych, a modele takie przyjmują zbyt duże rozmiary, aby mogły być wykorzystywane w praktycznych implementacjach. Modele N-gramowe można również dostrajać do poszczególnych domen, w których ma działać system ASR (np. rejestracja rozpraw sądowych). - 16 -
Wprowadzenie w problematykę Oprócz modeli N-gramowych w rozpoznawaniu mowy można również wykorzystywać modele oparte o gramatyki regułowe. Są to zacznie prostsze modele, które bezpośrednio definiują reguły według których mogą łączyć się w zdania słowa zawężając w ten sposób dostępne słownictwo i złożoność modelu. Gramatyki regułowe są wykorzystywane najczęściej w aplikacjach mobilnych, w prostych systemach dialogowych lub w systemach służących do głosowej kontroli urządzeń. 1.2 Głębokie Sieci Neuronowe w kontekście modelowania akustycznego mowy 1.2.1 Architektura głębokiej sieci neuronowej Głęboka sieć neuronowa (ang. Deep Neural Network) to wielowarstwowy perceptron MLP (ang. Multi-Layer Perceptron) z kilkoma ukrytymi warstwami [10]. Sieć tego typu opisana jest równaniem v l = f(z l ) = f(w l v l 1 + b l ), (1.11) dla (0 < l < 1), gdzie z to wektor pobudzenia, v to wektor aktywacji, W to macierz wag poszczególnych neuronów, b to wektor biasu, l to numer warstwy sieci. Przykładowa topologia głębokiej sieci neuronowej z trzema warstwami ukrytymi przedstawiona jest na poniższym rysunku. Rys. 4 Przykładowa architektura głębokiej sieci neuronowej z trzema ukrytymi warstwami [32] - 17 -
Wprowadzenie w problematykę W większości przypadków funkcja aktywacji f(.) jest funkcją sigmoidalną której wartości wyjściowe zawierają się w przedziale (0,1). σ(z) = 1 1+e z, (1.12) Warstwa wyjściowa sieci jest dobierana ze względu na rodzaj rozwiązywanego problemu. W kontekście przetwarzania mowy jest to z reguły problem klasyfikacji. Dla tego typu problemu każdy neuron wyjściowej warstwy sieci reprezentuje pewną klasę i {1,,C}, gdzie C = NL to całkowita ilość klas. Wartość i-tego wyjściowego neuronu, oznaczaną jako Pdnn(i o), jest prawdopodobieństwem z jakim wektor wejściowy o (podawany na wejściową warstwę sieci) przynależy do i-tej klasy. Aby wartości neuronów wyjściowych spełniały wymogi rozkładu prawdopodobieństwa muszą być znormalizowane funkcją softmax v i L = P dnn (i o) = softmax i (z L ) = L ez i C e z j L j=1, (1.13) gdzie z i L jest i-tym elementem wektora pobudzenia z L. Parametry głębokiej sieci neuronowej {W,b} (macierz wag oraz wektor biasu) estymowane są podczas procedury treningu. Trening zawsze charakteryzuje się pewnym kryterium treningu oraz algorytmem uczącym i jest wykonywany dla próbek trenujących S = {(o m, y m ) 0 m < M}, gdzie M jest liczbą wszystkich próbek, o m jest m-tym wejściowym wektorem obserwacji a y m jest pożądanym wektorem wyjściowym. Kryterium treningu stosowane w problemie klasyfikacji to kryterium entropii krzyżowej CE (ang. cross-entropy) opisane zależnością w którym J CE (W, b; S) = 1 M J M m=1 CE(W, b; o m, y m ), (1.14) C L J CE (W, b; o, y) = i=1 y i logv i, (1.15) gdzie y i = P emp (i o) jest zaobserwowanym prawdopodobieństwem, że wektor obserwacji o należy do klasy i, a v i L = P dnn (i o) to samo prawdopodobieństwo wyestymowane z sieci neuronowej. W większości badanych przypadków (także w klasyfikacji ramek MFCC do określonego fonu) wektor obserwacji przynależy tylko - 18 -
Wprowadzenie w problematykę do jednej klasy, czyli y i = 1 (jeśli o należy do i-tej klasy) a równanie uprasza się do następującej postaci J NLL (W, b; o, y) = logv c L, (1.16) gdzie NLL oznacza ujemny logarytm prawdopodobieństwa (ang. negative log likelihood). Dysponując zgromadzonym zbiorem próbek trenujących oraz ustaliwszy odpowiednie dla danego problemu kryterium treningu parametry głębokiej sieci neuronowej mogą być wyestymowane wykorzystując algorytm wstecznej propagacji błędów BP [ang. backpropagation algorithm] [21]. Algorytm ten wykorzystywany jest w uczeniu nadzorowanym wielowarstwowych sieci neuronowych i opisuje sposób w jaki powinny być modyfikowane parametry poszczególnych warstw tej sieci w każdej iteracji treningu. Cechą szczególną tego algorytmu jest fakt, że błąd klasyfikacji jest przesyłany między kolejnymi warstwami (zaczynając od wyjściowej i kończąc na wejściowej) i służy on bezpośrednio do modyfikowania parametrów każdej kolejnej warstwy. Pełne wyprowadzenie tego algorytmu dla przedstawionej wcześniej topologii i kryterium treningu przedstawione jest w książce Dong Yu [32].Poniżej przedstawiono końcowe formuły pozwalające wykorzystać algorytm w procedurze treningowej. Parametry poszczególnych warstw modyfikowane są w oparciu o zależności i l W t+1 W l l t ε W t (1.17) l b t+1 b l l t ε b t, (1.18) gdzie W t l i b t l są odpowiednio macierzą wag i wektorem biasu warstwy l po t-tej iteracji, M b W l t = 1 l M Wt J(W, b; o m, y m ) b m=1 (1.19) i M b b l t = 1 l M bt J(W, b; o m, y m ) b m=1 (1.20) - 19 -
Wprowadzenie w problematykę są odpowiednio średnim gradientem macierzy wag i średnim gradientem wektora biasu w t-tei iteracji wyznaczonymi na podstawie M b próbek treningowych (ang. batch l size), ε jest współczynnikiem uczenia (ang. learning rate) a x jest gradientem kryterium treningu J liczonym po x. Dla kryterium entropii krzyżowej gradienty wynoszą odpowiednio Wt lj CE (W, b; o, y) = (v L t y)(v L 1 t ) T, (1.21) bt lj CE (W, b; o, y) = (v t L y). (1.22) Trening głębokiej sieci neuronowej, choć teoretycznie wydaje się być prostą implementacją odpowiednich algorytmów, jest zadaniem wymagającym. Aby efektywnie wytrenować głęboką sieć neuronową należy zmierzyć się z wieloma praktycznymi problemami takimi jak: wstępne przetworzenie danych wejściowych, inicjalizacja modelu sieci neuronowej (początkowe wartości jej parametrów), uniknięcie przetrenowania sieci (zbytniego dopasowania się do danych uczących), randomizacja próbek wejściowych, dostrojenie parametru decydującego o szybkości uczenia się sieci (ang. learning-rate) i wiele innych. Prawidłowe zrealizowanie tego zadania wymaga podjęcia wielu decyzji, które w znaczący sposób wpływają na końcowy rezultat. 1.2.2 Hybryda DNN-HMM Pierwsze próby polegające na stworzeniu modelu akustycznego będącego kombinacją modelu głębokiej sieci neuronowej i Ukrytych Modeli Markowa, który zastąpiłby klasyczną kombinację GMM-HMM, miały miejsce już w latach 80tych. Zaproponowano wiele różnych architektur oraz algorytmów trenujących [25] jednak nie dawały one wyraźnie lepszych rezultatów niż klasyczne podejście, a ogromna złożoność obliczeniowa tego typu rozwiązań nie pozwalała na efektywne przeprowadzanie eksperymentów w tamtych czasach. Jednym z podejść zapoczątkowanych w tamtych czasach było wykorzystanie głębokiej sieci neuronowej jako estymatora prawdopodobieństw obserwacji dla stanów modelu HMM. Przykład takiej architektury zaprezentowano na rysunku 5. - 20 -
Wprowadzenie w problematykę Rys. 5 Architektura hybrydy DNN-HMM [32] Pierwsze modele akustyczne oparte o tego typu hybrydę wykorzystywały głoski niezależne od kontekstu (tzw. monofony) jako zbiór klas reprezentowanych przez neurony wyjściowe sieci. Dodatkowo, głęboka sieć neuronowa składała się tylko z dwóch warstw ukrytych [15]. W niektórych rodzajach eksperymentów sieci te wgrywały z klasycznymi modelami GMM-HMM, ale rozwinięcie ich możliwości nie było możliwe ze względów opisanych na początku podrozdziału. Ostatnie badania [3] pokazały, że zmodyfikowanie topologii sieci poprzez zwiększenie ilości głębokich warstw oraz wykorzystanie do klasyfikacji zbioru głosek zależnych od najbliższych sąsiednich głosek (tzw. trifony) znacząco poprawiły skuteczność rozpoznawania mowy. Co więcej, rozszerzenie wejściowej obserwacji do kilku sąsiadujących ze sobą wektorów cech również pozytywnie wpływa na dokładność - 21 -
Wprowadzenie w problematykę modelowania. Aktualnie dostępny sprzęt w postaci zdecydowanie szybszych jednostek obliczeniowych (zarówno CPU jak i GPU) pozwala na wykonanie wielu optymalizacji i testowanie nowych pomysłów w krótszym, a przede wszystkim sensowniejszym czasie niż w przeszłości. Tego typu architektura sieci zostanie przetestowana w niniejszej pracy. 1.2.3 Bottleneck Features (BNF) Innym pomysłem zastosowania głębokich sieci neuronowych do modelowania akustycznego mowy jest wykorzystanie ich jako kolejnego modułu parametryzującego sygnał akustyczny. Metoda ta, zwana tandemową, wykorzystuje ukryte warstwy sieci DNN jako kolejne transformacje, którym podlega wektor cech wejściowych a ich rezultat podawany jest jako wejście do modułu GMM-HMM, który trenowany jest na nowych parametrach w klasyczny sposób. Pierwszy raz pomysł ten pojawił się w pracy Hermanskiego [8] i polegał na wykorzystaniu wartości neuronów wyjściowych kilku głębokich sieci neuronowych, które zostały wytrenowane do klasyfikacji monofonów. Idea ta miała swoją wadę w postaci dużej wymiarowości nowych wektorów cech, na których trenowano później model GMM-HMM. Rys. 6 Przykładowa architektura głębokiej sieci neuronowej z warstwą typu bottleneck zlokalizowaną przed warstwą wyjściową [32] - 22 -
Wprowadzenie w problematykę Pomysł ten został nieco zmodyfikowany przez Grezla [7], który zaproponował by współczynniki nowych wektorów cech pochodziły z jednej z ukrytych warstw sieci neuronowej, w której liczba neuronów mogłaby zostać zmniejszona w stosunku do liczby neuronów warstw pozostałych. Warstwa ta została nazwana wąskim gardłem sieci (ang. bottleneck), a nowe współczynniki, które zostały z niej wyekstrahowane przyjęły się pod nazwą bottleneck features (BNF). Przykładową topologię takiej sieci zaprezentowano na rysunku powyżej. Grezl wyjaśnia, że powstałe w miejscu warstwy bottleneck utrudnienie wymusza na sieci redukcję wymiarowości informacji istotnych do prawidłowej klasyfikacji fonetycznej. Zauważono, że modele GMM-HMM wytrenowane na współczynnikach BNF cechują się większą odpornością na zmienność warunków akustycznych, w których pracuje system ASR oraz na różnorodność mówców. W niniejszej pracy postanowiono przeanalizować ten typ modelowania. - 23 -
Przygotowanie środowiska programistycznego oraz danych niezbędnych do przeprowadzenia badań Rozdział 2 Przygotowanie środowiska programistycznego oraz danych niezbędnych do przeprowadzenia badań W niniejszym rozdziale opisane zostaną najważniejsze narzędzia programistyczne wykorzystane do utworzenia systemu automatycznego rozpoznawania mowy oraz przeprowadzenia badań będących tematem pracy. Dodatkowo, scharakteryzowane zostaną korpusy nagrań mowy wykorzystane w eksperymentach wraz ze wszystkimi operacjami na nich wykonanymi (takimi jak wydzielenie podzbiorów treningowych i testowych, zaszumienie korpusów testowych etc.). 2.1 Wykorzystywane oprogramowanie 2.1.1 Kaldi zestaw narzędzi do automatycznego rozpoznawania mowy Obecnie, na rynku dostępnych jest wiele zestawów narzędzi (ang. toolkits) pozwalających zbudować system automatycznego rozpoznawania mowy. Są to zarówno rozwiązania komercyjne (AT&T Watson, Microsoft Speech Server, Google Speech API, Nuance Recognizer) jak i darmowe (Hidden Markov Model Toolkit HTK, Julius, Sphinx- 4, Kaldi i wiele innych). Każde z tych środowisk oferuje podobne możliwości, które bardzo często różnią się szczegółami implementacyjnymi o różnym stopniu złożoności. Ciekawym przykładem jest również istniejący na polskim rynku system rozpoznawania mowy polskiej SARMATA 2.0 [34] wykorzystujący rozwiązania obecne zarówno w HTK jak i w Kaldi, lecz ze szczególnym uwzględnieniem złożoności języka polskiego (jego niepozycyjność oraz występowanie wielu wysokoczęstotliwościowych głosek). Opisanie każdego z nich z osobna stanowi dobry materiał na osobną pracę. Spośród wszystkich dostępnych środowisk największym zainteresowaniem i popularnością odznacza się w ostatnich latach Kaldi [17]. Jest to zestaw narzędzi napisany w języku C++ przez szerokie grono specjalistów z dziedziny przetwarzania mowy. Jego początki sięgają roku 2009 i od tamtego czasu jest cały czas aktywnie rozwijany. Kaldi cechuje się najlepszą skutecznością wytrenowanych z jego pomocą modeli akustycznych spośród wszystkich darmowych narzędzi [6]. Jest w dużej mierze - 24 -
Przygotowanie środowiska programistycznego oraz danych niezbędnych do przeprowadzenia badań oparty na teorii automatów skończonych (ang. finite state machines), oferuje wszystkie najpopularniejsze metody wykorzystywane w rozpoznawaniu mowy, a w ostatnim czasie został również wzbogacony o pierwsze implementacje sieci neuronowych. Te czynniki zdecydowały o tym, że Kaldi został wytypowany jako podłoże programistyczne opisanych w tej pracy eksperymentów. Aby zacząć pracę z narzędziami Kaldi należy zaopatrzyć się w dowolny unixowy system operacyjny (może to być również Windows ze środowiskiem Cygwin) oraz dysponować aktualną wersją kompilatora C/C++ (GCC/G++). Repozytorium SVN z kodem źródłowym Kaldiego jest swobodnie dostępne. Po pobraniu, kody źródłowe należy samodzielnie skompilować. Procedury związane z procesem kompilacji są szczegółowo wyjaśnione w dokumentacji dostarczonej wraz z oprogramowaniem. Oprócz samych plików wykonywalnych Kaldiego, do zbudowania systemu automatycznego rozpoznawania mowy potrzebne są jeszcze dodatkowe składniki, które zostaną przedstawione w poniższych podrozdziałach. W niniejszej pracy wykorzystano wersję 5042 repozytorium Kaldiego datowaną na 1 maja 2015r. 2.1.2 ATLAS biblioteki numeryczne ATLAS (ang. Automatically Tuned Linear Algebra Software) jest biblioteką programistyczną zawierającą zoptymalizowane metody z bibliotek BLAS (ang. Basic Linear Algebra Subprograms) oraz LAPACK (ang. Linear Algebra Package) służące do wykonywania podstawowych operacji algebraicznych na wektorach i macierzach [1]. Interesującą cechą tego pakietu jest fakt, że automatyczna optymalizacja tych metod następuje podczas kompilacji biblioteki na konkretnej platformie sprzętowej w oparciu o jej parametry. W wyniku tego procesu otrzymujemy bibliotekę dostrojoną do konkretnego urządzenia i pozwalającą na efektywne wykonywanie operacji algebraicznych. Ta własność jest bardzo istotna z perspektywy narzędzi Kaldi gdzie operacje algebraiczne pojawiają się praktycznie na każdym kroku. Dzięki bibliotece ATLAS można znacząco skrócić czas potrzebny do wytrenowania modeli akustycznych i ich późniejszej ewaluacji. Kompilacja biblioteki ATLAS jest czasochłonna (może zająć nawet kilkanaście godzin) i czasami sprawia wiele kłopotów (należy upewnić się, że w momencie kompilacji wyłączona jest operacja dynamicznego skalowania częstotliwości procesora (ang. CPU throttling), która zaburza proces optymalizacji). Bibliotekę ATLAS skompilowano w wersji 3.8.3. - 25 -
Przygotowanie środowiska programistycznego oraz danych niezbędnych do przeprowadzenia badań 2.1.3 OpenFST zestaw narzędzi do modelowania automatów skończonych Biblioteki OpenFST stanowią rdzeń systemu ASR opartego na Kaldi. Służą one do budowania, kompilacji, optymalizacji oraz przeszukiwania ważonych automatów skończenie stanowych [16]. Kaldi na każdym kroku korzysta z dostarczonych przez OpenFST funkcjonalności (przede wszystkim budowa kompozytu HCLG, który wykorzystywany jest przy dekodowaniu nagrań). OpenFST to biblioteki napisane w języku C++ i podobnie jak w przypadku Kaldi należy je samodzielnie skompilować. Pliki wykonywalne OpenFST są automatycznie wywoływane przez skrypty Kaldi aby móc z nich korzystać należy ich lokalizację dodać do zmiennej środowiskowej PATH systemu Ubuntu. Używana wersja bibliotek OpenFST to wersja 1.3.4 z 2 listopada 2013r. 2.1.4 CUDA platforma do obliczeń równoległych Większość algorytmów zaimplementowanych w Kaldi jest realizowana przez procesor (CPU). Wspierana jest również wielowątkowość pozwalająca wykonywać obliczenia równolegle (na kilku lokalnych jednostkach CPU lub wykorzystując architektury rozproszone). Mimo tego, ogromna złożoność obliczeniowa algorytmów uczących sieci neuronowe nie pozwala na przeprowadzenie treningów na CPU w sensownym czasie (dla użytkownika dysponującego przeciętnym sprzętem). Ograniczenia te pozwalają obejść karty graficzne (GPU) firmy Nvidia będącymi w istocie procesorami wielordzeniowymi. Liczba takich rdzeni (ang. CUDA Cores) znajdujących się na jednej karcie graficznej sięga nawet kilku tysięcy. Wykorzystując GPU oraz środowisko programistyczne dla architektury CUDA (ang. Compute Unified Device Architecture) można wielokrotnie zredukować czas uczenia się sieci neuronowych [24]. CUDA składa się z własnego kompilatora opartego na języku C (nvcc), debuggera (cuda-gdb) oraz ogólnego interfejsu programowania. Jest to środowisko darmowe żeby jednak z niego skorzystać należy dysponować własną kartą graficzną. Pełny proces instalowania i konfigurowania sterowników CUDA jest szeroko opisany w Internecie. Aby móc korzystać z mocy GPU w Kaldi należy przed procesem kompilacji ustawić odpowiednie parametry w pliku konfiguracyjnym (część bibliotek, odpowiedzialnych za modelowanie sieci neuronowych, zostanie skompilowana kompilatorem nvcc). Opisane dalej eksperymenty zostały przeprowadzone z wykorzystaniem karty GeForce GTX 780 ze sterownikami w wersji 346.59 oraz środowiskiem CUDA w wersji 7.0. - 26 -
Przygotowanie środowiska programistycznego oraz danych niezbędnych do przeprowadzenia badań 2.1.5 SRILM zestaw narzędzi do modelowania językowego Do zbudowania systemu automatycznego rozpoznawania mowy niezbędne jest utworzenie modeli językowych. W Kaldi najczęściej wykorzystuje się statystyczne modele językowe (n-gramy), które konwertowane są do postaci automatu skończenie stanowego (G.fst). W Internecie dostępnych jest wiele narzędzi programistycznych do modelowania językowego (MITLM, SRILM, KenLM). Największe możliwości oferuje SRILM (SRI Language Modeling Toolkit) i jest on w zupełności wystarczający do współpracy z narzędziami Kaldi [23]. Podobnie jak poprzednie pakiety został on napisany w języku C++ i stanowi zbiór plików wykonywalnych, które należy samodzielnie skompilować. Użyto wersji 1.7.1. 2.1.6 FaNT narzędzie do przetwarzania nagrań dźwiękowych FaNT (Filtering and Noise-adding Tool) to program napisany przez naukowców z Hochschule Niederrhein University of Applied Sciences [5]. Pozwala on dodawać dowolny szum o podanym przez użytkownika poziomie SNR (ang. Signal to Noise Ratio) do nagrań dźwiękowych oraz filtrować sygnał mowy w sposób imitujący działanie sieci telefonicznej według określonych standardów. Stosunek sygnału do szumu (SNR) jest obliczany z wykorzystaniem algorytmów detekcji mowy w sygnale audio oraz filtrów ważonych. Program został napisany w języku C i należy go samodzielnie skompilować. Wykorzystano program dostępny na stronie producenta w wersji aktualnej na miesiąc kwiecień 2015r. 2.2 Korpusy mowy polskiej Korpus mowy jest to zbiór danych zawierających nagrania dźwiękowe mowy wraz z odpowiadającymi im transkrypcjom (tekstowy zapis wypowiedzianych w nagraniu słów). Korpusy mowy wykorzystywane są głównie w rozpoznawaniu mowy do trenowania modeli akustycznych. Przygotowywanie korpusów jest zajęciem czasochłonnym i kosztownym. W zależności od wymaganej funkcjonalności systemu ASR czas trwania korpusów powinien wynosić od kilku (dla niewielkiego słownictwa np. rozpoznawanie cyfr) po kilkaset, a nawet kilka tysięcy godzin (dla bardzo dużego słownictwa). Większość korpusów mowy to produkty komercyjne, za których użytkowanie należy zapłacić znaczące sumy pieniędzy. Dla języka polskiego nie powstał jeszcze korpus przekraczający 100 godzin nagrań. Wykorzystywane w tej pracy korpusy mowy zostały - 27 -
Przygotowanie środowiska programistycznego oraz danych niezbędnych do przeprowadzenia badań udostępnione autorowi przez Zespół Przetwarzania Sygnałów Akademii Górniczo-Hutniczej. Poniżej, zbiory te zostały szczegółowo opisane. 2.2.1 Charakterystyka korpusów W niniejszej pracy skorzystano z zasobów zawartych w czterech różnych korpusach mowy: 1. GlobalPhone (PL) Zbiór GlobalPhone stanowi pokaźną kolekcję korpusów mowy dla 19 języków świata [22]. Dla każdego z języków zgromadzono nagrania wykonane przez około 100 dorosłych ludzi (kobiety i mężczyźni) czytających zdania pochodzące z różnych dzienników. Pełny korpus zawiera ok. 300 godzin mowy czytanej. Wykorzystywana przez autora pracy baza dla języka polskiego składała się z 10130 nagrań (około 25 godzin) pochodzących od 78 mówców. Nagrania zostały wykonane z częstotliwością próbkowania 16kHz, 16 bitową rozdzielczością, pojedynczym mikrofonem (mono) i zostały zapisane w formacie WAV (ang. Waveform Audio File Format). Poniżej przedstawiono przykładowe nagranie pochodzące z tej bazy: Rys. 7 Nagranie i jego spektrogram z bazy GlobalPhone 2. AGHdigits - 28 -
Przygotowanie środowiska programistycznego oraz danych niezbędnych do przeprowadzenia badań Korpus składa się z 4463 nagrań wykonanych przez 72 mówców z bardzo szerokiej grupy społecznej (dorośli, dzieci, starsi). Nagrania zostały wykonane poprzez system telefoniczny i z tego wiele z nich zawiera różnego rodzaju zakłócenia. Jak sama nazwa wskazuje wypowiadane w nagraniach kwestie to cyfry (w każdy nagraniu po trzy cyfry, w losowej kolejności). Parametry audio (częstotliwość próbkowania, rozdzielczość bitowa, liczba kanałów) są takie same jak w przypadku korpusu GlobalPhone. 3. AGHstreets Baza zawiera 17042 nagrania pochodzące od 17 dorosłych mówców. Sposób wykonania nagrań jest taki sam jak w przypadku korpusu AGHdigits a ich ogólna jakość jest bardzo podobna. Nagrania zawierają wypowiedziane nazwy ulic (jedna nazwa przypada na jedno nagranie). Parametry audio są takie same jak w poprzednich przypadkach. 4. AGHvoicelab AGHVoiceLab to 10537 nagrań 10 różnych mówców. Nagrania zostały wykonane mikrofonem w zamkniętym pomieszczeniu (niskie tło akustyczne) i składają się z różnego rodzaju czytanych zdań. Parametry audio są identyczne z parametrami pozostałych korpusów. Poniżej przykładowe nagranie: Rys. 8 Nagranie i jego spektrogram z bazy AGHvoicelab - 29 -
Przygotowanie środowiska programistycznego oraz danych niezbędnych do przeprowadzenia badań Poniżej przedstawiono tabelaryczne zestawienie wszystkich analizowanych korpusów mowy wraz z uwzględnieniem ich najważniejszych parametrów. Tabela 1 - Charakterystyka dostępnych korpusów Korpus Rozmiar [MB] Liczba mówców Liczba nagrań Czas trwania [h] Środowisko AGHdigits 641 72 4463 5,7 różne AGHstreets 1400 17 17042 12,0 różne AGHvoicelab 1200 10 10537 10,0 pokój GlobalPhone 2700 99 10130 24,6 pokój Tabela 2 - Charakterystyka dostępnych korpusów (c.d.) Korpus Urządzenie Częstotliwość próbk. [Hz] Rozdzielczość [bit] Liczba kanałów AGHdigits telefon 16000 16 mono AGHstreets telefon 16000 16 mono AGHvoicelab mikrofon 16000 16 mono GlobalPhone mikrofon 16000 16 mono 2.2.2 Wydzielenie podzbiorów korpusów Jednym z najważniejszych etapów w konstruowaniu prawidłowo funkcjonującego sytemu ASR jest właściwe i uważne wydzielenie z korpusów mowy podzbiorów treningowych, deweloperskich oraz ewaluacyjnych, które będą służyć odpowiednio do trenowania modeli akustycznych i językowych, dostrojenia parametrów dekodera (przygotowania systemu ASR do pracy w określonych warunkach) oraz ewaluacji zbudowanego systemu ASR. Najważniejszą zasadą, którą należy przestrzegać podczas generowania tych podzbiorów, jest zapewnienie całkowitej rozłączności utworzonych baz. Dla przykładu: nagrania wchodzące w skład korpusu treningowego nie mogą znaleźć się jednocześnie w korpusie ewaluacyjnym. Wyniki testów przeprowadzonych na zbiorze ewaluacyjnym zawierającym treningowe nagrania byłyby przekłamane (nie dostarczałyby one informacji o ogólnej skuteczności systemu w realnych warunkach pracy, a jedynie o dopasowaniu się modelu akustycznego do danych treningowych). - 30 -
Przygotowanie środowiska programistycznego oraz danych niezbędnych do przeprowadzenia badań Co więcej, w korpusie ewaluacyjnym nie powinni się znajdować mówcy, których nagrania zawarto już w korpusie treningowym. Nie jest to zasada tak bardzo istotna jak poprzednia, jednakże trzymanie się jej pozwala uzyskać bardziej wiarygodne wyniki eksperymentów. Nie zawsze udaje się spełnić ten warunek czasami korpus nagrań dostępny podczas eksperymentów jest zbyt mało zróżnicowany pod względem ilości mówców aby można było wydzielić dostateczną ilość danych treningowych, deweloperskich i testowych spełniających tę regułę. Niniejszy podział dostępnych korpusów mowy (GlobalPhone, AGHdigits, AGHstreets, AGHvoicelab) został wykonany z uwzględnieniem powyższych zasad starając się dodatkowo o to aby w korpusach testowych proporcje między ilością mówców płci męskiej i żeńskiej były takie same. Poniżej przedstawiono szczegółowe informacje na temat każdego wydzielonego podzbioru nagrań. Korpusy ewaluacyjne Wyselekcjonowanie korpusów rozpoczęto od korpusów ewaluacyjnych z tego względu, że łatwiej wybrać nagrania spełniające podane wyżej kryteria mając do dyspozycji pełny zbiór danych. Zdecydowano, że wszystkie korpusy testowe będą trwały łącznie jedną godzinę i będą składać się z nagrań pochodzących z korpusów GlobalPhone, AGHstreets i AGHdigits. Sumaryczny czas trwania korpusów ewaluacyjnych został ustalony na maksymalnie jedną godzinę ze względu na czasochłonność obliczeń niezbędnych do wykonania testów. Uznano, że jedna godzina nagrań wystarczy aby przedstawić statystycznie wiarygodną ogólną skuteczność systemu. Korpusy AGHstreets i AGHdigits są zbliżone jakościowo, dlatego też mówców znajdujących się w korpusach ewaluacyjnych wybrano w taki sposób, aby proporcje między ich liczbą z korpusu GlobalPhone a AGHstreets i AGHdigits były takie same (20/20). Wybór poszczególnych nagrań zrealizowano przy użyciu skryptu napisanego w języku bash. Skrypt ten losowo dobierał nagrania spełniające podane kryteria (liczba mówców, zachowana proporcja między kobietami i mężczyznami) z danego korpusu do momentu przekroczenia wymaganego czasu trwania wszystkich nagrań. Omawiany skrypt, jak i również wszystkie kolejne skrypty, dostępne są na płycie CD dołączonej do pracy. W poniższej tabeli przedstawiono wynikowe korpusy ewaluacyjne wraz z ich najistotniejszymi cechami. - 31 -
Przygotowanie środowiska programistycznego oraz danych niezbędnych do przeprowadzenia badań Tabela 3 - Charakterystyka korpusów ewaluacyjnych Nazwa korpusu ewaluacyjnego Liczba nagrań Liczba mówców Czas trwania [min] speech-corpus-eval-aghdigits 269 12 20,05 speech-corpus-eval-aghstreets 480 8 20,41 speech-corpus-eval-globalphone 140 20 20,40 Korpus deweloperski Korpus deweloperski, służący do dostrojenia dekodera systemu ASR, został wydzielony spośród nagrań utworzonych przez mówców nie znajdujących się w poprzednio wygenerowanym korpusie ewaluacyjnym. Ich całkowitą liczbę ustalono na 12 zachowując proporcje między kobietami i mężczyznami. Czas trwania tego korpusu to, tak jak w przypadku korpusu testowego, jedna godzina. Korpus został utworzony wykorzystując lekko zmodyfikowany skrypt z poprzedniego kroku (modyfikacja opierała się na odfiltrowaniu z całkowitej puli nagrań tych plików, które już znajdowały się w korpusie testowym). Tabela 4 - Charakterystyka korpusu deweloperskiego Nazwa Korpusu Liczba nagrań Liczba mówców Czas trwania [min] AGHdigits 251 4 20,50 AGHstreets 500 2 21,26 GlobalPhone 150 6 20,77 speech-corpus-dev 901 12 62,53 Korpus treningowy Do ostatniego korpusu, korpusu treningowego, dołączono wszystkie pozostałe nagrania, które nie należały do mówców z korpusów ewaluacyjnych i deweloperskiego. Dodatkowo dołączono wszystkie nagrania pochodzące z korpusu AGHvoicelab stanowiących ponad 10 godzin dobrego jakościowo materiału. Sumarycznie, korpus treningowy składał się z 33323 nagrań mowy pochodzących od 125 mówców z różnych kategorii wiekowych. Łączny czas trwania korpusu treningowego wynosił ok. 37.5 godziny. - 32 -
Przygotowanie środowiska programistycznego oraz danych niezbędnych do przeprowadzenia badań Tabela 5 - Charakterystyka korpusu treningowego Nazwa Korpusu Liczba nagrań Liczba mówców Czas trwania [h] AGHdigits 3524 56 4,52 AGHstreets 13920 7 9,74 AGHVoicelab 10537 10 10,04 GlobalPhone 5342 52 13,12 speech-corpus-train 33323 125 37,42 2.2.3 Zakłócanie korpusów ewaluacyjnych Aby przeanalizować odporność analizowanych modeli akustycznych na pracę w różnych warunkach akustycznych zdecydowano się poddać korpusy ewaluacyjne dwóm operacjom, których zadaniem było wprowadzenie zakłóceń do oryginalnych nagrań. Było to zaszumienie nagrań różnego rodzaju próbkami szumu oraz dodanie pogłosu. Poniżej opisano szczegółowo oba procesy. Zaszumienie nagrań Pracę rozpoczęto od zgromadzenia próbek szumów. Próbki zostały wybrane w ten sposób aby cechowały się różnorodnością warunków akustycznych, w których zostały nagrane. Wybrano trzy różne środowiska akustyczne, w których system ASR mógłby z dużym prawdopodobieństwem zostać zastosowany. Są to: - wnętrze samochodu jadącego z dużą prędkością, - zatłoczony bar, - ruchliwe skrzyżowanie dróg. Wszystkie zgromadzone próbki pochodziły z ogólnodostępnej darmowej bazy szumów znajdującej się w Internecie (Freesound [33]). Nagrania znajdujące się w tej bazie zostały wykonane przez bardzo wiele osób z całego świata. Starano się wybrać próbki o najwyższej jakości. Poniżej przedstawiono wyselekcjonowane szumy: - 33 -
Przygotowanie środowiska programistycznego oraz danych niezbędnych do przeprowadzenia badań A. Wnętrze jadącego samochodu Nagranie zostało wykonane cyfrowym rejestratorem dźwięku Marantz PMD620 MKII. Pochodzi ono z wnętrza samochodu (Fiat Punto) poruszającego się z prędkością około 130km/h po jednej z niemieckich autostrad. Oprócz charakterystycznego niskoczęstotliwościowego szumu, od czasu do czasu w nagraniu pojawiają się również słyszalne kliknięcia uruchomionych kierunkowskazów. Nagranie zostało zarejestrowane dwukanałowo z częstotliwością próbkowania 44100Hz i 16 bitową rozdzielczością. Cała próbka trwa 2 minuty i 50 sekund. Zarejestrowany sygnał przekonwertowano do parametrów odpowiadających parametrom nagrań ze zbioru ewaluacyjnego (16kHz, mono). Poniżej przedstawiono przebieg czasowy i spektrogram losowego fragmentu szumu. Jak widać na spektrogramie w sygnale dominują niskie częstotliwości pochodzące z wibracji poruszającego się samochodu. Rys. 9 Nagranie i jego spektrogram szumu z wnętrza jadącego samochodu - 34 -
Przygotowanie środowiska programistycznego oraz danych niezbędnych do przeprowadzenia badań Do zaszumienia nagrań wykorzystano opisany wcześniej program FaNT. Przed zaszumieniem, wszystkie nagrania testowe wraz z próbką szumu należało pozbawić nagłówka WAV - FaNT obsługuje tylko czyste próbki PCM. Miksowanie szumu z nagraniami testowymi wywołano poleceniem: filter_add_noise -i <INPUT_LIST> -o <OUTPUT_LIST> -n <NOISE_PATH> -s <SNR> -r <SEED> -u -e <LOG_PATH> gdzie: <INPUT_LIST> - plik ze ścieżkami do nagrań podlegających zaszumieniu (pozbawionych nagłówka WAV), <OUTPUT_LIST> - plik ze ścieżkami do zaszumionych nagrań, <NOISE_PATH> - ścieżka do nagrania szumu, nagrania, <SNR> - ustalona wartość poziomu SNR z jaką zostaną zaszumione <SEED> - zasiew do generatora liczb pseudolosowych, wykorzystywany przy wybieraniu losowego fragmentu szumu (ustalono stałą wartość zasiewu po to aby odpowiadające sobie nagrania różniły się tylko poziomem SNR), <LOG_PATH> - ścieżka do pliku, w którym umieszczone zostaną logi z przeprowadzonych operacji. Wszystkie trzy korpusy ewaluacyjne zostały zaszumione z następującymi wartościami SNR: SNR= 0.1; 0.5; 1; 1.5; 2; 2.5; 3; 3.5; 4; 5; 6; 7; 8; 9; 11; 13; 15; 17; 20 B. Ruchliwe skrzyżowanie dróg Nagranie zostało wykonane rejestratorem dźwięku Sony MZ-N10 MD wraz z dołączonym mikrofonem ECM-MS907 podczas wieczornego spaceru przez ruchliwe londyńskie skrzyżowania. Na nagraniu słyszalne są rozmowy przechodniów w kilku różnych europejskich językach, odgłosy kroków oraz hałas pochodzący z ruchu ulicznego (przejazdy samochodów, klaksony, itp.). Próbkę zarejestrowano z częstotliwością próbkowania 44100Hz i 16 bitową rozdzielczością. Szum trwa 7 minut i 53 sekundy. Nagranie przetworzono w taki sam sposób jak w podpunkcie A a korpusy testowe - 35 -
Przygotowanie środowiska programistycznego oraz danych niezbędnych do przeprowadzenia badań zaszumiono z takimi samymi poziomami SNR. Poniżej przedstawiono przebieg czasowy i spektrogram losowego fragmentu nagrania. W nagraniu słyszalny jest fragment rozmowy dwóch przechodniów. Zauważalne jest to na spektrogramie, gdzie w okolicach 0.6s widoczne są formanty. Rys. 10 Nagranie i jego spektrogram szumu z ruchliwego skrzyżowania C. Zatłoczony bar Ostatni szum pochodzi z kanadyjskiego pubu Logans Pub. Na nagraniu słyszalne są głośne rozmowy i śmiechy pochodzące od około 50 osób, szczęk butelek i szklanek oraz odgłosy przesuwanego umeblowania. Większość szumu to szum niestacjonarny. Ścieżkę dźwiękową zarejestrowano cyfrowym rejestratorem dźwięku iriver HP 120 z mikrofonem Sony EMC-719 (44100Hz, 16bit, stereo). Całość trwa 5 minut i 50 sekund. Nagrania testowe zostały zaszumione w taki sam sposób jak w poprzednich podpunktach. Poniżej umieszczono przebieg czasowy i spektrogram szumu C. Nagranie jest mocno zanieczyszczone różnego rodzaju szumami. Na spektrogramie można zaobserwować dużą niestacjonarność sygnału. - 36 -
Przygotowanie środowiska programistycznego oraz danych niezbędnych do przeprowadzenia badań Rys. 11 Nagranie i jego spektrogram szumu z zatłoczonego baru Po wykonaniu wszystkich operacji uzyskano łącznie 171 korpusów ewaluacyjnych zaszumionych różnymi rodzajami szumów z różnymi poziomami SNR. Korpusy te zostaną wykorzystane w rozdziale IV. Poniżej przedstawiono kilka wykresów prezentujących losowo wybrane nagranie z korpusu GlobalPhone zaszumione próbką pochodzącą z ruchliwego skrzyżowania z różnymi poziomami SNR. Można zauważyć iż największe zaszumienie zachodzi w niskich częstotliwościach. Poziomy SRN zaszumienia równe 1.0 i 5.0 wprowadzają bardzo duże zakłócenia do oryginalnego sygnału co bardzo dobrze widać na dwóch ostatnich spektrogramach (niektóre formanty przestały być nawet widoczne). - 37 -
Przygotowanie środowiska programistycznego oraz danych niezbędnych do przeprowadzenia badań - 38 -
Przygotowanie środowiska programistycznego oraz danych niezbędnych do przeprowadzenia badań Rys. 12 Nagranie i spektrogramy nagrania z korpusu GlobalPhone zaszumionego różnymi poziomami SNR szumem pochodzącym z ruchliwego skrzyżowania Dodanie pogłosu do nagrań Jako drugi sposób zakłócenia korpusów ewaluacyjnych wybrano dodanie pogłosu do nagrań, które symuluje warunki akustyczne pomieszczeń o różnej odpowiedzi impulsowej, na którą wpływ mają objętość oraz adaptacja akustyczna pomieszczenia. Do generowania pogłosu wykorzystano darmowe narzędzie sox. Program ten pozwala na dodanie pogłosu o określonej intensywności (jak głośny ma być pogłos) oraz o określonym początkowym opóźnieniu, które symuluje parametry akustyczne pomieszczenia ( <200ms dla małych pomieszczeń). Pogłos dodano do wszystkich nagrań pochodzących z trzech analizowanych korpusów testowych poleceniem: sox <INPUT_WAV> <OUTPUT_WAV> reverb <REVERB> 50 100 100 <DELAY> gdzie: <INPUT_WAV> - ścieżka do wejściowego nagrania, <OUTPUT_WAV> - ścieżka do zmodyfikowanego nagrania, - 39 -
Przygotowanie środowiska programistycznego oraz danych niezbędnych do przeprowadzenia badań <REVERB> - intensywność pogłosu (od 0 do 100%), <DELAY> - początkowe opóźnienie pogłosu (od 0 do 500ms). Nowe korpusy wygenerowano dla następujących parametrów: REVERB= 20; 40; 60; 80; 100 DELAY= 0; 50; 100; 150; 200; 250; 300; 350; 400; 450; 500 Łącznie utworzono 165 nowych korpusów ewaluacyjnych. Poniżej umieszczono wykresy przedstawiające losowe nagranie testowe z pogłosem o intensywności 80% i różnymi wartościami opóźnienia wstępnego. Opóźnienie wstępne jest wyraźnie widoczne na spektrogramach. Szczególnie wyraźnie widać jego obecność w niskich częstotliwościach analizowanych sygnałów. Pogłos pozostawia za sobą ślad w postaci dużej ilości zakłóceń w niskim paśmie nawet do samego końca nagrania. W przypadku tak długich wypowiedzi jak nagrania z korpusu GlobalPhone początkowe opóźnienie pogłosu nie będzie miało tak dużego znaczenia. Stopień zakłócenia sygnałów będzie podobny. Różnice będą dostrzegalne dla korpusu AGHstreets, w którym większość nagrań składa się z krótkich pojedynczych słów. Wtedy dla dłuższego opóźnienia pogłosu oryginalne nagranie może nie zostać zakłócone. - 40 -