Dokumentacja

WOJSKOWA AKADEMIA TECHNICZNA

im. Jarosława Dąbrowskiego

WYDZIAŁ CYBERNETYKI

METODY I ZADANIA ROZPOZNAWANIA WZORCÓW

Dokumentacja projektowa

Prowadzący: prof. dr hab. inż. Włodzimierz KWIATKOWSKI

Autor: Mateusz SUCHOCKI

Grupa: I1G1S4

Data wykonania: 12.06.2012r.

  1. Założenia projektowe

Efektem końcowym stworzonego projektu powinien być skrypt zaimplementowany w środowisku Matlab, który umożliwiał będzie rozpoznawanie dźwięków. Skrypt powinien dostarczać funkcję wczytywania pliku głosowego w standardzie mp3 (MPEG-1 Audio Layer 3), a następnie przekonwertowania go na format wav (Wave Form Audio Format) na którym będzie wykonywana analiza sygnału dźwiękowego. Program powinien umożliwić wczytanie sygnałów wzorcowych przy pomocy których będzie wykonany proces uczenia. Po wykonaniu uczenia, program powinien dostarczać funkcji wczytania sygnału do rozpoznania. Dla wczytanego pliku głosowego powinno być wykonane rozpoznanie czy nagranie zawiera nazwisko czy też imię użytkownika. Po zakończeniu procesu rozpoznawania sygnału należy aby program wyświetlił wyniki rozpoznania, do którego wzorca analizowany sygnał jest podobny.

  1. Wykorzystana metoda rozpoznawania

Rozpoznawania zostało zrealizowane przy pomocy ukrytych łańcuchów Markowa na pogrupowanych współczynnikach LPC. Projekt wykorzystuje jako wzorce nagrania w formacie mp3 od różnych mówców (dwa nagrania dla nazwiska i imienia użytkownika). W procesie rozpoznawania wykorzystywane są również nagrania od różnych mówców.

  1. Realizacja

W celu umożliwienia wczytania nagrania w formacie mp3 przez skrypt napisany w środowisku Matlab, pobrany został ze strony producenta odpowiedni zbiór narzędzi. Dostarcza on takie funkcje jak: mp3read oraz mp3write. Funkcja mp3read powiela działanie funkcji wavread, z tym wyjątkiem, że wczytywany sygnał ma rozszerzenie mp3.

Projekt został podzielony na trzy skrypty:

W skrypcie AnalizaPliku.m znajduje się definicja metody, która jako jeden z argumentów przyjmuję nazwę pliku z rozszerzeniem mp3. Plik o podanej nazwie zostaje wczytany przy pomocy funkcji mp3read. Następnie dokonywane jest podział sygnału na ramki, każda ramka składa się z 30 próbek. Po podziale sygnału na ramki dokonywane jest wycięcie ciszy w całym sygnale. Każda ramka następnie jest poddawana analizie w wyniku czego uzyskuje się parametry, dzięki którym dokonywane jest rozpoznawanie mowy. W zaimplementowanym projekcie parametrami takimi są współczynniki LPC (linear predictive coding). Dla każdej ramki wyliczane są dwa współczynniki LPC. Ostatecznie zbiór obliczonych współczynników dla wszystkich ramek sygnału zwracany jest przez metodę w formie macierzy.

Rysunek nr. 1. Wybrane współczyniki LPC dla przykładowego sygnału

Następny skrypt Uczenie.m odpowiedzialny jest za proces uczenia sią. Tak więc na samym początku wywoływana jest kilkakrotnie zaimplementowana metoda AnalizaPliku(), która wczytuje podane nagrania i zwraca macierze współczynników LPC. Kolejnym etapem jest wyliczanie odległości między współczynnikami dla poszczególnych ramek sygnału i obliczenie drzewa połączeń przy wykorzystaniu wbudowanej funkcji linkage() – wynik przedstawiony na rysunku nr. 2 .

Rysunek nr. 2. Obliczone drzewo połączeń

