Ukryte modele Markowa jako metoda rozpoznawania mowy
Click here to load reader
-
Upload
michal-stanek -
Category
Documents
-
view
8.177 -
download
0
description
Transcript of Ukryte modele Markowa jako metoda rozpoznawania mowy
Ukryte Modele Markowa w rozpoznawaniu mowyMichał Stanek
Data seminarium: 24 styczeń 2006Data oddania dokumentu: 26 styczeń 2006
Streszczenie
Dokument omawia zagadnienia związane z rozpoznawaniem mowy za pomocą ukrytych modeli markowa. Omówiony został proces konstrukcji systemu, wykorzystanie modeli markowa w praktycznym działaniu oraz budowa zintegrowanego systemu rozpoznawania mowy SPHINX 4.
1. Wstęp
Historia systemów rozpoznawania mowy sięga początków lat 50-tych, kiedy to w Bell Laboratory zaczęto prace nad systemem do rozpoznawania izolowanych cyfr. Wykorzystywano wtedy informacje na temat różnic w rezonansach spectrów. Koniec lat 50-tych, lata 60-te oraz 70-te to dalszy rozwój tej dziedziny. Poza analizą spectrów zaczęto wykorzystywać informacje statystyczne, porównywać wzorce. Powstały matematyczne podstawy oraz formalizacja wielu metod w tym metody [2]:
• nieliniowego skalowania pary słów w celu ich porównania,
• liniowe kodowanie predykcyjne,
• dwupoziomowe programowanie dynamiczne,
• jednoprzebiegowa metoda Bridle'a i Browna,
• ukryte modele Markowa oraz
• sieci neuronowe.
Wiele z prac rozpoczętych w tamtym okresie zakończyło się sukcesami, między innymi system IBM'a (opracowywany ponad 20 lat) osiąga on bardzo dobre rezultaty przy rozpoznawaniu mowy ciągłej.
Obecnie poprawia się opracowywane wcześniej techniki, lecz niewątpliwie największą popularnością cieszą się ukryte modele markowa. Są one tak popularne i tak często wykorzystywane, że wiele osób myśli, iż stanowią one jedyne słuszne i prawidłowe rozwiązanie problemu rozpoznawania mowy.
2. Rodzaje systemów rozpoznawania mowy
Wyróżnić możemy różne rodzaje systemów rozpoznawania mowy [1]. Istniejące systemy podzielić możemy na takie, których zadaniem jest rozpoznawania mowy ciągłej i takie które mają wykrywać wystąpienia izolowanych słów (wbrew pierwszemu wrażeniu rozpoznawanie pojedynczych słów nie jest wcale sprawą łatwiejszą).
Wyróżnić możemy również systemy przeznaczone dla jednej konkretnej osoby, czyli
1
ukierunkowane w celu rozpoznawania sygnału dźwiękowego z pewną z góry określoną charakterystyką, oraz takie które muszą rozpoznać słowa wypowiadane przez wielu potencjalnych rozmówców.
Wreszcie ze względu na wielkość wyróżnić możemy systemy małe, średnie oraz duże. Jako systemy małe rozumiemy takie w których łączna ilość rozpoznawanych słów lub zwrotów nie przekracza 100. Systemy takie cechują się najwyższą skutecznością oraz potrafią poradzić sobie z rozpoznawaniem mowy wielu osób. Średnie systemy to takie w których łączna liczba rozpoznawanych słów nie przekracza 3 tysięcy. Aktualnie badania oraz prace rozwojowe prowadzi się nad systemami tej właśnie wielkości. W końcu systemy duże to takie w których liczba rozpoznawanych słów sięga nawet 20 tysięcy. W trakcie tworzenia takich systemów pojawia się wiele komplikacji, zwłaszcza jeżeli chcemy stworzyć system uniwersalny potrafiący rozpoznawać mowę wielu osób. Jeszcze trudniej stworzyć taki system tej wielkości działający w czasie rzeczywistym.
3. Etapy rozpoznawania mowy
Każdy system rozpoznawania mowy składa się z zasadniczo podobnych modułów, z których każdy odpowiedzialny jest za analizę otrzymanych danych na odpowiednim dla niego poziomie. Zasadniczo nie ma znaczenia jakich algorytmów i metod używamy w trakcie procesu rozpoznawania mowy, czy są to przykładowo sieci neuronowe czy też może ukryte modele markowa, ogólny schemat pozostaje niezmienny. Schemat ten przedstawiony jest na rysunku 1, a każdy z kroków analizy sygnału zostanie omówiony w dalszej części tego podpunktu.
Rysunek 1: Etapy rozpoznawania mowy ([3] str. 19)
Etap analizy sygnału dźwiękowego
Pierwszym oraz zasadniczym etapem w czasie rozpoznawania sygnału dźwiękowego jest etap analizy tego sygnału. Jest on niezmiernie istotny z punktu widzenia funkcjonowania całego systemu. Jak widzimy na rysunku 1, błędy powstałe na tym etapie odbiją się na wszystkich następnych krokach. Podczas tego etapu dochodzi do wydobycia pewnych wartości charakteryzujących dany sygnału wejściowy. Należą do nich między innymi zmiana amplitudy w czasie oraz zmiana natężenia poszczególnych częstotliwości w czasie (rys. 2). Od nas zależy jakie cechy będą dla nas interesujące. Niemniej jednak istnieje już szereg parametrów, które potwierdziły swoje praktyczne znaczenie[2], między innymi parametry cepstralne oraz wartości zmian energii sygnału.
2
Rysunek 2: Wykres amplitudy od czasu oraz natężenia częstotliwości od czasu – spektrogram ([2] str. 7)
Rysunek 3: Przykładowa konfiguracja filtrów dla fazy wstępnej ([2] str. 5)
Kiedy ustalimy już zestaw podstawowych parametrów jakie chcemy wydobywać z dźwięku (rysunek 2 przedstawia przykładową konfigurację filtrów dźwiękowych), kolejnym etapem jest ustalenie długości ramki dźwiękowej. Zastosowanie ramki powoduje, że pomiaru parametrów dokonujemy nie z całego sygnału dźwiękowego, a tylko z jego fragmentu. Ramki dźwiękowe w zależności od podejścia mogą na siebie nachodzić lub też nie. Podział sygnału dźwiękowego na ramki powoduje iż uzyskujemy ciąg pomiarów z których każdy jest wektorem odpowiednio zdefiniowanych przez nas cech. Taki wektor trafia następnie do etapu analizy, gdzie następuje próba zakwalifikowania danego zestawu obserwacji do wcześniej wprowadzonych wzorców. Zanim to się jednak stanie stoimy przed jeszcze jednym problemem, jakim jest ciągłość wartości parametrów charakteryzujących każdą ramkę.
Rysunek 4: Podział sygnału dźwiękowego na ramki
Wiele metod maszynowego uczenia w tym także ukryte modele markowa posiadają dyskretny charakter, i aby móc je zastosować dysponować musimy dyskretnym oraz skończonym zestawem dopuszczalnych stanów. Problem ten rozwiązuje się za pomocą kwantyzacji danego sygnału.
Problem doboru progów dla poszczególnych parametrów rozwiązujemy zazwyczaj z wykorzystaniem algorytmów klasteryzujących np. K-means. Po utworzeniu odpowiednich klastrów każdy parametr zostaje zakwalifikowany do odpowiedniego z nich i jego numer zostaje dalej zwracany. Możliwe jest, że klasteryzacji podlega cały wektor w n-wymiarowej przestrzeni, dzięki czemu możliwe jest zmniejszenie do jednego wymiaru wektora wejściowego zwracając po prostu numer klastra, który jest
3
najbardziej podobny do danego zestawu parametrów sygnału. Rozwiązanie takie upraszcza również dalszą konstrukcję modelu w którym nie musimy rozważać tak dużej liczby kombinacji różnego rodzaju parametrów wejściowych.
Rozpoznanie sygnału za pomocą ukrytych modeli markowa
Analizę ciągu wektorów będących parametrami charakteryzującymi dany sygnał dźwiękowy możemy przeprowadzić przy wykorzystaniu ukrytych modeli markowa. Jak wiemy modele te są wykorzystywane tam gdzie dysponujemy jedynie ciągiem obserwacji, a same przejścia pomiędzy poszczególnymi stanami systemu są dla nas niewiadome. Z takim właśnie przypadkiem spotykamy się w czasie analizy sygnałów dźwiękowych pod kątem rozpoznawania mowy. Zanim jednak przejdziemy dalej chciałbym przedstawić pewne charakterystyczne typy ukrytych modeli markowa szczególnie przydatne w czasie analizowania sygnałów dźwiękowych.
Rysunek 5: Typy ukrytych modeli markowa (a) - model ergodyczny, (b) i (c) - model Bakisa
Na rys. 6 (a) widzimy tradycyjny graf dla stacjonarnego procesu markowa pierwszego rzędu. Jest to model ergodyczny, czyli taki w którym z każdego stanu do każdego istnieje połączenie. W procesie analizowania sygnału dźwiękowego okazało się jednak, że zarówno w procesie uczenia jak i w późniejszym procesie rozpoznawania wzorca dużo bardziej skuteczne okazały się modele markowa charakteryzujące się pewną określoną własnością. Model taki widzimy na rys. 6 (b), tą charakterystyczną cechą jest to, że nie mamy połączeń do poprzednich stanów (stanów o numerze niższym niż aktualny). Modele takie nazywamy lego-prawymi (left-righ hmm models) lub modelami Bakisa. Macierz prawdopodobieństw przejścia pomiędzy stanami jest macierzą trójkątną górną (1).
(1)
Wprowadza się również kolejne ograniczenie, jakim jest maksymalna liczba stanów o które może nastąpić przesunięcie do przodu oznaczana symbolem 'Δ'. Wszystkie te zależności zawarte są w nierównościach (2). Wprowadzenie ich zasadniczo ułatwia znalezienie parametrów modelu w trakcie procesu nauki np. za pomocą algorytmu Welcha, wektor π jest z góry określony (ponieważ zawsze zaczynam w stanie o nume
4
rze 1), a na macierz A jest nałożone dużo ograniczeń zasadniczo zmniejszających potencjalną przestrzeń rozwiązań.
(2)
Kolejną niekorzystną cechą jaka charakteryzuje podstawowy model markowa jest to, że prawdopodobieństwo pozostania w danym stanie maleje wykładniczo z czase,. Nie jest to pożądana cecha, chcielibyśmy aby model mógł pozostać w każdym stanie przez pewien okres czasu (rys. 6). Prowadzi to do kolejnej modyfikacji reprezentacji ukrytego modelu markowa i wiąże się z późniejszymi komplikacjami w postaci modyfikacji algorytmu Welcha, który musi dodatkowo wyznaczyć parametr D, określający maksymalny czas w jakim układ może przebywać w danym stanie.
Rysunek 6: Model markowa w którym uwzględniamy czas pozostania w danym stanie
Skoro omawiamy już modyfikację wprowadzane do ukrytych modeli markowa ze względu na możliwości analizowania sygnału dźwiękowego, warto wspomnieć również, o tym, że są one również wykorzystywane do modelowania reguł gramatycznych języka. Zastosowanie ukrytych modeli markowa zamiast gramatyki bezkontekstowej umożliwia nam wyrażenie większej ilości danych np. podczas modelowania możliwych połączeń np. słów w zdania. Aby to osiągnąć, niezbędne jest umożliwienie układowi przejścia bez wygenerowania obserwacji, łuk taki oznaczamy symbolem ø (rys. 7)
Rysunek 7: Rozszerzenie modelu o możliwość przejść między stanami bez obserwacji
Na rysunku 7 (c) przedstawiony jest model markowa za pomocą którego wygenerować możemy dowolnie długą cyfrę. Rozwiązanie z wprowadzeniem przejścia nie produkującego obserwacji jest również przydatne do opisania np. słów, które posiadają różne możliwe wymowy, rysunek 7 b przedstawia taki graf dla słowa „two”.
Skoro omówione mamy już typy modeli markowa przejdziemy teraz do zagadnienia samego rozpoznawania. Tutaj stajemy przed kolejnym bardzo istotnym zagadnieniem jakim jest wybór najmniejszej rozpoznawanej jednostki. Jednostką taką może być przykładowo słowo. Podejście takie jest dobre dla systemów małych, w których
5
mamy ograniczoną liczbę słów. Problem pojawia się w przypadku gdy chcemy rozpoznawać około 10 000 słów. Zakładając, że dysponujemy tylko 5 przykładami wymowy każdego słowa liczba przykładów dla jakich będziemy szukać parametrów modelu (proces nauki) rośnie do ogromnej liczby 50 000 słów. Nawet jeżeli udało by nam się zebrać tak ogromną liczbę danych, system nasz będzie w stanie rozpoznać jedynie te 10 000 słów. Alternatywnym podejściem jest rozpoznawanie fonemów1, umożliwia nam to rozpoznanie potencjalnie dowolnego słowa. Nie jest jednak bez wad, dla języka angielskiego mamy około 40-50 fonemów[1], co wymaga przygotowania około 2500 przykładów uczących. Jednak skuteczność systemów opartych na tym paradygmacie jest około 50% mniejsza niż systemów rozpoznających całe słowa, wynika to z pewnych zależności kontekstowych (koartykulacji), kiedy poprzedni fonem zmienia brzmienie fonemu po nim następującego.
Alternatywnym podejściem jest rozpoznawanie sylab. Systemy oparte na tej zasadzie są już dużo dokładniejsze niż systemy oparte na fonemach, niestety w języku angielskim dysponujemy około 10 000 możliwych sylab, co znowu czyni proces przygotowywania danych bardzo uciążliwym. Możemy zmniejszyć tą liczbę próbując rozpoznawać podwójne sylaby (demi-syllables), przykładowo dla angielskiego słowa bed, musielibyśmy rozpoznać wtedy dwa wzorce /B AE/ + /AE D/. Dzięki takiemu podejściu i faktowi, że część sylab nie może występować obok siebie ilość danych jakie musimy przygotować spada do „zaledwie” 2 000.
Zdecydowanie najlepsze są systemy które rozpoznają tak zwane trójdźwięki (triphones) – fonemy występujące w kontekście. Słowo „bed” składa się z następujących trójdźwięków: SILBAE BAED AEDSIL (gdzie SIL oznacza ciszę). Jednak skoro posiadamy aż 50 fonemów dla języka angielskiego (w języku polskim występuje około 78), to rozważając kombinację wszystkich trójek takich fonemów otrzymujemy astronomiczną liczbę 503 = 125 000. Jednak podobnie jak w przypadku sylab większość kombinacji nie jest możliwa w języku, dodatkowo stosuje się pewien zabieg uogólnienia w którym określa się że dany fonem poprzedza np. samogłoska, co zapisujemy VTV (v – vowel).
Każde z przedstawionych tutaj podejść ma swoje wady oraz zalety, różnią się zarówno możliwościami jakie oferują jak również czasochłonnością przygotowania danych uczących. Kiedy jednak zdecydujemy się na któreś z nich przechodzimy do kolejnego etapu jakim jest skonstruowanie ukrytych modeli markowa. Modeli tych konstruujemy dokładnie tyle ile chcemy jednostek wykrywać. Dla systemu rozpoznającego 10 słów stworzymy 10 modeli, każdy rozpoznający dane słowo. Dla systemu rozpoznającego fonemy stworzymy 50 modeli, każdy rozpoznający pojedynczy fonem. Załóżmy jednak w tej chwili, że rozpoznawać chcemy te 10 słów, musimy zatem utworzyć 10 ukrytych modeli markowa oraz wyznaczyć ich parametry, tak aby każdy mógł rozpoznać dokładnie jedno słowo. Aby tego dokonać musimy jeszcze dysponować odpowiednimi przykładami uczącymi, czyli ciągami obserwacji, w naszym przypadku będzie to lista wektorów parametrów charakteryzujących dany wyraz. Wyznaczenie parametrów każdego z tych modeli odbywa się za pomocą algorytmu Welcha, który uruchamiamy z danymi każdej obserwacji dla rozpoznawanych jednostek.
Etap rozpoznawania sygnału dźwiękowego, polega na tym, że każdy sygnał trafia do wszystkich modeli i staramy się odpowiedzieć na pytanie jakie jest prawdopodobieństwo wygenerowania danego sygnału przez ten model. W tym momencie
1 Fonem jest najmniejszą jednostką dźwięku posiadającą znaczenie w języku.
6
możemy stworzyć tablicę rankingową słów, a w zasadzie modeli które uzyskały największe prawdopodobieństwa, lub też wybrać ten jeden który uzyskał największe prawdopodobieństwo (rys. 8). Podobna sytuacja występuje jeżeli analizujemy fonemy, sylaby czy trójdźwięki, musimy dysponować dokładnie taką liczbą ukrytych modeli markowa jaką mamy zamiar wykrywać.
Rysunek 8: ([3] str. 5)
Analiza leksykalna
Jesteśmy już za etapem wykrywania podstawowych jednostek z dźwięku. W tym momencie kończy się właściwie proces, w którym bierzemy pod uwagę parametry sygnału dźwiękowego. Kolejnym etapem jest analiza leksykalna, jest ona przeprowadzana jednak tylko wtedy kiedy rozpoznawana jednostka jest mniejsza niż słowo, gdyż jej zadaniem jest ustalenie najbardziej prawdopodobnego słowa na podstawie wyników uzyskanych z poprzedniego etapu dopasowania wzorców dźwiękowych. Na rys. 9 przedstawione są dwa modele markowa, pierwszy odpowiedzialny za wykrycie fonemu /s/, drugi natomiast za wykrycie słowa „sad”, jak widać model odpowiedzialny za wykrycie słowa określa reguły składania poszczególnych fonemów. Przykład z tym słowem jest jednak trywialny, ponieważ prawdopodobieństwa przejść pomiędzy poszczególnymi stanami są ustalone na 1.0, co jest równoznaczne z zastosowaniem na przykład automatu skończonego w celu wykrycia słowa. Oczywiście wykorzystanie ukrytych modeli markowa na tym poziomie nie jest konieczne, jest jednak bardzo pomocne jeżeli dane słowo może być wypowiadane w różny sposób (np. uwzględniając akcent). Aby odpowiedzieć na pytanie które słowo (model markowa określające zasady konstrukcji słowa) jest najbardziej prawdopodobny dla danego ciągu obserwacji należy wykorzystać algorytm Viterbiego.
Rysunek 9: Modele markowa dla rozpoznania fonemu i słowa
7
Analiza syntaktyczna
Kolejnym etapem analizy mowy jest łączenie słów w zdania i wypowiedzi. Jest to realizowane przez zdefiniowanie gramatyki rozpoznawanego języka, a następnie sprawdzanie czy rozpoznane słowo (wraz ze słowami je poprzedzającymi) zgadza się z tymi regułami. Etap ten zazwyczaj służy do określenia odpowiednich ograniczeń na wyniki uzyskane z warstwy dokonującej analizy leksykalnej, która zwraca poszczególne słowa. Oczywiście zakładając, że warstwa leksykalna zwraca nie jeden a wiele wyników, każdy z odpowiednim prawdopodobieństwem, słowa te można sprawdzić pod kątem tego czy jest możliwe ich wystąpienie w takiej sekwencji, a następnie jak dana sekwencja słów jest prawdopodobna w danym języku. Odpowiedzi na takie pytania udzielają np. słowniki N-gramowe, które zawierają prawdopodobieństwa wystąpienia danego słowa w kontekście o długości n-1. Oczywiście prawdopodobieństwa takie uzyskuje się po wcześniejszej analizie statystycznej korpusu2. Naturalnym sposobem wyrażenia słowników n-gramowych jest konstrukcja ich w postaci modeli markowa.
Rysunek 10: Model języka w postaci modelu markowa
Jeżeli obliczyliśmy już wszystkie prawdopodobieństwa możliwe jest znalezienie ścieżki, podobnie jak to się odbywało na etapie analizy leksykalnej, za pomocą np. algorytmu Viterbiego, dla której maksymalizowana jest wartość prawdopodobieństwa.
Analiza semantyczna
Analiza semantyczna podobnie jak poprzednie etapu służy do ograniczenia liczby możliwych odpowiedzi systemu, poprzez minimalizację prawdopodobieństwa wystąpienia pewnych sekwencji słów. Analiza semantyczna polega na badaniu kontekstu całej wypowiedzi i bazowaniu na wcześniej uzyskanych informacjach. Przykładowo jeżeli wiemy, że mówca opowiada właśnie o jego nowym motorze, możemy ograniczyć lub też zwiększyć prawdopodobieństwa wystąpienia wypowiedzi charakteryzujących pojazdy a zminimalizować prawdopodobieństwa wypowiedzi charakteryzujących ludzi.
2 Korpus – zbiór reprezentatywnych tekstów dla danego języka.
8
Omówione poszczególne etapy rozpoznawania mowy, na zakończenie warto podsumować przedstawione wcześniej informacje. Na rysunku 11 znajduje się ogólny schemat działania systemu rozpoznawania mowy [5].
Rysunek 11: Model języka w postaci modelu markowa
4. Pakiet rozpoznawania mowy SPHINX 4
Na rynku dostępne jest już dość sporo programów umożliwiających rozpoznawanie mowy, za większość z nich niestety musimy zapłacić dość znaczną kwotę, a metody w nich użyte objęte są tajemnicą. Dla zainteresowanych badaniami w dziedzinie rozpoznawania mowy z pomocą przychodzi jednak pakiet SPHINX który poza tym że posiada bardzo dokładną dokumentacje jest systemem open sourcowym. Składa się on również z modułów które mogą być niezależnie wymieniane i poprawiane. Schemat budowy SPINXa 4 przedstawiony jest na rysunku 12.
9
Rysunek 12: Schemat budowy systemu SPHINX 4
Trzy najważniejsze jego moduły to:
• FronEnd – przetwarzający sygnał wejściowy w ciąg cech, za pomocą zestawu filtrów, mamy pełną możliwość konfigurowania zarówno jakie filtry chcemy wykorzystywać jak również w jakiej kolejności (rys. 13). Moduł ten zaimplementowane najczęściej wykorzystywanych filtry typu MEL, FIR, odwrotne transformaty kosinusowe, dyskretne transformaty fouriera, odwrotne dyskretne transformaty fouriera i wiele innych.
• Linguist – moduł odpowiedzialny za rozpoznawanie wzorców oraz przygotowanie drzew przeszukiwań.
• Search Manager – odpowiedzialny jest za przeszukiwanie przestrzeni możliwych rozwiązań zdefiniowanych za pomocą SearchGraphów i wybranie tych najbardziej prawdopodobnych.
Rysunek 13: Schemat działania modułu FrontEnd
Moduł Linguist składa się z następujących modułów:
• AcousticModel – odpowiedzialny jest za rozpoznawanie sygnałów akustycznych, co domyślnie robione jest to za pomocą ukrytych modeli markowa.
• Dictionary – zawiera zestaw słów rozpoznawany przez system oraz dla każdego słowa określa zestaw jednostek składowych (pochodzących z AcousticModel) oraz reguły ich łączenia.
• LanguageModel – zawiera reguły gramatyczne danego języka. Moduł ten
10
może wykorzystywać słowniki n-gramowe, gramatyki bezkontekstowe, transduktory skończenie stanowe itp.
Wynikiem działania modułu Linguist jest graf przeszukiwań SearchGraph przedstawiony na rysunku 14.
Rysunek 14: Schemat budowa grafu przeszukiwań
Graf ten trafia następnie do modułu Decoder a dokładniej SearchManager odpowiedzialnego za wyszukanie najlepszego dopasowania danego ciągu obserwacji do odpowiedniej ścieżki w SearchGraphie. Do tego celu wykorzystywane mogą być algorytmy A*, DeepFirst lub też algorytm Viterbiego. Za ocenę poszczególnych rozwiązań odpowiedzialny jest moduł Scorer, natomiast moduł Pruner odpowiada za usuwanie z grafu SearchGraph wierzchołków, których prawdopodobieństwo, że należą do rozwiązania jest zbyt małe.
Literatura:[1] An Overview of Speech Recognition: lecture 12, http://www.cs.rochester.edu/u/james/CSC248/Lec12.pdf
[2] Rozpoznawanie izolowanych słów języka polskiego http://www.cin.pojan.net/sris/sem.pdf
[3] A tutorial on hidden markov models and selected application in speech recognition, Lawrence R. Rabiner, Procedings of the IEEE, vol. 77, NO. 2, February 1989
[4] Sphinx IV: A flexible open source framework for speech recognition, Willie Walker, Paul Lamere, Philip Kwok, Bhiksha Raj, Rita Singh, Evandro Gouvea, Peter Wolf, Joe Woelfel
[5] Speech recognition for voice based control, Y. S. Naous, G. F. Choueiter, M. I. Ohannessian and M. A. Al-Alaoui
11