Úvod do číslicového zpracování signálů - UCZ
Cvičení 12
LMS algoritmus | Potlačení harmonického rušení | Autokorelační funkce | Detekce pitch periody

kodovani ISO 8859-2
Úloha 12.1 "Demonstrace LMS algoritmu"

Mějme signál x[n], který vznikl sečtením širokopásmového náhodného signálu w[n] (fce randn) a úzkopásmového determinovaného signálu s[n]  (fce sin). Oba signály jsou nekorelovány. Pomocí adaptivního LMS algoritmu se pokuste zpětně separovat původní signály.

Generování vstupního signálu:

% Generovani signalu
N = 2000;
n = (1:N);
fs = 8000;
f1 = 1000;
signal = 2*(sin(2*pi*n*f1/fs))+randn(1,N);


Návod řešení & výsledky:

Stručný popis LMS algoritmu :

Obr.1: Blokové schéma úlohy.

Výstupem adaptivního FIR filtru je odhad determinovaného signálu s[n], který je počítán podle následujícího vztahu
 

(1)

Koeficienty b[k] jsou aktualizovány předpisem

, (2)

kde koeficient beta je konstanta a e[n] je tzv. chybový signál:

(3)

Rozdílem signálu x[n] a odhadu signálu s[n] získáme odhad náhodného signálu w[n].
 

Pohled na úlohu z časové oblasti

Úlohu lze také popsat následujícím způsobem. Máme vstupní signál, který tvoří po sobě jdoucí řada čísel (signál x[n]). Tento signál známe až do n-tého vzorku. Naším úkolem je předpovědět (odhadnout) ze současného a předešlých vzorků signálu, jakou hodnotu signál nabyde v bodě n+1. Tuto hodnotu se můžeme pokusit odhadnout pomocí lineární kombinace vzorků předešlých. Výpočet této lineární kombinace odpovídá filtru FIR, kde jsou minulé vzorky přenásobeny koeficienty bk a potom sečteny. Koeficienty bk jsou získávány právě pomocí LMS algoritmu, který je pro každý nový výpočet predikované hodnoty aktualizuje podle toho, s jak velkou chybou prediktor v předcházejícím kroku pracoval (proces "učení"). V našem případě se signál skládá z náhodné (nepredikovatelné) a determinované (predikovatelné) složky. Pokud náš prediktor pracuje dobře, pak jeho výstupem bude právě predikovatelná složka signálu, v našem případě sinusový průběh. Rozdílem vstupního signálu do prediktoru x[n] a výstupem prediktoru potom bude odhad náhodné složky signálu.

Pohled na úlohu z frekvenční oblasti

Signál w[n] je širokopásmový, narozdíl od signálu s[n], který je soustředěn na jednom kmitočtu. Pokud chceme se signálu x[n] oddělit signál s[n], pak je nutné signál x[n] přefiltrovat takovým filtrem, který propouští pouze signály s frekvencí blízkou signálu s[n]. Návrh koeficientů takového filtru se provádí "učením" pomocí algoritmu LMS.

Implementace prediktoru & vykreslení výsledků

sleduj.m
adap.m

Obr.2: Zobrazení výsledků v časové oblasti.
Obr.3: Vývoj frekvenční charakteristiky predikčního filtru FIR.

Úloha 12.2 "Potlačení harmonického rušení v řeči"

Modifikujte předcházející úlohu tím, že širokopásmový náhodný signál (bílý šum) nahradíte signálem řeči. Generátor harmonického signálu zde představuje "harmonické rušení". Z výsledné směsi obou signálů se pomocí LMS algoritmu pokuste zpětně odseparovat oba signály.

Zaměřte se na následující problémy:

jedna.asc

Příklad potlačení harmonického signálu ze signálu řeči:

Rušivý kmitočet 500 Hz, amplituda 0.5, promluva "jedna", maximální hodnota řečového signálu nanormována k jedničce, koeficient beta = 0,0015.

Obr.4: Blokové schéma metody.


Úloha 12.3 "Detekce základního tónu řeči a rozhodnutí o znělosti signálu"

Zdrojem řečových kmitů, které reprezentují lidskou řeč, je hlasové ústrojí. To se skládá z hlasivek, hrdelní , ústní a nosní dutiny, patra, zubů a jazyka. Zdroj hlasové energie tvoří plíce a s nimi související svaly. Obecně lze zvuky rozdělit na znělé a neznělé. Zdrojem znělých zvuků jsou kmitající hlasivky, které jsou umístěny v horní části hrtanu. Pokud člověk mlčí, je štěrbina mezi hlasivkami odkrytá a vzduch jimi může volně procházet. Při vytváření jednotlivých řečových zvuků se hlasivky svírají a roztahují. Pod tlakem vzduchu začínají hlasivky kmitat. Frekvence kmitů závisí jednak na tlaku vzduchu a jednak na svalovém napětí hlasivek. Tato frekvence je u každého člověka jiná a obvykle se pohybuje v rozmezí 150 až 400 Hz. Frekvence F0 charakterizuje základní tón lidského hlasu, přítomný ve všech znělých partiích promluvy (tedy samohlásek a části souhlásek).