Po wyliczeniu drzewa połączeń wykonana jest funkcja cluster() ograniczająca liczbę grup w drzewie. W ten sposób odległości między współczynnikami LPC dla poszczególnych ramek przydzielone są w trzy grupy. Na rysunku nr. 3 zostały przedstawione współczynniki LPC poszczególnych ramek dla przykładowego nagrania, przynależność do grupy została zobrazowana za pomocą różnych kolorów.

Po wykonaniu grupowania współczynników LPC dla każdego nagrania tworzona jest macierz zawierająca sekwencję numerów grup do których przydzielone zostały kolejne ramki nagrania na postawie współczynników LPC. W dalszej części programu tworzona jest startowa macierz przejść (Rysunek nr. 4) wielkości 10x10, z względu na przyjętą długość ukrytego łańcucha Markowa która wynosi 10 stanów. W macierzy startowej prawdopodobieństwo przejścia z jednego stanu do następnego wynosi 0.1, natomiast prawdopodobieństwo pozostania w stanie wynosi 0.9 dla wszystkich stanów. Dodatkowo tworzona jest macierz rozkładu emisji symboli dla wszystkich stanów.

Rysunek nr. 3 Zobrazowanie przynależności do poszczególnych grup współczynników LPC

Rysunek nr 4. Startowa macierz przejść

Ostatnim etapem w skrypcie Uczenie.m jest proces uczenia przy wykorzystaniu funkcji hmmtrain(). Funkcja ta jako argumenty pobiera kolejno: wektor zawierający sekwencję numerów grup, jakie zostały przydzielone kolejnym ramkom dla danego sygnału; startową macierz przejść oraz macierz rozkładu emisji symboli dla stanów. Funkcja hmmtrain() jako wynik swojego działania zwraca macierz przejść (Rysunek nr 5) oraz macierz rozkładu estymacji dla wszystkich stanów (Rysunek nr. 6). Na podstawie tych macierzy wykonywane będzie rozpoznawanie.

Rysunek nr. 5. Przykładowa macierz przejść po wykonaniu procesu uczenia

Rysunek nr. 6 Przykładowa macierz rozkładu estymacji dla poszczególnych stanów po wykonaniu procesu uczenia

Ostatni skrypt Rozpoznawanie.m jak sama nazwa wskazuje realizuje funkcję rozpoznawania. Tak więc na początku tego skryptu wykonywane jest wczytanie pliku przy pomocy funkcji AnalizaPliku(), która zwraca współczynniki LPC dla kolejnych ramek wskazanego nagrania. Następnie podobnie jak w przypadku skryptu Uczenie.m wykonywany jest proces grupowania, realizowany przez obliczenie drzewa połączeń poprzez ograniczenie liczby grup do 3 i wygenerowania wektora zawierającego sekwencję numerów grup kolejnych ramek z nagrania. Po wykonaniu tych czynności wykonywana jest funkcja hmmdecode(), która wykorzystuje macierze (przejść i rozkładu estymacji) wygenerowane w pliku Uczenie.m podczas uczenia. Funkcja ta zwraca logarytm prawdopodobieństwo wystąpienia sekwencji symboli dla danego modelu. Po wykonaniu metody hmmdecode() porównującej ciąg symboli uzyskanych podczas grupowania ramek z dwoma modelami dla imienia i nazwiska, dokonywane jest rozpoznanie. Za rozpoznany uznajemy ten model dla którego prawdopodobieństwo porównania wyszło większe. Na poniższym rysunku został przedstawiony wynik działania skryptu Rozpoznawanie.m.

Rysunek 1. Wynik wykonania pliku Rozpoznawanie.m

  1. Testowanie

Dla wytworzonego oprogramowania zostały wykonane testy weryfikujące jego poprawność działania. Początkowo wykonane zostały testy poprawności rozpoznawania przy wykorzystaniu dwóch plików wzorcowych dla nazwiska i dwóch plików wzorcowych dla imienia (pliki różnych mówców) na podstawie których wykonywane było rozpoznawanie. Rozpoznaniu zostały poddane cztery pliki: twa pliki różne od plików wzorcowych (pliki różnych mówców) oraz dwa pliki które zostały użyte jako wzorce. Wyniki wykonanych testów zostały przedstawione w poniższej tabeli. Pliki podkreślone w tabeli reprezentują pliki wzorcowe na podstawie których wykonywane jest rozpoznawanie.

