Dokumentacja 3 id 139504 Nieznany

background image

Warszawa 2012

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.

background image

S t r o n a

| 2

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.

2. 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.

3. 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.

background image

S t r o n a

| 3

Projekt został podzielony na trzy skrypty:

AnalizaPliku.m

Uczenie.m

Rozpoznawanie.m

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

background image

S t r o n a

| 4

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.

background image

S t r o n a

| 5

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.

background image

S t r o n a

| 6

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

background image

S t r o n a

| 7

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

4. 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

background image

S t r o n a

| 8

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

background image

S t r o n a

| 9

nazwisko4.mp3

Imię

Nazwisko

imie1.mp3

Nie rozpoznano

Imię

imie2.mp3

Imię

Imię

imie3.mp3

Imię

Imię

imie4.mp3

Nie rozpoznano

Imię

5. 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:
Obieg dokumentow id 327040 Nieznany
Nowy Dokument 2 id 323648 Nieznany
Dokumenty 2 id 139661 Nieznany
Dokument1 id 119688 Nieznany
Nowy dokument id 323647 Nieznany
Analizy dokumentacyjne id 62053 Nieznany
dokumentacja 7 id 139509 Nieznany
Obieg dokumentow id 327040 Nieznany
dokumentacja ogledzinowa id 139 Nieznany
Neu Microsoft Word Dokument id Nieznany
Nowy Dokument 20 id 323651 Nieznany
dokumenty wlasne id 139784 Nieznany
instrukcja obiegu dokumentow id Nieznany
dokumenty 0001 id 139693 Nieznany
dokumentacja dok id 822902 Nieznany
Doti dokumenty wyk 11 id 674369 Nieznany
Dokumentacja kadrowa id 139528 Nieznany
dokumentacja sterownika id 4722 Nieznany

więcej podobnych podstron