background image

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ł: plut. pchor. Radosław WOŹNIAK  

Grupa: I9G1S1 

 
 
 
 

 

 

background image

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ąć: f

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

background image

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: 

  beta;  

  koc; 

  drukarka; 

  borowiki; 

  komputer; 

  daktyloskopia; 

  mysz; 

  rower; 

  spacja; 

  wideo; 

 

System  rozpoznawania  wyrazów  został  zaimplementowany  zgodnie  z 

uproszczoną  strukturą  rozpoznawania  sygnału  mowy  metodą  rozpoznawania 
wzorców. 

 

 

WZORCE 

PROCEDURA 

UCZENIA 

UKŁAD 

PORÓWNANIA 

OBSERWA-

CJA 

mowy 

sygnał 

ANALIZA 

SYGNAŁU 

UKŁAD 

DECYZYJNY 

tryb uczenia 

mowa 

tryb rozpoznawania 

rozpoznana 

 

Rys.1. Uproszczona struktura rozpoznawania sygnału mowy metodą 

rozpoznawania wzorców. 

background image

 
 

%tryb uczenia

 

for

 i=1:L

 

    ocena=0;

 

    

for

 j=1:5

 

        

%nazwy plikow ujednolicone

 

        z=wavread([deblank(A(i,:)) int2str(j)]);

%nazwy plików odpowiadaja 

zawartosci

 

        z=z/max(abs(z));  

%wartosci amplitud w zakresie [-1,+1]

 

        dlugosc=length(z); 

%pomiar dlugosci dzwieku

 

        E=z'*z; 

%pomiar energii

 

        z1=z(2:dlugosc); 

%wspolczynnik do wzoru na ppz

 

        z2=z(1:dlugosc-1); 

%wspolczynnik do wzoru na ppz

 

        PPZ = sum(abs(sign(z1)-sign(z2)))/2; 

%oblcizenie liczby przejsc 

przez zero

 

        MAX=max(abs(z)); 

%wartosc max

 

        LPC=sum(abs(lpc(z,12))); 

%wspolczynnik LPC z 12

 

        parametry=[dlugosc,E,PPZ,MAX,LPC]; 

%wektor obserwacji

 

        parametry=parametry.*wagi; 

%wymnożenie wektora przez odpowiednie 

wagi

 

        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; 

  en

ergię sygnału: 

 

N

1

n

2

n

z

log

E

 

 

liczbę przejść przez zero PPZ 

 

 

N

2

n

1

n

z

sign

n

z

sign

2

1

PPZ

 

 

 

 

gdzie: 

 

 

 

 

 

 

0

n

z

dla

1

n

z

sign

0

n

z

dla

1

n

z

sign

 

 

wartość największą M 

 

n

z

max

M

N

n

1

 

 

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] 

background image

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

 

        

%nazwy plikow ujednolicone

 

        z=wavread([deblank(A(i,:)) int2str(j)]);

%nazwy plików odpowiadaja 

zawartosci

 

        z=z/max(abs(z));  

%wartosci amplitud w zakresie [-1,+1]

 

        dlugosc=length(z); 

%pomiar dlugosci dzwieku

 

        E=z'*z; 

%pomiar energii

 

        z1=z(2:dlugosc); 

%wspolczynnik do wzoru na ppz

 

        z2=z(1:dlugosc-1); 

%wspolczynnik do wzoru na ppz

 

        PPZ = sum(abs(sign(z1)-sign(z2)))/2; 

%oblcizenie liczby przejsc 

przez zero

 

        MAX=max(abs(z)); 

%wartosc max

 

        LPC=sum(abs(lpc(z,12))); 

%wspolczynnik LPC z 12

 

        parametry2=[dlugosc,E,PPZ,MAX,LPC]; 

%wektor z badanymi wartosciami

 

        parametry2=parametry2.*wagi; 

%wymnożenie wektora przez odpowiednie 

wagi

 

        

if

 sum((tablica_ocen(i,:)-

parametry2)')<=tablica_wynikowa(i)

%porownanie wzorca testowego z wyrazami 

badanymi

 

            tablica_koncowa(j-5,i)=1; 

%uzupelnianie tablicy poprawnym 

rozpozanniem

 

        

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 

%odczytanie wartosci z tablic w celu 

obliczenia rozpoznawalnosci

 

            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. 

 

background image

 

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. 
 
 
 
 

background image

3. 

WNIOSKI i SPOSTRZEŻENIA. 

 

Cel  ćwiczenia  został  osiągnięty,  ponieważ  udało  się  zaprojektować  i  wykonać 

u

rządzenie  automatycznego  rozpoznawania  sygnału  mowy  zgodnie  z  uproszczoną 

strukturą  rozpoznawania  sygnału  mowy  metodą  rozpoznawania  wzorców.  Wynik 
82%  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. Jednak wynik nadal nie był wystarczający, dlatego posłużyłem 
się  także  w  liczbą  przejść  przez  zero,  wartością  maksymalną  M  oraz 
współczynnikami  LPC.  Zapewnie  wykorzystanie  kolejnych  wskaźników  jak  np. 
współczynniki  FFT  (widmo)  lub  obliczanie  energii  sygnału  dla  kolejnych  części 
wyrazów. 

 

Błędy w wykryciu wyrazów były spowodowane najprawdopodobniej nienajlepszej 

jakości sprzętem do nagrywania oraz brakiem odpowiedniego, wyciszonego miejsca 
do  nagrywania. 

Niedoskonałości  wy  wykrywaniu  można  także  poszukiwać  w 

podobieństwie wykorzystanych wyrazów (ich długości – liczby próbek). 

celu poprawy jakości zbudowanego urządzenia można by było oprócz dodania 

wyżej  wspomnianych  wskaźników,  także  spróbować  zwiększyć  liczbę  wzorcowych 
wyrazów.