S problémem detekce znělosti úzce souvisí i určení délky základní periody (pitch period). Ta má zásadní důležitost pro volbu délky úseků signálu při segmentaci. Pokud je segmentace prováděna synchroně s pitch periodou, lze při analýze dosáhnout lepších výsledků než s konstantní délkou okénka.


Metody používané pro detekci znělosti

Pro svoji relativní jednoduchost se často používají základní krátkodobé charakteristiky signálu. Nejčastěji to jsou:

Krátkodobá autokorelační funkce

Krátkodobá autokorelační funkce je definována jako :

(4)

Vlastnosti autokorelační funkce jí umožňují používat pro detekci periodicity signálu. Při aplikaci na periodický signál je možno v autokorelační funkci pozorovat opakující se špičky. Proto ji lze použít i k určení základního tónu F0.


Detekci základní periody

Tato úloha je komplikována tím, že současně se základním tónem je ve spektru signálu přítomna i řada formantových frekvencí. Vzhledem ke značnému rozsahu frekvencí, kterých může základní tón nabývat, ho není možné oddělit od formantů například prostou filtrací. Takový přístup by nevedl ke spolehlivým výsledkům. Jako vhodné se jeví metody založené na autokorelační funkci a na výpočtu kepstra.

Přítomnost základního tónu v daném segmentu je zjistitelná z existence výrazných špiček v průběhu obou funkcí. Vzhledem k tomu, že jsou přítomny i další významné špičky, odpovídající formantovým kmitočtům, je třeba detekci provádět pouze na té části funkčního průběhu, kde se dá přítomnost základního tónu očekávat.

Obr.5: Segment signálu a průběhy autokorelační funkce.

První hodnota ACF vyjadřuje energii obsaženou v segmentu, opakující se výraznější maxima pak nesou informaci o periodicitě signálu. Obvykle se průběh ACF normuje tak, aby první člen měl hodnotu 1. Někdy bývá obtížné odlišit špičku odpovídající základní periodě (je nevýrazná). V takovém případě se použije omezovací funkce c(x(n)), která modifikuje časový průběh signálu. Převodní charakteristiku centrálního a amplitudového omezovače lze vyjádřit ve tvaru:
 

 
c(x(n))   =
 
 1 ,   pro   x(n)  >  hL
 0 ,   pro   |x(n)| =< hL
-1 ,   pro   x(n)  <  -hL.
(5)

Při použití omezovače se předpokládá rozdělení signálu na segmenty o délce okolo 30 ms. Každý segment se rozdělí na tři části. V první a poslední třetině se naleznou maxima absolutní hodnoty M1, M2 a pro ně se určí omezovací úroveň hL:
 

hL= p . min{M1, M2}, (6)

kde p=0.6 až 0.8. Převodní charakteristika je následujícím obrázku.

Obr.6: Charakteristika omezovače.

ACF počítaná z takto upraveného signálu má mnohem výraznější špičky pro základní periodu. Nyní průběh normujeme a v části ACF, kde by měla být zachycena periodicita (F0=50 až 250 Hz !), nalezneme nejvýraznější maximum. Porovnáme ho s pevně nastavenou prahovou hodnotou a pokud je  nad tímto prahem, je celý segment označen jako znělý a časová poloha maxima představuje základní periodu.

Na následujícím obrázku je patrný rozdíl mezi znělým a neznělým segmentem.

Obr.7: Znělý a neznělý segment a jejich autokorelační funkce.

Celou metodu lze popsat tímto schématem:

Obr.8: Blokové schéma metody.

Implementace detektoru

korelace.m
znauto.m
jedna.asc
sest.asc

Obr.9: Příklad použití ACF na číslovku "šest". Červená čára v horním obrázku značí maximum autokorelační funkce pro každý segment, modře je vyznačen práh.

Odolnost proti šumu

Metoda dává spolehlivé výsledky při odstupu signálu od šumu až do -3 dB.

Obr.9: Použití ACF na silně zašuměný signál, detekce znělosti je přesto stále dobrá. Slabá čára ve spektrogramu značí velikost základního tónu F0, mřížování vymezuje znělo část slova.

Tento text vznikl jako podklad pro cvičení z předmětu UCZ na katedře teorie obvodů ČVUT. Pro přípravu těchto stránek bylo využito informací z webových stránek Číslicové Signály a Systémy (CSS), kde je také možno najít další zajímavé informace :-)

Jan Novotný: novotnj2@feld.cvut.cz  &  Petr Prášek: xprasek@feld.cvut.cz  10.12.2001