Plik testowy Rozpoznano Faktyczna zawartość pliku
nazwisko.1mp3 Nazwisko Nazwisko
nazwisko2.mp3 Imię Nazwisko
nazwisko3.mp3 Nazwisko Nazwisko
nazwisko4.mp3 Nazwisko Nazwisko
imie1.mp3 Nazwisko Imię
imie2.mp3 Imię Imię
imie3.mp3 Imię Imię
imie4.mp3 Imię Imię

Podczas wykonywania kolejnego testu posłużono się tylko jednym plikiem wzorcowym dla imienia i jednym plikiem dla nazwiska na podstawie których wykonywane było rozpoznawanie. Poniższa tabela przedstawia uzyskane wyniki. Pliki podkreślone w tabeli reprezentują pliki wzorcowe na podstawie których wykonywane jest rozpoznawanie.

Plik testowy Rozpoznano Faktyczna zawartość pliku
nazwisko.1mp3 Imię Nazwisko
nazwisko2.mp3 Nazwisko Nazwisko
nazwisko3.mp3 Nazwisko Nazwisko
nazwisko4.mp3 Imię Nazwisko
imie1.mp3 Nazwisko Imię
imie2.mp3 Imię Imię
imie3.mp3 Imię Imię
imie4.mp3 Imię Imię

W ostatnim teście wykorzystano trzy wzorce dla nazwiska i trzy dla imienia na podstawie których dokonywane było rozpoznawanie. W poniższej tabeli przedstawione zostały wyniki uzyskane podczas badania. Pliki podkreślone w tabeli reprezentują pliki wzorcowe na podstawie których wykonywane jest rozpoznawanie.

Plik testowy Rozpoznano Faktyczna zawartość pliku
nazwisko.1mp3 Nie rozpoznano Nazwisko
nazwisko2.mp3 Nie rozpoznano Nazwisko
nazwisko3.mp3 Nie rozpoznano Nazwisko
nazwisko4.mp3 Imię Nazwisko
imie1.mp3 Nie rozpoznano Imię
imie2.mp3 Imię Imię
imie3.mp3 Imię Imię
imie4.mp3 Nie rozpoznano Imię
  1. Wnioski

Po przeprowadzeniu badań można stwierdzić, iż większa liczba plików wzorcowych nie wpływa na poprawienie rozpoznawalność, wręcz przeciwnie zwiększa to zawodność rozpoznawania. Najlepszy wynik wyszedł dla rozpoznawania z wykorzystaniem dwóch wzorców (sześć plików na osiem rozpoznanych poprawnie), aczkolwiek dla rozpoznawania z wykorzystaniem jednego wzorca wynik był porównywalny. Trudno więc stwierdzić dla ilu plików wzorcowych wykonane rozpoznawanie jest lepsze (jednego czy dwóch), związane jest to z niewielką liczbą testowanych plików. Należało by więc wykonać badanie na większej ilości plików testowych, co mogło by wyłonić lepsze rozwiązanie. Wykonane rozpoznawanie nie jest w 100% działające, może to być spowodowane tym, iż wszystkie nagrania pochodziły od innych mówców.


Wyszukiwarka

Podobne podstrony:
DOKUMENTACJA OBROTU MAGAZYNOWEGO prawidł
Proces pielęgnowania Dokumentacja procesu
dokumentacja 2
Wykład 3 Dokumentacja projektowa i STWiOR
20 Rysunkowa dokumentacja techniczna
dokumentacja medyczna i prawny obowiązek jej prowadzenia
W 5 dokumentacja ZSJ
Dokumentacja pracy na kąpielisku
Dokumenty aplikacyjne CV list
Dokumentacja pracy fizjoterapeuty
Dokumentacja medyczna bloku operacyjnego
W 5 Dokumentacja operacji gospodarczych ZAZ
DOKUMENTOWANIE GEOTECHNICZNE kurs
3)kontrola dokumentˇw
Opracowanie dokumentacji powypadkowej BHP w firmie
dokument ubiegajacy sie o kredyt inwestycyjny w banku
Dokument
09 Posługiwanie się dokumentacją techniczną (2)

więcej podobnych podstron