WOJSKOWA AKADEMIA TECHNICZNA
im. Jarosława Dąbrowskiego
SYSTEMY DIALOGOWE
SPRAWOZDANIE Z ĆWICZENIA nr 3
Temat: Urządzenie automatycznego rozpoznawania sygnału mowy metodą rozpoznawania wzorców
(projekt dla małego słownika)
Wykonał: Adam Lipiński
Grupa: I0M1S1
1
1. TREŚĆ ZADANIA
1) Założenia:
- mały słownik wyrazów rozpoznawanych: 10 słów,
- jednostka fonetyczna: całe słowo.
2) Przygotować dane:
- sformułować słownik wyrazów rozpoznawanych;
- dokonać rejestracji wszystkich słów (każde słowo 15-krotnie, w oddzielnym pliku .wav);
- do rejestracji przyjąć: fs = 22050 Hz, 16 bitów/próbka, kodowanie
PCM, mono;
3) Zdefiniować wzór testowy(obserwacja) (współrzędne wektora obserwacji, np.: energia, długość - liczba próbek, liczba przejść przez zero, współczynniki FFT (widmo) od 3 do 10, współczynniki LPC, itp.)
4) Opracować procedurę uczenia - utworzyć wzorce słów:
- zdefiniować wzorzec,
- określić ciąg uczący,
- dokonać estymacji parametrów wzorców
5) Opracować procedurę rozpoznawania
6) Dokonać weryfikacji i testowania urządzenia:
- określić ciąg testowy
- wyznaczyć statystyki rozpoznawania (estymatory prawdopodobieństwa poprawnego rozpoznania, analiza błędów
rozpoznawania)
- zaproponować kierunki zmian w celu poprawienia jakości zbudowanego urządzenia ARM
Dokonać implementacji urządzenia w środowisku MATLAB.
2
2. WYNIKI
W celu realizacji zadania został sformułowany słownik składający się z 10 wyrazów (nagranych po 15 razy każdy). Zgodnie z zaleceniami każdy wyraz został zapisany w oddzielnym pliku typu wav. Przy nagrywaniu przyjąłem częstotliwość próbkowania wynoszącą 22kHz, rozdzielczość 16bitów na próbkę oraz tryb mono.
Nagrane wyrazy to:
jeden;
dwa;
trzy;
cztery;
piec;
szejsc;
siedem;
osiem;
dziewiec;
dziesiec;
System rozpoznawania wyrazów został zaimplementowany zgodnie z uproszczoną strukturą rozpoznawania sygnału mowy metodą rozpoznawania wzorców.
PROCEDURA UCZENIA
WZORCE
UKŁAD PORÓWNANIA
UKŁAD
DECYZYJNY
rozpoznana
mowa
tryb rozpoznawania
tryb uczenia
OBSERWA- CJA
ANALIZA
SYGNAŁU
sygnał
mowy
Rys.1. Uproszczona struktura rozpoznawania sygnału mowy metodą rozpoznawania wzorców.
3
%tryb uczenia for i=1:L
ocena=0;
for j=1:5
[z,fs]=wavread(strcat(sciezka2,'/', deblank(A(i,:)),'_',int2str(j),'.wav'));
z=z/max(abs(z));
dlugosc=length(z);
E=z'*z;
z1=z(2:dlugosc);
z2=z(1:dlugosc-1);
PPZ = sum(abs(sign(z1)-sign(z2)))/2;
MAX=max(abs(z));
LPC=sum(abs(lpc(z,12)));
parametry=[dlugosc,E,PPZ,MAX,LPC];
parametry=parametry.*wagi;
oc ocena=ocena+parametry;
end; tablica_ocen(i,:)=ocena/5;
end;
tablica_wynikowa=sum(tablica_ocen')*0.05;%dopuszczalna roznica wartosci
elementow miedzy wzorcem testowym i rozpoznowalnym
Rys.2. Listing fragmentu kodu programu odpowiedzialnego za tryb uczenia się wyrazów przez system.
W trybie testowym do budowy wektora obserwacji wykorzystane zostały takie wartości jak:
długość sygnału próbki;
energię sygnału:
N
E log z(n2
n1
liczbę przejść przez zero PPZ
N
PPZ signz(n signz(n 1
2 n2
gdzie:
s ignz(n 1
dla
z(n > 0
s ignz(n
1 dla
z(n 0
wartość największą M
M max z(n
1nN
współczynniki LPC (p=12);
Po obliczeniu wyżej wymienionych wartości dla każdego słowa wzorcowego, zostały one wymnożone przez odpowiednie wagi w celu polepszenia ich charakterystyk.
wagi=[1 0.8 0.5 0.2 0.1]
Kolejne liczby wektora wagi odpowiadają wartością wektora obserwacji.
wagi=[dlugosc, Energia, PPZ, MAX, LPC]
4
Następnie dla każdego wyrazu obliczana jest średnia wszystkich parametrów.
Po zakończeniu etapu uczenia się sumuje tablice ocen i wymnażam przez współczynnik 0,05, dzięki czemu otrzymuje dopuszczalną różnicę wartości elementów, którą wykorzystam do porównania wzorca testowego z rozpoznanym.
%tryb rozpoznawania for i=1:L
for j=6:15
[z,fs]=wavread(strcat(sciezka2,'/', deblank(A(i,:)),'_',int2str(j),'.wav'));
z=z/max(abs(z);
dlugosc=length(z);
E=z'*z;
z1=z(2:dlugosc);
z2=z(1:dlugosc-1);
PPZ = sum(abs(sign(z1)-sign(z2)))/2;
MAX=max(abs(z));
LPC=sum(abs(lpc(z,12)));
parametry2=[dlugosc,E,PPZ,MAX,LPC];
parametry2=parametry2.*wagi;
if sum((tablica_ocen(i,:)-
parametry2)')<=tablica_wynikowa(i)
tablica_koncowa(j-5,i)=1;
end;
end;
end;
display('tablica przedstawiajaca wynik rozpoznania,kolumny to odzielne
wyrazy'); tablica_koncowa rozpoznane=0; nie_rozpoznane=0; for i=1:10
for j=1:10
if tablica_koncowa(i,j)==1
rozpoznane=rozpoznane+1;
else
nie_rozpoznane=nie_rozpoznane+1;
end;
end;
end;
rozpoznane
nie_rozpoznane
display('Wynik procentowy badania');
zgodnosc=(rozpoznane)/(rozpoznane+nie_rozpoznane)*100%
Rys.3. Listing fragmentu kodu programu odpowiedzialnego za tryb rozpoznawania
wyrazów przez system oraz opracowanie i wyświetlenie wyników.
5
W procesie rozpoznawania podobnie jak w etapie uczenia, także obliczam poprzednio wymienionych wartości dla każdego słowa rozpoznawanego, oraz w celu polepszenia wykrywania zostają one wymnożone przez odpowiednie wagi.
Sam etap porównywania wzorca testowego i rozpoznanego polega na odejmowaniu tablicy zbadanych wyrazów wzorcowych od kolejnych wyrazów badanych i porównaniu z dopuszczalną różnicę wartości elementów, którą uzyskałem po etapie uczenia.
Rys. 5. Zrzut ekranu uzyskanych obliczeń i wyników.
Końcowy etap polegał na podliczeniu poprawnych i niepoprawnych rozpoznań, obliczeniu procentowego rozpoznania wyrazów oraz wyświetleniu wyników.
6
3. WNIOSKI i SPOSTRZEŻENIA.
Cel ćwiczenia został osiągnięty, ponieważ udało się zaprojektować i wykonać urządzenie automatycznego rozpoznawania sygnału mowy zgodnie z uproszczoną strukturą rozpoznawania sygnału mowy metodą rozpoznawania wzorców. Wynik
80% poprawnie rozpoznanych wyrazów jest zadowalający przy wykorzystaniu 5 wskaźników. Dzięki temu, że słownik składał się z małej liczby wyrazów, zdecydowałem się na rozpoznawanie wyrazów w pierwszej kolejności na podstawie ich długości wartości energii sygnału. Jest to jedna z najłatwiejszych metod przy tak małej liczbie wyrazów. Rozpoznanie wyrazów nadal nie było satysfakcjonujące, wobec czego wykorzystałem również liczbę przejść przez zero, wartość maksymalną i współczynniki LPC.
Błędy związane z wykryciem wyrazów były spowodowane prawdopodobnie nie najlepszego sprzętu do nagrywania, oraz brak odpowiedniego, wyciszonego miejsca do nagrywania.
Do poprawy jakości rozpoznania mowy, należałoby spróbować zwiększyć liczbę wzorcowych wyrazów.
7
1