[ Pobierz całość w formacie PDF ]
zawartości wskazanego parame-
]42 ROZDZIAA 6
trem pliku tworzy drugi, ośmiokrotnie krótszy. Ka\dy bit kolejnego bajtu nowego pliku koduje nam informację,
czy wartość kolejnej próbki pobrana z pliku wejściowego przekracza pewną wartość, czy te\ nie. Program
drugi, na podstawie pliku wyprodukowanego" przez RAW2PPZ tworzy plik opisujący kolejne próbki, z tym
jednak, \e amplituda (przez utratę informacji na poprzednim etapie) mo\e przyjąć ju\ tylko dwa stany. Oba
programy traktować mo\na jako kompresor i dekompresor danych dzwiękowych. Mimo \e jedyną informacją
zachowywaną po takiej kompresji" jest liczba PPZ, ro\kom presowany" dzwięk nadal rozpoznajemy! program
RAW2PPZ;
uses dos;
var
F:file;
Ce):flleofbyte;
D:dirstr;
N:namestr;
E;extst;r;
!le_8:lonsinC;
Buf:array[Q..71 ofbyte;
q,Bajt:byte;
begin
ifparamcounc=0t:hen
begin {gdy brak parametrów }
wriceInCU\ycie; RAW2PPZ pliki [plik2n;
halt end;
fsplii;[paramstr[1],D,N,E);
assignCF.paramscriI));
{$'-} reset[R1];
{$i+} ifioresuitoOthen
begin
writeInfBłąd otwarcia pliku!'];
hale
end;
HeJ:=filesize(F)div8;
If paramcount=1 then
assign[Cel,n+'.PPZ') { rozszerzenie ,PPZ } else
ass!gn[Cel,paramstr(2]];
rewritetCeR;
SYGNAAY / ICH PRZETWARZANIE
repeaC
blockread[FBuf[0].83;
Ba|t:=0;
forq:=7downto O do
if BufE7-q]> 127 then Bajt: =Ba)t or t1 shl q];
wriceCCel.Belt],
dect!le_B] uncii ile_8=0;
BajC:=0;
fillchBrt6uf[Q),8,Q); {wyzerowanie bufora} blockread[F,Buf,filesize(F] mód 8); {reszta }
forq:=7downto0do
if Buft7-q]> 127 then Bajt: =Bajt or [1 shl q);
write(Cel,Baft);
close(F);
closetCel] { zamykamy i po wszystkim} end.
tekst drugiego programu:
program PPZ2RAW;
uses dos;
vsr
F:fileofbyte;
CBhftle;
D:dirstr;
N:namestr;
E:extstr;
Rozmiar: longint:
Buf:arr8y[0..7]ofbyte:
q.Bajt:byte;
begin
if paramcount:=0 then
begin {brak parametrów}
wnteInfU\ycie: PPZ2RAW pliki [plik21');
halt end;
fsplittparamstr(1),a,N,E);
assigntF.paramstKD);
{Si-} resettF]; { próba otwarcia pliku }
{$i+} ifiaresultoOthen begin
wrIteInCBląd otwarcia pliku !'3;
halt
ROZDZIAA 6
end, rozmiar. =fi!esizs[R, if paramcount=1 chen
assign(Ce! N-'.RAW') { do pliku z rozszerzeniem RAW } else
assigntCel,parametry]);
re^nte[Cel,1]; { utworzenie }
repeat
read[F,BajC); { odczyt pojedynczego bajCu }
fillchar[Buf[Q],Q,0]; {wyzerowanie bufora }
forq:=7downto O do
ifBajtandCl shiq) oOthen Buf[7-q]:=12B;
blockwnte[Cel,Buf[0],8); { zapis 8-miu bajtów }
dectr-ozmiari untii Rozmiar=G;
close[F);
closeCCeD { zamykamy oba pliki i ju\ }
end.
Za drugi wa\ny parametr uznać mo\na szerokość widma, której zmiany w czasie tak\e niosą informacje o przebiegu
procesu artykulacji.
Oprócz tego przy analizowaniu dzwięków mowy zwraca się uwagę na tzw. formanty. Co to? Załó\my, \e mamy
dany wykres widmowy jak na rysunku 17.
fl f2 f3 f
Rys J 7 Przykładowy wykres widmowy
Widzimy na nim trzy maksima. Częstotliwości, dla których je obserwujemy (fl,f2,f3), to właśnie formanty. Ich
poło\enie i wielkość ulegają zmianie w czasie i wiele mówią o procesie emisji dzwięków. W mowie wyró\nić mo\na
kilka formantów. Ka\dego z nich poszukujemy w innym przedziale częstotliwości. Analiza formantów jest dość
wygodna, bo zmieniają one swoje poło\enie i wielkość dosyć wolno. Pewnych trudności nastręcza głównie ich
odnalezienie. Wyobrazmy sobie, \e dysponujemy widmem prą\kowym (otrzymanym np. w wyniku zastosowania
szybkiej transformaty Fouriera) jak na rysunku 18.
SYGNAAY f ICH PRZETWARZANIE
145
RysJ 8 Widmo prą\kowe
Mimo \e na pierwszy rzut oka trudno jest odnalezć częstotliwość, której udział w badanym sygnale jest
największy, mo\na postarać się aproksymować przebieg krzywej widmowej i zało\yć np. \e częstotliwość
formantu równa jest 0,5(fl+f2).
prawdopodobne poło\enie maksimum
Rys. 19 Aproksymacja przebiegu wykresu widmowego W procesie wykrywania formantów często stosuje się
sieci neuronowe.
Wydzielenie parametrów ściśle powiązanych z procesem artykulacji jest kluczowym problemem w dziedzinie
rozpoznawania mowy. Gdy je wyznaczymy, pozostaje nam przyrównywanie otrzymanych wielkości do tych,
jakie wyznaczyliśmy w procesie uczenia. Naturalnie nie jest to proste. Je\eli jednak zbiór parametrów
opisujących dokonane nagranie potraktujemy jako pewien obiekt, to odnalezienie klasy, do której on nale\y,
jest Ju\ problemem innej natury. Najogólniej rzecz biorąc, identyfikacji dokonuje się najczęściej przyjmując
istnienie pewnej przestrzeni cech", w której ka\dy wymiar opisuje inny parametr. Ka\dej klasie obiektów,
które mają podlegać identyfikacji, przypisujemy pewną przestrzeń, której granice wyznaczane są przez
wartości ka\dej ze współrzędnych-parametrów. Obiekt nale\y do klasy, jeśli punkt w przestrzeni cech
wyznaczany przez jego parametry mieści się w objętości" tej klasy. Je\eli parametry ulegają zmianom w
dziedzinie czasu, to naturalnie dokładamy jeszcze współrzędną czasu i zamiast punktu otrzymujemy krzywą.
I tak na przykład, gdy dzwięk rozpoznajemy tylko na podstawie zmienności liczby przejść przez zero, to mamy
do czynienia z prze-
ROZDZIAA 6
[ Pobierz całość w formacie PDF ]