praca dyplomowa - zespół przetwarzania sygnałów [dsp agh]dydaktyka:m_pasternak.pdf · miesięcy...
TRANSCRIPT
1
AKADEMIA GÓRNICZO-HUTNICZA
im. Stanisława Staszica w Krakowie
WYDZIAŁ INŻYNIERII
MECHANICZNEJ I ROBOTYKI
Praca dyplomowa inżynierska
Marcin Pasternak
Imię i nazwisko
Inżynieria Akustyczna
Kierunek studiów
Testy krzyżowe systemów identyfikacji mówcy
Temat pracy dyplomowej
dr inż. Bartosz Ziółko …………………..
Promotor pracy Ocena
Kraków, rok 20...../20.....
2
Kraków, dn…14 I 2014…………..
Imię i nazwisko: Marcin Pasternak
Nr albumu: 241531
Kierunek studiów: Inżynieria Akustyczna
Specjalność:
OŚWIADCZENIE
Świadomy/a odpowiedzialności karnej za poświadczanie nieprawdy oświadczam,
że niniejszą inżynierską pracę dyplomową wykonałem/łam osobiście i samodzielnie oraz
nie korzystałem/łam ze źródeł innych niż wymienione w pracy.
Jednocześnie oświadczam, że dokumentacja praca nie narusza praw autorskich
w rozumieniu ustawy z dnia 4 lutego 1994 roku o prawie autorskim i prawach pokrewnych
(Dz. U. z 2006 r. Nr 90 poz. 631 z późniejszymi zmianami) oraz dóbr osobistych
chronionych prawem cywilnym. Nie zawiera ona również danych i informacji, które
uzyskałem/łam w sposób niedozwolony. Wersja dokumentacji dołączona przeze mnie na
nośniku elektronicznym jest w pełni zgodna z wydrukiem przedstawionym do recenzji.
Zaświadczam także, że niniejsza inżynierska praca dyplomowa nie była wcześniej
podstawą żadnej innej urzędowej procedury związanej z nadawaniem dyplomów wyższej
uczelni lub tytułów zawodowych.
………………………………..
podpis dyplomanta
3
Kraków, …14 I 2014…………..
Imię i nazwisko: Marcin Pasternak
Adres korespondencyjny:
Temat pracy dyplomowej inżynierskiej: Testy krzyżowe systemów identyfikacji mówcy
Rok ukończenia:
Nr albumu: 241531
Kierunek studiów: Inżynieria Akustyczna
Profil dyplomowania:
OŚWIADCZENIE
Niniejszym oświadczam, że zachowując moje prawa autorskie , udzielam Akademii
Górniczo-Hutniczej im. S. Staszica w Krakowie nieograniczonej w czasie nieodpłatnej
licencji niewyłącznej do korzystania z przedstawionej dokumentacji inżynierskiej pracy
dyplomowej, w zakresie publicznego udostępniania i rozpowszechniania w wersji
drukowanej i elektronicznej1.
Publikacja ta może nastąpić po ewentualnym zgłoszeniu do ochrony prawnej
wynalazków, wzorów użytkowych, wzorów przemysłowych będących wynikiem pracy
inżynierskiej2.
Kraków, ...............… ……………………………..
data podpis dyplomanta
1 Na podstawie Ustawy z dnia 27 lipca 2005 r. Prawo o szkolnictwie wyższym (Dz.U. 2005 nr 164 poz. 1365) Art.
239. oraz Ustawy z dnia 4 lutego 1994 r. o prawie autorskim i prawach pokrewnych (Dz.U. z 2000 r. Nr 80, poz.
904, z późn. zm.) Art. 15a. "Uczelni w rozumieniu przepisów o szkolnictwie wyższym przysługuje pierwszeństwo
w opublikowaniu pracy dyplomowej studenta. Jeżeli uczelnia nie opublikowała pracy dyplomowej w ciągu 6
miesięcy od jej obrony, student, który ją przygotował, może ją opublikować, chyba że praca dyplomowa jest
częścią utworu zbiorowego." 2 Ustawa z dnia 30 czerwca 2000r. – Prawo własności przemysłowej (Dz.U. z 2003r. Nr 119, poz. 1117 z
późniejszymi zmianami) a także rozporządzenie Prezesa Rady Ministrów z dnia 17 września 2001r. w
sprawie dokonywania i rozpatrywania zgłoszeń wynalazków i wzorów użytkowych (Dz.U. nr 102 poz. 1119
oraz z 2005r. Nr 109, poz. 910).
4
Kraków, dnia
AKADEMIA GÓRNICZO-HUTNICZA
WYDZIAŁ INŻYNIERII MECHANICZNEJ I ROBOTYKI
TEMATYKA PRACY DYPLOMOWEJ INŻYNIERSKIEJ
dla studenta IV roku studiów stacjonarnych
Marcin Pasternak imię i nazwisko studenta
TEMAT PRACY DYPLOMOWEJ INŻYNIERSKIEJ:
Testy krzyżowe systemów identyfikacji mówcy
Promotor pracy: dr inż. Bartosz Ziółko
Recenzent pracy: Podpis dziekana:
PLAN PRACY DYPLOMOWEJ
1. Omówienie tematu pracy.
2. Przygotowanie literatury i innych źródeł wiedzy.
3. Przeprowadzenie niezbędnych testów.
4. Analiza otrzymanych wyników testów, ich omówienie i zatwierdzenie przez promotora.
5. Opracowanie redakcyjne.
Kraków, ...............… ……………………………..
data podpis dyplomanta
TERMIN ODDANIA DO DZIEKANATU: 20 r.
podpis promotora
5
Akademia Górniczo-Hutnicza im. Stanisława Staszica Kraków, .................
Wydział Inżynierii Mechanicznej i Robotyki
Kierunek: Inżynieria Akustyczna
Profil dyplomowania:
Marcin Pasternak
Praca dyplomowa inżynierska
Testy krzyżowe systemów identyfikacji mówcy
Opiekun: dr inż. Bartosz Ziółko
STRESZCZENIE
Celem niniejszej pracy było przeprowadzenie testu krzyżowego systemu
identyfikacji mówcy Surikate, który został opracowany przez Zespół Przetwarzania
Sygnałów AGH i firmę Techmo. Program wykorzystywany do tego celu został
zaimplementowany w środowisku Microsoft Visual Studio, ponadto jego użytkowanie
wymagało posiadania wiedzy z zakresu przetwarzania sygnałów oraz metod
statystycznych jak również umiejętności programowania w języku C++, znajomości
toolkitu HTK i budowy plików formatu .wav. W rozdziale pierwszym przedstawiono
różnicę między weryfikacją a identyfikacją mówcy oraz przybliżono podstawowe
wiadomości o sposobie identyfikacji mówcy ze szczególnym naciskiem na ukryte modele
Markowa oraz na cepstralne melowe współczynniki częstotliwościowe. Opisano także
metody sprawdzające poprawne działanie algorytmów i toolkit HTK jako jedną z gałęzi
Surikate. Następnie przybliżono architekturę systemu Surikate. Zamieszczono informację
o sposobie identyfikacji mówcy zawartym w tym hybrydowym systemie służącym do
rozpoznawania mówcy, za którą odpowiedzialny jest toolkit HTK. W drugiej części
opisano ważniejsze metody znajdujące się w klasie odpowiadającej za przeprowadzenie
testu krzyżowego. W trzecim rozdziale zamieszczono wyniki dla przeprowadzonych
testów. W czwartym rozdziale wyciągnięto odpowiednie wnioski podparte wynikami
otrzymanymi w trakcie testowania programu oraz propozycje jego dalszego rozwoju.
W ostatnim rozdziale zamieszczono wykaz literatury użytej przy pisaniu pracy.
6
AGH University of Science and Technology Kraków, the............
Faculty of Mechanical Engineering and Robotics
Field of Study: Acoustic Engineering
Specialisations:
Marcin Pasternak
Engineer Diploma Thesis
Crossvalidation tests of speaker identification systems
Supervisor: Bartosz Ziółko Ph.D.
SUMMARY
The goal of this work was to write a program that performs cross validation tests
for Surikate: a hybrid speaker regonition system created by Signal Processing Group AGH
and Techmo. This program has been implemented in the Microsoft Visual Studio
Environment. In order to achieve this goal, it was necessary to know and understand
digital signal processing, statistical methods, C++ programming, HTK toolkit and wave
files. The first chapter is of information containing speaker identification with an emphasis
on Markov Hidden Models and Mel-frequency Cepstral Coefficients. It holds a description
on methods that are used to validate algorithms, and how speaker identification in this
particular branch of hybrid system were under the responsibility of the HTK toolkit. This
chapter also explains the differences between recognition and validation speaker systems,
as well as information about the HTK toolkit and the systems’ architecture. The second
chapter describes other important methods that were used in class with the intention to
execute cross validation tests. Results for the tests were listed within the third chapter. The
fourth chapter contains scientific conclusions with propositions for further developing this
program. The bibliography that have been used in order to prepare this work is found in
the fifth and final chapter.
7
Składam serdeczne podziękowania Promotorowi
Panu dr inż. Bartoszowi Ziółko
oraz mgr inż. Mikołajowi Kundegórskiemu
za wszechstronną pomoc oraz poświęcony czas.
8
Spis Treści
1. Teoria ........................................................................................9
1.1. Identyfikacja a weryfikacja ............................................................ 9
1.2. Sposoby identyfikacji mówców w systemach
rozpoznawania mowy .................................................................................. 9
1.2.1. MFCC .......................................................................................................... 10
1.2.2. HMM ........................................................................................................... 13
1.2.2.1. Dyskretny proces Markowa ................................................................... 13
1.2.2.2. Ukryty model Markowa.......................................................................... 15
1.2.3. Algorytm Viterbiego .................................................................................. 16
1.3. HTK ................................................................................................ 18
1.3.1. Surikate - opis działania systemu ............................................................. 19
1.4. Metody statystyczne służące do oceny
skuteczności algorytmu .............................................................................. 21
1.5. Budowa pliku w formacie .wav .................................................... 22
2. Klasa CrossVal - opis zaimplementowanych metod ..........24
2.1. RecoutRemake ............................................................................... 24
2.2. MergeWaves ................................................................................... 25
2.3. TrainModel ..................................................................................... 26
2.4. TestModel ....................................................................................... 26
2.5. CrossWavfile .................................................................................. 27
3. Wyniki dla przeprowadzonych testów ................................30
3.1. Założenia i opis doświadczeń ........................................................ 30
3.2. Otrzymane wyniki ......................................................................... 32
3.2.1. Pierwszy test ................................................................................................ 32
3.2.2. Drugi test ..................................................................................................... 36
3.2.3. Trzeci test .................................................................................................... 40
3.2.4. Czwarty test ................................................................................................ 43
4. Wnioski oraz propozycje dalszego rozwinięcia projektu..45
5. Bibliografia ............................................................................47
9
1. Teoria
1.1. Identyfikacja a weryfikacja
Kluczową różnicą między weryfikacją a identyfikacją (rozpoznawaniem) mówcy jest
to, że w przypadku weryfikacji jako wynik otrzymujemy potwierdzenie czyjejś tożsamości
w celu przyznania danej osobie dostępu do zabezpieczonych danych bądź komputera.
W technologii mowy systemy identyfikacji służą do stwierdzenia, która z osób
znajdujących się w bazie mówców mówi w danym momencie bądź na nagraniu. Takie
systemy obecnie znajdują swoje zastosowanie w przypadku konferencji, na przykład
w celu sporządzenia szczegółowego protokołu obrad. Podczas projektowania takich
systemów dąży się do tego, żeby nie były one wrażliwe na treść wypowiedzi. W ten
sposób można uzyskać wynik rozpoznania bez współpracy z daną osobą.[8]
1.2. Sposoby identyfikacji mówców w systemach rozpoznawania
mowy
Sygnał mowy cechuje się dużą redundantnością - jest nośnikiem nadmiaru informacji.
Odpowiednio dobrany zestaw parametrów oraz danych wejściowych warunkuje dobrą
identyfikację.
W tym rozdziale skupiono się na metodzie wykorzystywanej w jednej z gałęzi
systemu Surikate. W celu parametryzacji mówcy w Surikate użyto MFCC [2] (ang. Mel-
Frequency Cepstral Coefficients - cepstralne melowe współczynniki częstotliwościowe),
zaś HMM (ang. Hidden Markov Models - ukryte modele Markowa) oraz algorytmu
Viterbiego [12] do poprawnej identyfikacji.
Zanim przejdziemy do opisu etapów odpowiedzialnych za
parametryzację i rozpoznanie mówców, należy wspomnieć o skali melowej. Jednostką
częstotliwości tej skali jest mel. Zależność między mel a Hz ma charakter nieliniowy i jest
określona wzorem [9]:
10
(1.1)
gdzie:
- Częstotliwość w skali melowej [mel],
- Częstotliwość w hercach [Hz].
Skala melowa określa zależność subiektywnie odbieranej wysokości dźwięku do
obiektywnie mierzonej częstotliwości w Hz.
Wykres 1.1 - zależność mel od Hz.
1.2.1. MFCC
MFCC jest metodą do parametryzacji niezbędnej do utworzenia modelu mówcy, która
w tym celu używa banków filtrów. Składa się ona z kilku operacji na sygnale mowy.
Sygnał, który chcemy opisać, jest na wstępie odpowiednio przygotowywany -
następuje jego normalizacja w dziedzinie amplitudy, odszumianie oraz preemfaza
11
(wzmocnienie sygnałów składowych w górnej części pasma przenoszenia w celu
poprawienia odstępu sygnału od szumu), która ma wzór:
,
(1.2)
gdzie:
- próbka sygnału odpowiednio przed i po preemfazie,
- współczynnik przyjmujący zwykle wartość 0,96.
Kolejnym etapem jest ramkowanie, czyli dzielenie sygnału na części o tych samych
czasach trwania. Tak przygotowane fragmenty sygnału są okienkowane, czyli mnożone
przez okno transformacji lokalnej. W tym celu można zastosować na przykład okno
Hamminga albo Parzena (rys. 1).
Rys. 1. Okno Hamminga (po lewej) oraz Parzena (po prawej) w dziedzinie czasu (źródło - [14]).
12
Następnie dzięki FFT (ang. Fast Fourier Transform - szybka transformata Fouriera)
otrzymuje się widmo amplitudowe dla każdej z ramek. Kolejnym krokiem jest
przepuszczenie otrzymanych widm przez banki filtrów melowych, których ilość oraz
kształt są zależne od implementacji algorytmu. HTK, o którym będzie mowa w kolejnym
rozdziale, używa w tym celu filtrów trójkątnych. Charakterystyki częstotliwościowe
filtrów w bankach nachodzą na siebie w taki sposób, że kolejny filtr kończy się
w częstotliwości środkowej swojego następcy. Zostało to pokazane na rys.2.
Rys.2 - Bank 20 filtrów melowych trójkątnych [9 ]
Na wyjściu filtrów otrzymuje się logarytm energii dla każdego pasma liczony według
wzoru
(1.3)
gdzie:
m - numer filtra,
- widmo ramki.
13
który następnie jest poddany dyskretnej transformacie kosinusowej (DCT - ang. Discrete
Cosinus Transform). Poniżej podano wzór pozwalający na obliczenie końcowych wartości
współczynników MFCC:
(1.4)
gdzie:
M - liczba użytych filtrów,
i - numer współczynnika
Użycie skali melowej jest uzasadnione - obserwacja spektrogramów w skali
melowej pozwala na łatwe odróżnienie fragmentów dźwięcznych i bezdźwięcznych dla
sygnału.
1.2.2. HMM
Ukryte modele Markowa bardzo często są wykorzystywane w rozpoznawaniu mowy.
Są to statystyczne metody rozpoznawania wzorców, które można uznać za metody
sztucznej inteligencji. W tym podrozdziale zostaną przedstawione jedynie podstawowe
informacje na ich temat, które będą niezbędne do zrozumienia działania Surikate.
1.2.2.1. Dyskretny proces Markowa
Pojęcia charakteryzujące proces Markowa to stan procesu oraz przejście między
stanami. Każde kolejne przejście dokonuje się w regularnych, dyskretnych odstępach
czasu i jest opisane przez prawdopodobieństwo jego zajścia. Dla modeli pierwszego rzędu,
prawdopodobieństwo to jest ograniczone tylko do poprzedniego stanu.
Załóżmy, że nasz model ma N stanów (S1, S2, ... ,SN). Chwile, które są związane ze
zmianami stanów to t = 1,2,3,..,T, a stan, w którym w danej chwili t znajduje się model
jako . Przy założeniu, że prawdopodobieństwa przejść między kolejnymi stanami są
14
niezależne od czasu, szansę określającą przejście między każdą parą stanów (i oraz j)
możemy określić jako:
.
(1.5)
Analogicznie, początkowe prawdopodobieństwo znalezienia się w chwili t = 1
w jednym ze stanów i można opisać jako:
(1.6)
Podobnie zdefiniowane jest prawdopodobieństwo stanu końcowego
Prostym przykładem procesu Markowa jest losowanie ze zwracaniem koloru
czerwonego lub czarnego z liczącej 24 karty talii. Ilość stanów dla tego procesu jest równa
2 i odpowiada dwóm możliwościom wylosowania koloru karty - czarnego (w przypadku
wylosowania pika bądź trefla) lub czerwonego (w przypadku kier bądź karo). Dla tego
przypadku prawdopodobieństwo przejścia między tymi stanami wyniesie 0.5 dla każdego
z nich. Tą samą wartość przyjmie prawdopodobieństwo znalezienia się w danej chwili
w jednym ze stanów.
15
Rys.3 - Diagram procesu Markowa dla przykładu losowania kart.
1.2.2.2. Ukryty model Markowa
Opisany powyżej model jest zbyt prosty, żeby za jego pomocą móc modelować
bardziej skomplikowany proces losowy. W przypadku z losowaniem kart kolejne
obserwacje to kolejne stany procesu [5]. W tym rozdziale zostanie poruszony temat
ukrytych modeli Markowa, w których obserwacje wynikają z probablistycznych funkcji
stanu. Są to modele, w których podstawowy proces nie jest możliwy do obserwacji, ale
może być obserwowany przez inny proces poprzez sekwencję obserwacji.
Sztandarowym i najczęściej stosowanym przykładem obrazującym działanie prostego
HMM jest losowanie kul z urn. Wyobraźmy sobie sytuację, gdy oglądamy jakiś teleturniej,
w którym maszyna ustawiona za sceną w sposób losowy wybiera jedną z N urn, z których
każda zamiera M kul w różnych kolorach, losuje jedną z tych kul, pokazuje widzom
i zwraca. Przy założeniu, że w każdej z urn mogą być kule o tych samych kolorach, wynik
losowania nie daje nam żadnej jasnej informacji na temat pochodzenia tej kuli - proces
losowania jest ukryty.
Teraz nazwijmy fachowo elementy tego procesu. Kolor kuli to obserwacja o(t)
w danym momencie. Zaś urny to poszczególne stany, dla których jest zdefiniowane
prawdopodobieństwo wylosowania kuli w danym kolorze. Oto elementy opisujące ukryty
model Markowa [8]:
16
N - liczba stanów modelu, dla każdej chwili t oznaczna jako ,
M - liczba obserwacji odpowiadających każdemu ze stanów ( O = { }),
A - niesymetryczna macierz prawdopodobieństwa przejść między stanami
,
B - macierz prawdopodobieństw obserwacji
gdzie to prawdopodobieństwo obserwacji wygenerowane przez stan .
Prawdopodobieństwo to jest zależne wyłącznie od aktualnego stanu , zatem:
.
Podobnie jak w przykładzie z urnami i kulami, w przypadku Surikate ciąg kolejnych
stanów dla kolejnych ramek sygnału jest dla nas ukryty. Ukryte modele Markowa
pozwalają nam na ich opisanie i sklasyfikowanie za pomocą algorytmu Bauma-Welcha
[1]. Baza takich modeli umożliwia nam identyfikację nowej sekwencji, czyli rozpoznanie.
Funkcją odpowiedzialną za rozpoznanie w przypadku HTK dla HMM jest algorytm
Viterbiego [6].
1.2.3. Algorytm Viterbiego
Algorytm Viterbiego należy do grupy metod niedeterministycznych tj. takich
metod, za pomocą których wyznacza się prawdopodobieństwo reprezentujące
dopasowanie sygnału do zastosowanych modeli probablistycznych. Służy do odnalezienia
w grafie najlepszej ścieżki, czyli najbardziej prawdopodobnej sekwencji dla procesu
Markowa o skończonej ilości stanów [12]. Aby uniknąć złożoności, ma on charakter
rekursywny, czyli powtarzający się, odnoszący się do siebie.
Zakłada, że kolejne punkty ścieżki to kolejne stany (Si), zaś linie łączące te punkty
to przejścia między kolejnymi stanami. Do każdego pośredniego i końcowego punktu jest
jedna najbardziej prawdopodobna ścieżka. Każda z tych ścieżek jest opisana pewnym
prawdopodobieństwem δ. δ(S,t) jest maksymalnym prawdopodobieństwem a posteriori
dla wszystkich sekwencji kończących się na stanie S w czasie t, zaś najlepszy fragment
17
ścieżki to sekwencja charakteryzująca się maksymalnym prawdopodobieństwem jej
wystąpienia. Każdy stan w danym czasie jest opisany tymi dwiema wartościami.
Załóżmy, że chcemy znaleźć najlepszą ścieżkę ze stanu S0(t=1, t<T-1) do stanu
Sx(t=T). Jak widać na rys. 4, najbardziej prawdopodobna ścieżka musi przejść przez stan
S1(t=T-1), S2(t=T-1) bądź S3(t=T-1).
Rys. 4 - poszukiwanie najlepszej ścieżki przez algorytm Viterbiego.
Aby znaleźć najlepszą ścieżkę do stanu Sx(t=T), należy przypomnieć sobie
wspomniane wcześniej założenie Markowa dla modeli pierwszego rzędu -
prawdopodobieństwo wystąpienia danego stanu na podstawie sekwencji stanów zależy
tylko od poprzedniego stanu [3]. Zatem najbardziej prawdopodobna ścieżka może zostać
wyliczona ze wzoru:
(1.7)
18
gdzie:
- prawdopodobieństwo δ,
- prawdopodobieństwo wystąpienia sekwencji,
- prawdopodobieństwo obserwacji.
Powyższy przykład zakłada, że stan S jest stanem końcowym. W przypadku, gdy
chcielibyśmy znaleźć sekwencję dla stanów w czasie T+1, należy obliczyć możliwe
ścieżki dla wszystkich stanów w czasie T posługując się tym algorytmem.
Działanie algorytmu Viterbiego opiera się na kryterium maksymalnej
wiarygodności. Dzięki temu pozwala on na określenie końcowego i optymalnego
rozpoznania poprzez gotowe modele.
1.3. HTK
HTK (Hidden Markov Model Toolkit) to zestaw narzędzi zawierający biblioteki
w języku C oraz inne moduły służące między innymi do automatycznego rozpoznawania
mowy przez budowę i manipulowanie ukrytymi modelami Markowa. Jego zastosowania
nie kończą się jednak na identyfikacji mówców - toolkit jest też z powodzeniem używany
np. do sekwencjonowania kodu DNA. Pierwsza wersja HTK została stworzona na
uniwersytecie Cambridge (CUED - Cambridge University Engineering Department)
w 1989 roku przez Steve'a Young'a. Już od wielu lat jest on stosowany nie tylko w celach
dydaktycznych, ale też w aplikacjach komercyjnych [13]. Ostatnia aktualizacja miała
miejsce 13 marca 2009 roku (wersja 3.4.1).
19
1.3.1. Surikate - opis działania systemu
Surikate to system zarówno do identyfikacji, jak i weryfikacji mówcy stworzony przez
Zespół Przetwarzania Sygnałów AGH [18] i firmę Techmo. [15] Jest to system
hybrydowy, podzielony na dwie gałęzie osobno identyfikujące mówcę. Jedna z gałęzi
realizuje rozpoznanie poprzez toolkit HTK, natomiast druga przy użyciu dyskretnej
transformaty falkowej (ang. Discrete Wavelet Transform - DWT) oraz FFT. Wynik
z każdej gałęzi jest następnie mnożony przez określoną wagę, ponieważ żadna ze
wcześniej wspomnianych metod nie ma stuprocentowej skuteczności. W finalnej wersji
systemu założono, że najlepsze efekty rozpoznania były uzyskane przy równej wadze dla
obu rozwiązań [7]. W tym rozdziale została opisana gałąź, w której za identyfikację
mówcy są odpowiedzialne metody i narzędzia wchodzące w skład toolkitu HTK.
Jeszcze przed rozpoczęciem procesu identyfikacji plik dźwiękowy jest poddawany
normalizacji amplitudowej. Jest to zabieg polegający na dostosowaniu ujednoliconej
głośności dla całego nagrania. W ten sposób można pozbyć się nadmiernie brzmiących
fragmentów wypowiedzi.
Kolejnym krokiem jest ekstrakcja cech potrzebnych do jak najlepszego
sklasyfikowania sygnału mowy. Do opisu sygnału mowy użyto 23 MFCC oraz 26 banków
filtrów z uwagi na najlepszą efektywność tego rozwiązania potwierdzoną w testach [7].
Ramki sygnałów rozpoznane jako te zawierające dźwięk są opisane za pomocą 8 stanów,
zaś ramki ciszy przy pomocy 3.
Następnie, za pomocą ukrytych modeli Markowa i algorytmu Viterbiego otrzymane
zestawy parametrów są porównywane z parametrami mówców zawartych w bazie i na tej
podstawie otrzymuje się wynik rozpoznania.
Na kolejnej stronie zamieszczono rysunek poglądowy przedstawiający działanie tej
gałęzi.
20
Rys.5 - uproszczony schemat blokowy działania jednej z gałęzi Surikate.
21
1.4. Metody statystyczne służące do oceny skuteczności algorytmu
Jest wiele metod, za pomocą których możemy ocenić skuteczność danego algorytmu
bądź klasyfikatora. Służą one do wyboru optymalnego klasyfikatora, który
w najtrafniejszy sposób określi przynależność danych wejściowych do określonych klas.
Nie znamy wprost prawdopodobieństwa, że dany klasyfikator spełnia swoje zadanie, ale
skuteczność jego działania można wyznaczyć za pomocą eksperymentu.[4]
Jedną z podstawowych metod jest prosta walidacja - próby, których znamy
przynależność, są przydzielane do klas znajdujących się w bazie i procent błędnych
przyporządkowań jest skutecznością danego klasyfikatora. Ważnym jest użycie zbioru
walidycyjnego niebędącego częścią zbioru treningowego, na którym zostały wytrenowane
klasy. Przez to unikniemy zawyżonej oceny prawidłowości.
Dla wybranego klasyfikatora warto jeszcze raz, w sposób ostateczny ocenić jego
skuteczność, przeprowadzając kolejną klasyfikację na tzw. próbie testowej. Jest ona
niezależna zarówno od próby uczącej, jak i walidacyjnej. Umożliwia ona
zminimalizowanie współczynnika losowości, jaki mógł zaważyć na wynikach dla próby
walidacyjnej. Przeważnie próba ucząca zawiera 50%, zaś walidacyjna i testowa po 25%
całkowitej zawartości zbioru obserwacji, jednak nie ma złotego środka na uniwersalną
proporcję.
Przy braku dużej ilości danych często jest się zmuszonym do rezygnacji z próby
walidacyjnej. Może też nastąpić skrajna sytuacja zastosowania tylko i wyłącznie próby
uczącej. Wtedy musimy wielokrotnie używać tego samego zbioru uczącego. Istnieje
szereg metod stosowanych w tym celu dających dobre rezultaty. Do sztandarowych
zaliczamy kroswalidację.
K-krotna kroswalidacja (określana także jako test bądź sprawdzian krzyżowy) polega
na podziale danych na K równych części a następnie tworzenie z K-1 części, tworzących
zbiór uczący, klasyfikatora. Część danych nie należąca do serii treningowej jest zbiorem
testowym (treningowym) a suma błędnych rezultatów, jakie osiągnie klasyfikator dla
K powtórzeń algorytmu podzielona przez liczność oryginalnej próby uczącej jest równa
ocenie skuteczności klasyfikatora. Podział na zbiory uczące i testowe przedstawia rys. 6.
Rys.6 - podział zbioru danych na zbiór uczący (kolor zielony) i serię testową (kolor czerwony) dla testu
krzyżowego.
22
Przy dużej ilości klasyfikatorów i dużym współczynniku K zwiększa się ilość obliczeń
- przy porównywaniu na przykład pięciu różnych metod klasyfikacji i K równym 10
otrzymujemy 50 różnych klasyfikatorów, po 10 dla każdej z metod.
W badanej gałęzi systemu klasyfikatorem jest algorytm Viterbiego opisany
w rozdziale 1.2.3. Jednak jego skuteczność zależy w dużej mierze od danych, jakie budują
model mówcy. W dalszej części pracy zostaną przedstawione testy opierające się na
sprawdzianie krzyżowym, umożliwiające zbadanie poprawnej automatycznej anotacji
nagrań przez toolkit HTK.
1.5. Budowa pliku w formacie .wav
System rozpoznawania mówców Surikate przetwarza pliki dźwiękowe w formacie
.wav. Ma on jednak pewne ograniczenia związane z trenowaniem nowych modeli
mówców - będzie to wytłumaczone w kolejnym rozdziale.
Operacje na plikach dźwiękowych .wav są niezbędne do działania systemu i jego
ewentualnych testów. W tym celu potrzebna jest znajomość budowy plików w tym
formacie, aby poprawnie je otwierać oraz edytować ich zawartość.
Plik .wav składa się z trzech części - nagłówka 'RIFF' zawierającego opis otwieranego
pliku oraz dwóch 'podczęści' - jednej o nazwie 'fmt' określającą format informacji
zawartych w drugiej 'podczęści' o nazwie 'data', w której podane są rozmiary, jakie
zajmują kluczowe informacje jak i najbardziej interesujące wartości, czyli dane pliku
dźwiękowego [16].
Tabela znajdująca się na kolejnej stronie przedstawia pola charakterystyczne dla pliku
w formacie .wav.
23
Tab.1.1 - Budowa pliku .wav.
* PCM (ang. Pulse Code Modulation) - jedna z najpopularniejszych metod, za pomocą których sygnał
analogowy jest reprezentowany w systemach cyfrowych.
**
***
Nazwa pola Rozmiar pola w bajtach
ChunkID 4
ChunkSize 4
Format 4
Subchunk1ID 4
Subchunk1Size 4
AudioFormat 2
NumChannels 2
SampleRate 4
ByteRate 4
BlockAlign 2
BitsPerSample 2
2 ExtraParamSize
X ExtraParams
Subchunk2ID 4
Subchunk2Size 4
Data
Zawiera litery tworzące słowo "data"
Rozmiar pola Data w bajtach
Faktyczne dane pliku dźwiękowegoSubchunk2SizeData
Wartość częstotliwości próbkowania
Wartość obliczana ze wzoru**
Wartość obliczana ze wzoru***
Ilość bitów na próbkę
fmt
Jeżeli używamy PCM*, pola nie istnieją
informacja
Zawiera litery tworzące słowo "RIFF" w kodzie ASCII
Rozmiar całego pliku w bajtach licząc od tego następnego pola
Zawiera litery tworzące słowo "WAVE"
fmt
Zawiera litery tworzące słowo "fmt "
Rozmiar reszty podczęści w bajtach licząc od następnego pola
Wartość pola równa 1 dla PCM*. Inna liczba oznacza inną formę kompresji
Ilość kanałów (1 dla Mono, 2 dla Stereo)
RIFF
24
2. Klasa CrossVal - opis zaimplementowanych metod
Celem niniejszej pracy jest implementacja klasy, która realizuje test krzyżowy danych
przesyłanych do Surikate, a dokładniej do gałęzi odpowiedzialnej za rozpoznawanie przy
użyciu toolkitu HTK. Poniżej zamieszczono spis ważniejszych metod użytych w tej klasie.
2.1. RecoutRemake
Dane wejściowe: plik recout.mlf z HTK,
Dane wyjściowe: przerobiony plik recout.mlf zapisany pod nazwą zdefiniowaną przez
Użytkownika.
Metoda o nazwie RecoutRemake ma za zadanie odpowiednie sparsowanie
pierwotnego pliku rozpoznania z HTK. Toolkit analizuje nagranie na podstawie ram
czasowych o krótkich długościach trwania (wartości na rys. 7 podane w jednostce 100ns).
Celem tej metody jest usunięcie powtarzających się pod rząd rozpoznań jednego mówcy
i zastąpienie ich jednym wersem. Ponadto parser usuwa ujemne liczby znajdujące się na
końcu każdego wersu będące logarytmem prawdopodobieństwa rozpoznania, które na tą
chwilę stopnia rozwoju programu nie są brane pod uwagę.
25
Rys.7 - porównanie rozmiaru i budowy plików tekstowych z rozpoznaniem przed użyciem (po lewej) i po
użyciu (po prawej) funkcji RecoutRemake.
2.2. MergeWaves
Dane wejściowe: Ścieżki do dwóch plików dźwiękowych w formacie .wav,
Dane wyjściowe: Plik dźwiękowy w formacie .wav będący scaleniem plików
podanych jako dane wejściowe.
Metoda o nazwie MergeWaves, jak sama nazwa wskazuje, jest odpowiedzialna za
scalenie dwóch plików .wav. Napisanie tej funkcji było niezbędne ze względu na fakt, iż
przy ewentualnym tworzeniu nowego modelu mówcy na podstawie kilku nagrań za
każdym razem następuje nadpisanie już istniejącego modelu. W wyniku tego mówca jest
reprezentowany plikiem, który jako ostatni wysłano do treningu.
Przy pomocy tej metody program sam scala podane mu pliki, przez co trening może
odbyć się na pliku będącym reprezentacją dwóch lub więcej osobnych plików. Znajduje
ona zastosowanie przy implementacji testu krzyżowego, o którym szerzej będzie
powiedziane w podpunkcie 3.5.
26
2.3. TrainModel
Dane wejściowe: plik .wav reprezentujący mówcę, dla którego chcemy wytrenować
model,
Dane wyjściowe: Wytrenowany model mówcy.
Metoda TrainModel korzysta z funkcji MergeWaves opisanej w poprzednim
podpunkcie w wyniku, gdy mówcę reprezentuje więcej niż jeden plik dźwiękowy. Za jej
pośrednictwem wskazany przez Użytkownika plik jest wysyłany do narzędzi zawartych
w toolkicie HTK w celu jego parametryzacji oraz wyuczenia klasyfikatora. Otrzymany
w ten sposób model jest dodawany do bazy mówców.
2.4. TestModel
Dane wejściowe: plik .wav przeznaczony do rozpoznania przez system, nazwa
spodziewanego mówcy, interwał w sekundach, po jakim czasie
trwania program powinien zwrócić błąd,
Dane wyjściowe: Plik tekstowy z wynikiem zawierający rezultaty rozpoznania.
Metoda TestModel nie tylko testuje plik .wav i zwraca rezultaty na podstawie bazy
mówców zawartej w systemie, ale też pozwala zadecydować Użykownikowi, jaki jest
dopuszczalny maksymalny interwał złego rozpoznania przez system. Ten zabieg ma na
celu założenie granicy błędnego ciągłego rozpoznania - program będzie uznawał
identyfikację za nieprawidłową tylko w przypadku przekroczenia tej wartości.
Wygenerowany plik tekstowy zawiera nazwę pliku poddanego rozpoznaniu,
spodziewanego rezultatu, wartość interwału określonego przez Użytkownika, listę
błędnych rozpoznań wraz z przedziałami czasu, w których miały one miejsce oraz błąd
rozpoznania pliku podany w procentach i obliczony na podstawie wzoru:
27
(2.1)
gdzie:
- niespójność pliku x wynikająca z rozpoznania dla wartości interwału i,
i - rozmiar interwału [s],
- k-ta rama czasowa zawierająca rozpoznanie różne od spodziewanego
[s],
N - ilość ram czasowych zawierających rozpoznanie różne od spodziewanego,
- całkowity czas trwania analizowanego pliku dźwiękowego [s].
2.5. CrossWavfile
Dane wejściowe: Ścieżka do pliku w formacie .wav poddawanego analizie, określenie
ilości części, na które będzie dzielony plik, wartość interwału, przy
którym program bedzie zwracał błąd rozpoznania,
Dane wyjściowe: Plik tekstowy zawierający procent błędnego rozpoznania dla
każdego z klasyfikatorów, uśrednione błędne rozpoznanie oraz
wartość odchylenia standardowego.
Metoda CrossWavfile używa wszystkich funkcji opisanych wcześniej. Dzięki niej
możemy sprawdzić, jak metoda klasyfikująca radzi sobie z identyfikacją. W tym celu
przed uruchomieniem tej metody niezbędnym jest wytrenowanie przynajmniej 2-3 modeli
'obcych' mówców na podstawie jednorodnych nagrań w celu uniknięcia zawyżenia
wartości rozpoznania.
Przed przystąpieniem do K - krotnej kroswalidacji następuje podzielenie badanego
pliku .wav na 5 bądź 10 części (czyli założenie, że rozmiar zbiorów uczącego
i treningowego będzie wynosił odpowiednio 80/20 lub 90/10 procent całkowitego
rozmiaru pliku dźwiękowego poddanego testowi). Następnie program zaczyna realizować
sprawdzian krzyżowy - w pętli wykonującej się tyle razy, na ile podzielono plik .wav,
jedna z pięciu/dziesięciu części reprezentuje zbiór testowy, natomiast pozostałe są
ponownie łączone w jeden i tworzą zbiór uczący. Po wykonaniu tych operacji następuje
28
kolejno trenowanie modelu na zbiorze uczącym, identyfikacja mówców ze zbioru
treningowego i koniec jednego przebiegu pętli.
W pliku tekstowym o lokalizacji i nazwie określonej przez Użytkownika są zawarte
zbiorcze wyniki dla każdej z części poddanej analizie. Istnieje też możliwość zapisania
całego logu do pliku tekstowego i podejrzenie działania całego systemu. Skrócony sposób
działania zaprezentowano na rys. 8.
29
Rys. 8 - Schemat blokowy metody CrossWavfile.
30
3. Wyniki dla przeprowadzonych testów
3.1. Założenia i opis doświadczeń
W tym podrozdziale prześledzono kolejne etapy działania funkcji CrossWavfile.
Opisano także przyjęte założenia dla przeprowadzanych testów.
W testach użyto nagrań z następujących źródeł:
- Lektor Jerzy Wolf - dwa jednorodne nagrania (pięcio- i dwuminutowe),
- Nagrania pobrane ze strony [17] - jednorodne nagrania z obrad Sejmu o różnych
długościach, niekiedy poprzecinane wtrąceniami bądź reakcjami posłów,
- Nagranie pobrane ze strony [11] - nagranie zawierające dźwięki odkurzacza.
Ściągnięte pliki z Internetu musiały zostać odpowiednio sformatowane. W tym celu
posłużono się darmowym programem Audacity [10], słuzącym także do edycji niektórych
nagrań, to jest przycinaniu, dodawaniu kolejnych mówców do nagrania. Poniżej format,
w którym dane zostały dostarczone do testów:
Częstotliwość próbkowania - 16 kHz,
Liczba kanałów - 1 (Mono),
Bitrate - 256 kbps,
Kodek - PCM,
Normalizacja w dziedzinie amplitudowej.
Model o nazwie DstSpk jest tworzony każdorazowo przez sprawdzian krzyżowy
z danych o objętości 80 bądź 90 procent całego nagrania (w zależności od wyboru
krotności testu) poddanego testowi.
Modele o nazwach SPKA i SPKB są modelami mówców wytrenowanymi na dwóch
różnych jednorodnych nagraniach z przemówień sejmowych. Zostały wytrenowane raz i są
używane we wszystkich testach.
Model SPKC to model mówcy pojawiający się od drugiego testu. Powstał on
z pięciominutowego nagrania autorstwa Jerzego Wolfa.
31
Pierwszy test będzie polegał na poddaniu pięciominutowego nagrania autorstwa
Jerzego Wolfa pięciokrotnemu testowi krzyżowemu. Zostanie obliczony współczynnik
błędu rozpoznania dla danego nagrania. Następnie z pliku wynikowego zostanie
odczytane, który z wytworzonych modeli mówców powstałych w wyniki sprawdzianu
krzyżowego charakteryzował się najlepszą skutecznością identyfikacji. Dla każdego
z osobna z wytrenowanych w ten sposób modeli mówców zostanie przeprowadzona
operacja identyfikacji na innym dwuminutowym, jednolitym nagraniu lektora i otrzymane
wyniki zostaną porównane.
Drugi test to przeprowadzenie pięcio- oraz dziesięciokrotnego testu krzyżowego na
siedmiominutowym pliku .wav będącym nagraniem losowego przemówienia jednego
z posłów. Doświadczenie ma na celu porównanie otrzymanych wyników z obu
sprawdzianów i ich skonfrontowanie ze sobą.
Założeniem trzeciego testu jest sprawdzenie, jak program będzie się zachowywał przy
nagraniu, na którym występuje trzech różnych mówców. W tym celu plik .wav został
poddany pięciokrotnemu testowi krzyżowemu. Baza mówców nie zawierała żadnego
z mówców występujących na nagraniu. Oczekiwanym wynikiem jest bardzo niska
rozpoznawalność dla klasyfikatorów, w których część treningowa jest pozbawiona
większości wypowiedzi mówcy (Rys.9 - części 1, 3 oraz 5).
Czwarty test to symulacja następującej sytuacji: zaraz po przemówieniu (w tym celu
użyto nagrania z testu 2) następuje 'sprzątanie' sali obrad - na koniec nagrania został
dodany szum odkurzacza. Ma on na tyle długi czas trwania, że wchodzi całkowicie
w zawartość jednej z pięciu części, na jakie jest dzielony plik przy teście krzyżowym
(Rys. 10). Test ma na celu sprawdzenie, jaki będzie wynik identyfikacji szczególnie dla tej
wspomnianej części nagrania i jakie będą konsekwencje takiego podziału pliku.
32
3.2. Otrzymane wyniki
3.2.1. Pierwszy test
Poniżej zaprezentowano w formie wykresów wyniki testu krzyżowego dla nagrania
autorstwa J.Wolfa dla 5 klasyfikatorów. W bazie znajdowały się dodatkowo 3 modele
mówców - dwa modele przypadkowych mówców oraz model dźwięku wydawanego przez
odkurzacz.
Wykres 2.1 - Wyniki rozpoznania dla jednolitego pliku w pięciokrotnym teście krzyżowym dla każdego
z utworzonych klasyfikatorów dla testu pierwszego.
Tab. 2.1 - Wyniki rozpoznania dla jednolitego pliku w pięciokrotnym teście krzyżowym dla każdego
z utworzonych klasyfikatorów dla testu pierwszego.
DstSpk SpkA SpkB
K1 99,55 0,45 0
K2 98,11 1,89 0
K3 99,12 0,88 0
K4 98,74 1,26 0
K5 100 0 0
procent rozpoznania [%]
Klasyfikator
33
Wykres 2.2 - Wynik całkowitego błędnego rozpoznania dla każdego z użytych klasyfikatorów dla testu
pierwszego.
Tab. 2.2 - Wynik całkowitego błędnego rozpoznania dla każdego z użytych klasyfikatorów dla testu
pierwszego.
Suma błędnego
procentu rozpoznania [%]
K1 0,45
K2 1,89
K3 0,88
K4 1,26
K5 0
Klasyfikator
34
Średnia wartość błędnego rozpoznania dla klasyfikatorów dla testu 1:
Odchylenie standardowe błędnego rozpoznania dla klasyfikatorów dla testu 1:
Następnie każdy z pięciu klasyfikatorów otrzymanych z testu krzyżowego (K1..K5),
jak i model otrzymany na podstawie całego pięciominutowego nagrania (K) został
poddany testowi na nagraniu dwuminutowym.
Wykres 2.3. - Procentowe rozpoznanie dla pliku testowego dla testu pierwszego.
35
Wykres 2.4 - Procent całkowitego błędnego rozpoznania dla pliku testowego dla testu pierwszego.
Tab.2.3. - Wyniki dla każdego z klasyfikatorów dla identyfikacji nagrania testowego dla testu
pierwszego.
Klasyfikator Nazwa modeluProcent rozpoznania
dla pliku testowego [%]
Procent całkowitego
błędnego rozpoznania
[%]
DstSpk 96,9
SpkA 2,3
SpkB 0,8
DstSpk 96
SpkA 2,3
SpkB 1,7
DstSpk 98
SpkA 0,4
SpkB 1,6
DstSpk 96
SpkA 2,3
SpkB 1,7
DstSpk 94,8
SpkA 3,7
SpkB 1,5
DstSpk 95,6
SpkA 2,3
SpkB 2,1
4,4
5,2
4
3,1
4
2
K1
K2
K3
K4
K5
K
36
3.2.2. Drugi test
Poniżej zamieszczono wyniki w postaci wykresów oraz tabel otrzymane dla drugiego
testu.
Wykres 2.4 - Wyniki rozpoznania dla niejednorodnego pliku w pięciokrotnym teście krzyżowym dla
każdego z utworzonych klasyfikatorów dla testu drugiego.
Tab.2.4 - Wyniki rozpoznania dla niejednorodnego pliku w pięciokrotnym teście krzyżowym dla
każdego z utworzonych klasyfikatorów dla testu drugiego.
DstSpk SpkA SpkB SPkC
K1 67,9 10,5 21,5 0,1
K2 93,2 2,3 4,5 0
K3 97,84 0 2,16 0
K4 86,3 0,7 13 0
K5 88,5 2,9 8,6 0
Klasyfikator
procent rozpoznania [%]
37
Wykres 2.5 - Suma błędnego rozpoznania niejednorodnego pliku w pięciokrotnym teście krzyżowym
dla każdego z utworzonych klasyfikatorów dla testu drugiego.
Tab. 2.5 - Suma błędnego rozpoznania niejednorodnego pliku w pięciokrotnym teście krzyżowym dla
każdego z utworzonych klasyfikatorów dla testu drugiego.
Suma błędnego
procentu rozpoznania [%]
K1 32,1
K2 6,8
K3 2,16
K4 13,7
K5 11,5
Klasyfikator
38
Wykres 2.6 - Wyniki rozpoznania dla niejednorodnego pliku w dziesięciokrotnym teście krzyżowym
dla każdego z utworzonych klasyfikatorów dla testu drugiego.
Tab. 2.6 - Wyniki rozpoznania dla niejednorodnego pliku w dziesięciokrotnym teście krzyżowym dla
każdego z utworzonych klasyfikatorów dla testu drugiego.
DstSpk SpkA SpkB SPkC
K1 61,7 12,4 25,6 0,3
K2 79,9 2,5 17,6 0
K3 81,8 9,1 9,1 0
K4 100 0 0 0
K5 85,1 3,4 11,5 0
K6 98,8 0 1,2 0
K7 98,7 0 1,3 0
K8 74,5 0 25,5 0
K9 93,5 5 1,5 0
K10 95,4 4,6 0 0
Klasyfikator
procent rozpoznania [%]
39
Wykres 2.7 - Suma błędnego rozpoznania niejednorodnego pliku w dziesięciokrotnym teście
krzyżowym dla każdego z utworzonych klasyfikatorów dla testu drugiego.
Tab. 2.7 - Suma błędnego rozpoznania niejednorodnego pliku w dziesięciokrotnym teście krzyżowym
dla każdego z utworzonych klasyfikatorów dla testu drugiego.
Średnia wartość błędnego rozpoznania dla klasyfikatorów w przypadku
5-krotnego sprawdzianu krzyżowego dla testu 2:
Odchylenie standardowe błędnego rozpoznania dla klasyfikatorów w przypadku
5-krotnego sprawdzianu krzyżowego dla testu 2:
suma błędnego
procentu rozpoznania [%]
K1 38,3
K2 20,1
K3 18,2
K4 0
K5 14,9
K6 1,2
K7 1,3
K8 25,5
K9 6,5
K10 4,6
Klasyfikator
40
Średnia wartość błędnego rozpoznania dla klasyfikatorów w przypadku
10-krotnego sprawdzianu krzyżowego dla testu 2:
Odchylenie standardowe błędnego rozpoznania dla klasyfikatorów w przypadku
10-krotnego sprawdzianu krzyżowego dla testu 2:
3.2.3. Trzeci test
W poniższym podrodziale zaprezentowano podział pliku .wav na części wraz
z zaznaczeniem występowania mówców w nagraniu, jak i otrzymane wyniki dla
pięciokrotnego testu krzyżowego dla testu 3.
Rys.9 - Udział każdego z mówców w nagraniu (Spk1, Spk2, Spk3) oraz jego podział na części z
zaznaczeniem kolejnych etapów testu krzyżowego (K1..K5 - części treningowe, Test1..Test5 - części
testowe) dla testu trzeciego.
K5
Test1
Test2
Test3
Test4
Test5
K1
K2 K2
K3 K3
K4 K4
Part1 Part2 Part3 Part4 Part5
Plik .wav
Spk1 Spk2 Spk3
41
Wykres 2.8 - Wyniki rozpoznania niejednorodnego pliku w pięciokrotnym teście krzyżowym dla
każdego z utworzonych klasyfikatorów dla testu trzeciego.
Tab. 2.8 - Wyniki rozpoznania niejednorodnego pliku w pięciokrotnym teście krzyżowym dla każdego
z utworzonych klasyfikatorów dla testu trzeciego.
DstSpk SpkA SpkB SPkC
K1 56,78 31,92 8,64 2,66
K2 74 8,3 15,8 1,9
K3 41,3 27 18,5 13,2
K4 75,2 5,1 19,2 0,5
K5 51,2 2 10,5 36,3
Klasyfikator
procent rozpoznania [%]
42
Wykres 2.9 - Suma błędnego rozpoznania niejednorodnego pliku w pięciokrotnym teście krzyżowym
dla każdego z utworzonych klasyfikatorów dla testu trzeciego.
Tab. 2.9 - Suma błędnego rozpoznania niejednorodnego pliku w pięciokrotnym teście krzyżowym dla
każdego z utworzonych klasyfikatorów dla testu trzeciego.
Średnia wartość błędnego rozpoznania dla klasyfikatorów w przypadku
5-krotnego sprawdzianu krzyżowego dla testu 3:
Odchylenie standardowe błędnego dla klasyfikatorów w przypadku
5-krotnego sprawdzianu krzyżowego dla testu 3:
Suma błędnego
procentu
rozpoznania [%]
K1 43,22
K2 26
K3 58,7
K4 24,8
K5 48,8
Klasyfikator
43
3.2.4. Czwarty test
W poniższym podrodziale zaprezentowano podział pliku .wav na części wraz
z zaznaczeniem występowania mówcy oraz dźwięków odkurzacza w nagraniu, jak
i otrzymane wyniki dla pięciokrotnego testu krzyżowego.
Rys.10 - Udział mówcy (Spk1) oraz odgłosów odkurzacza (Odkurzacz) w nagraniu oraz jego podział na
części (Part1..Part5) z zaznaczeniem kolejnych etapów testu krzyżowego dla testu czwartego (części
treningowe - K1..K5, części testowe - Test1..Test5).
Wykres 2.10 - Wyniki rozpoznania niejednorodnego pliku w pięciokrotnym teście krzyżowym dla
każdego z utworzonych klasyfikatorów dla testu czwartego.
Test5
K1
K2
K3 K3
K4
K5
Test4 K4
Test3
K2 Test2
Plik .wav
Spk1 Odkurzacz
Part1 Part2 Part3 Part4 Part5
Test1
44
Tab. 2.10 - Wyniki rozpoznania niejednorodnego pliku w pięciokrotnym teście krzyżowym dla każdego
z utworzonych klasyfikatorów dla testu czwartego.
Wykres 2.11 - Wyniki rozpoznania niejednorodnego pliku w pięciokrotnym teście krzyżowym dla
każdego z utworzonych klasyfikatorów dla testu czwartego.
Średnia wartość błędnego rozpoznania dla klasyfikatorów w przypadku
5-krotnego sprawdzianu krzyżowego dla testu 4:
Odchylenie standardowe błędnego rozpoznania dla klasyfikatorów w przypadku
5-krotnego sprawdzianu krzyżowego dla testu 4 z pominięciem K5:
Odchylenie standardowe błędnego rozpoznania dla klasyfikatorów w przypadku
5-krotnego sprawdzianu krzyżowego dla testu 4:
DstSpk SpkA SpkB SPkC
K1 41,7 21 35 2,3
K2 62,3 7,2 27,8 2,7
K3 53,8 6,5 31,7 8
K4 41 6,4 45,2 7,4
K5 0 0,6 99,4 0
Klasyfikator
procent rozpoznania [%]
45
4. Wnioski oraz propozycje dalszego rozwinięcia projektu
Pierwszy test potwierdził, że plik zawierający nagranie lektora zawiera tylko
i wyłącznie jego głos - średni procent błędnych rozpoznań dla powstałych w procesie testu
krzyżowego klasyfikatorów jest bliski zeru. W przypadku przeprowadzenia osobnego testu
identyfikacji zakładając kolejne wersje klasyfikatora otrzymane w czasie testu krzyżowego
jako model mówcy wykazano jednak, że błąd rozpoznania nie jest większy dla
klasyfikatora, który wykazał się największą rozpoznawalnością w trakcie sprawdzianu.
Całkowite błędne rozpoznanie dla klasyfikatora K nauczonego na podstawie
pięciominutowego nagrania lektora rzędu 4,4% dla dwuminutowego zbioru testowego
uważam za bardzo dobry wynik.
W przypadku drugiego testu wyniki pięcio- oraz dziesięciokrotnego sprawdzianu
krzyżowego są do siebie bardzo zbliżone. Można stwierdzić, że dla siedmiominutowego
nagrania, w którym występuje jeden mówca wystarczy przeprowadzić pięciokrotny test,
który będzie miał podobny rezultat z równoczesnym szybszym czasem uzyskania wyniku-
różnica uzyskana w obu pomiarach w przypadku średnich błędnego rozpoznania dla
klasyfikatorów wynosi niecałe 0,2%. Jednak dzielenie pliku na więcej części daje nam
więcej informacji na temat tego, gdzie mogą być potencjalne zakłócenia.
Trzeci test polegający na zbadaniu nagrania pod kątem jednolitości przyniósł
spodziewane wyniki rozpoznania - fragmenty do testowania, w których występował jeden
mówca charakteryzowały się większym procentem błędnego rozpoznania przez
klasyfikator utworzony z reszty pliku. Widać to dobrze w wynikach zawartych w tabeli
2.9. Jest to spowodowane faktem, iż klasyfikator był za słaby z powodu niewystarczającej
ilości próbek mówcy występującego we fragmencie nagrania przeznaczonego do testu,
czyli uznał tą część testową za obcą. Jest to jednak bardzo zależne od odpowiedniego
podziału pliku - przy podziale na mniejsze części możliwe jest zakwalifikowanie części
testowej jako poprawnej z powodu większej ilości wystąpień mówcy obecnego w nagraniu
treningowym.
Rezultaty otrzymane na podstawie czwartego testu dla jego piątego klasyfikatora
bardzo dobrze reprezentują faktyczną zawartość nagrania - piąta część pliku została
w całości źle rozpoznana. Czwarty konstruktor zawierający fragment szumu w części
testowej charakteryzował się drugim największym procentowym błędnym rozpoznaniem.
46
Wyniki testów mogą się różnić w zależności od ilości mówców w bazie i ich
wytrenowania. Im więcej modeli tym większa różnorodność klasyfikatorów, co może
prowadzić do błędnej identyfikacji. Identyfikacja mówcy przez system HTK ma jedną
bardzo dużą wadę - nie można założyć braku rozpoznania, więc jeżeli modele zawarte
w bazie różnią się w sposób wyraźny od testowanego pliku spowoduje to wzrost
poprawnych klasyfikacji.
Na tą chwilę projekt realizujący test krzyżowy działa poprawnie, jest jednak kilka
rzeczy, które na przyszłość powinny zostać rozwinięte. Do takich można zaliczyć między
innymi metodę konwertującą plik dźwiękowy z popularnego formatu MP3 na plik .wav
gotowy do rozpoznania - z odpowiednim nagłówkiem i formatem. Można także
zaprojektować interfejs graficzny umożliwiający lepszą i łatwiejszą współpracę
z Użytkownikiem.
Duże zastrzeżenia można mieć także do czasu trwania testu krzyżowego - dla
piętnastominutowego nagrania przy pięciokrotnym teście krzyżowym zwrócenie wyników
zajęło programowi ponad 4 godziny. Jest to spowodowane głównie przez długi czas
trwania treningu dla dwunastominutowego nagrania. Na tą chwilę Surikate zapisuje
i analizuje plik .mlf potrzebny do treningu jako plik tekstowy, ale jak podaje [6], jest
możliwość jego zapisu w formie binarnej. Niestety, i to nie pomaga w skróceniu czasu
trwania obliczeń. Należy pomyśleć o optymalizacji systemu do rozpoznawania mówcy.
Kolejnym pomysłem na rozwój projektu jest opcja wizualizacji wyników w postaci
wykresu lub tabeli, które można wyeksportować jako arkusz kalkulacyjny bądź grafikę.
Można także zaimplementować odpowiednią metodę realizującą wczytywanie
rozpoznawanego pliku .wav i narysowanie jego przebiegu w czasie w różnych kolorach
odpowiadających rozpoznaniom.
Wskazane jest także dalsze testowanie i analiza wyników dla innych plików z różnymi
konfiguracjami interwałów, krotności sprawdzianu krzyżowego oraz ilościami mówców
w bazie.
47
5. Bibliografia
Literatura przedmiotu:
[1] Baum L.E., Petrie T., Soules G., Weiss N.: A maximization technique occuring in
the statistical analysis of probablistic functions of markov chains. The Annuals of
Mathematical Statistics, vol.41, No.1, pp. 164-171, 1970.
[2] Davis S.B., Mermelstein P.: Comparison of parametric representations for
monosyllabic word recognition in continuously spoken sentences. IEEE
Transactionson Acoustics, Speech and Signal Processing, vol. ASSP-28, no.4,
pp.357-366, 1980.
[3] Forney G.D.: The Viterbi algortihm. Proceedings IEEE, vol. 61, pp. 268-273, 1973.
[4] Koronacki J., Ćwik J.: Statystyczne systemy uczące się. str. 88-91, Warszawa,
Wydawnictwa naukowo-techniczne Warszawa 2005.
[5] Rabiner L.R.:A Tutorial on Hidden Markov Models and Selected Applications in
Speech Recognition. Proceedings of the IEEE, vol. 77, no.2, pp, 257-261, 1989.
[6] Young S., Evermann G., Gales M., Hain T.,Kershaw D., Liu X., et al.: The
HTK Book (Revised for HTK Version 3.4 December 2006).
UK:Cambridge University Engineering Department.
[7] Ziółko B., Kozłowski W., Ziółko M., Samborski R., Sierra D., Gałka J..:
Hybrid Wavelet-Fourier-HMM Speaker Recognition. Department of Electronics,
AGH University of Science and Technology Kraków, 2011.
[8] Ziółko M., Ziółko B.: Przetwarzanie Mowy. Kraków, Wydawnictwa AGH 2011.
48
Publikacje elektroniczne:
[9] Akustyka Mowy. Podstawy rozpoznawania mowy. Dostępny:
https://sound.eti.pg.gda.pl/student/amowy/AM_07_ASR.pdf
(odwiedzona 14 I 2014r.)
[10] Audacity. Dostępny:
http://audacity.sourceforge.net/?lang=pl (odwiedzona 8 I 2014r.)
[11] Freesound - Vacuum Cleaner. Dostępny:
http://www.freesound.org/people/Huminaatio/sounds/159348/
(odwiedzona 12 I 2014r.)
[12] Hidden Markov Models - Viterbi Algorithm. Dostępny:
http://www.comp.leeds.ac.uk/roger/HiddenMarkovModels/html_dev/viterbi_algorit
hm/s1_pg1.html
(odwiedzona 14 I 2014r.)
[13] HTK Speech Recognition Toolkit. Dostępny:
http://htk.eng.cam.ac.uk/ (odwiedzona 5 XII 2013r.)
[14] Lokalna analiza częstotliwościowa. Dostępny:
http://wavelet.elektro.agh.edu.pl/wyklad/pdf/Lokalna.pdf (odwiedzona 14 I 2014r.)
[15] Strona firmy Techmo. Dostępny:
http://techmo.pl/index.php/surikate/opis-produktu (odwiedzona 9 I 2014r.)
[16] WAVE PCM soundfile format. Dostępny:
https://ccrma.stanford.edu/courses/422/projects/WaveFormat/
(odwiedzona 14 I 2014r.)
[17] Wystąpienia w Sejmie. Dostępny:
http://sejmometr.pl/sejm_wystapienia (odwiedzona 14 I 2014r.)
[18] Zespół Przetwarzania sygnałów - DSP AGH. Dostępny:
http://www.dsp.agh.edu.pl/pl:about (odwiedzona 15 I 2014r.)