next up previous
Next: 10. Cvičení 10: Separace Up: Cvičení k předmětu ADA Previous: 8.2 Kaskáda IIR prediktorů

9. Cvičení 9: Adaptive Noise Canceler (ANC)

Struktura ANC je na Obr. 9.1

Figure 9.1: Struktura ANC
\begin{figure}\begin{center}
\pstexfig{a9anc}
\end{center}
\end{figure}

9.0.0.0.1 Vstupní signály ANC:

Máme dva zdroje: zdroj užitečného signálu $ u[n]$ např. se může jednat o mluvčího a zdroj rušení $ r[n]$ např. hluk motoru, větrák atd.. Naším cílem je získat pokud možno čistý (bez příměsi rušení $ r[n]$) a nezkreslený užitečný signál $ u[n]$.

Za tímto účelem umístíme mikrofon (vstupní signál $ d[n]$) co nejblíže mluvčímu. Mikrofon ale snímá i část rušení $ r[n]$. Proto umístíme ještě jeden mikrofon (referenční vstup $ x[n]$) poblíž zdroje rušení $ r[n]$, aby jsme ho co nejvěrněji zachytili s tím, že se nám ho později podaří od směsi na vstupu $ d[n]$ odečíst a získat tak čistý užitečný signál.

O příspěveku od $ r[n]$ k signálu $ x[n]$ na referenčním vstupu předpokládáme, že je přímo roven $ r[n]$ (referenční mikrofon je přímo u zdroje rušení). Podobně předpokládáme, že příspěvek užitečného signálu $ u[n]$ k vstupnímu signálu $ d[n]$ je přimo roven $ u[n]$ (vstupní mikrofon $ d[n]$ je přímo u zdroje užitečného signálu). Přenosová cesta od zdroje rušení na vstup $ d[n]$ je modelována LTI systémem s přenosovou funkcí $ H_1(z)$. Přenosová cesta od zdroje užitečného signálu na referenční vstup je modelována LTI systémem s přenosovou funkcí $ H_2(z)$.

9.0.0.0.2 Funkce ANC:

Předpokládejme nejprve, že přenosová funkce $ H_2(z)$ je nulová. Na vstupu $ d[n] = u[n] + h_1[n]*r[n]$ je přítomna směs užitečného signálu $ u[n]$ a příspěvku od rušivého signálu $ r[n]$. Naším cílem je rušení ze směsi odstranit. K dispozici máme referenční vstup $ x[n] = r[n]$, na kterém se v ideálním případě vyskytuje pouze šum (bez $ H_2(z)$). V případě, že $ x[n]$ ($ r[n]$) a $ u[n]$ jsou nekorelovány, minimalizuje LMS výkon na výstupu $ e[n]$ tím, že nastaví váhy adaptivního filtru tak, aby přenosová funkce adaptivního filtru byla shodná s $ H_1(z)$, čímž se rušení na chybovém výstupu $ e[n]$ vykompenzuje.

Dalo by se říci, že se vlastně jedná o úlohu identifikace, kterou jsme probírali na 4. cvičení. Jediný rozdíl v obou úlohách je pouze v tom, že v úloze identifikace je cílem odhadnout přenosovou funkci neznámého systému (zde $ H_1(z)$) a v úloze ANC je cílem potlačit rušení. Tedy úloha potlačení echa v automobilu je spíše ANC než identifikace. Podíváme se zde ale také na věci, které jste si na uvedené úloze ještě nevyzkoušeli. Předně vliv přítomnosti $ H_2(z)$ na SNRE (Signal to Noise Ratio Enhancement) a vliv (vysokého) SNR na vstupu $ d[n]$ na funkci adaptivního filtru.


Cvičení 9.0: Jako užitečný signál $ u[n]$ si stáhněte tento řečový signál (použijte pouze prvních $ N=9000$). Vygenerujte barevný šum (AR model 2. řádu - komplexně sdružené póly: $ 0.7e^{\jmath \frac{\pi}{6}}$, $ 0.7e^{- \jmath \frac{\pi}{6}}$) s normovaným rozptylem na 1. Jako rušení pak volte tento barevný šum dodatečně zesílený r_zes-krát, kde

A
r_zes = 4,
B
r_zes = 1,
C
r_zes = 0.1.
Přenosovou funkci $ H_1(z)$ volte jako zpoždění o 2 vzorky a zesílení 0.5. Přenosovou funkci $ H_2(z)$ modelujte
1
jako nulové zesílení (bez $ H_2(z)$),
2
shodně jako $ H_1(z)$.
Namodelujte signály $ d[n]$ a $ x[n]$ (nejjednoduší je asi použít funkce filter).

Napište skript v Matlabu impementující strukturu ANC Obr. 9.1. Řád adaptivního filtru volte $ M=10$. Konvergenční konstantu volte opět mu = 0.1/((M+1)*rxx0) (viz. (7.1) pro missadjustment $ \mathcal{M}=0.1$).

Pro všechny body A1, A2, B1, B2, C1, C2: Vyneste průběh vah na čase, vyneste spektrogramy užitečného signálu $ u[n]$, vstupního signálu $ d[n]$ a výstupního $ e[n]$ (a poslechněte si je). Dále vždy spočtěte SNR na vstupu $ d[n]$, SNR na výstupu $ e[n]$ a dosažené SNRE. Rovněž vyneste impulsovou odezvu adaptivního filtru v ustáleném stavu a porovnejte ji s impulsovou odezvou $ h_1[n]$.

Pokuste se odpovědět na následující otázky: Proč zavedení vazby $ H_2(z)$ (z $ u[n]$ na $ x[n]$) vede ke zhoršení SNRE? Proč s rostoucím SNR na vstupu $ d[n]$ (s klesajícím výkonem rušení) SNRE klesá?


Uvádím zde pouze skript na výpočet SNRE (podobně jako u ALE):

Pu1 = sum(u.^2)/N;     % vykon uzitecneho sig. na vstupu
Pn1 = sum((d-u).^2)/N; % vykon ruseni na vstupu
Pu2 = sum(u.^2)/N;     % vykon uzitecneho sig. na vystupu
Pn2 = sum((e-u).^2)/N; % vykon ruseni na vystupu
SNR1 = 10*log(Pu1/Pn1);
SNR2 = 10*log(Pu2/Pn2);
SNRE = SNR2-SNR1;

Výsledky pro r_zes = 4:

Figure 9.2: Úloha A1 r_zes = 4, bez $ H_2(z)$: (zleva doprava) průběh vah adaptivního filtru na čase (v titulku SNR na vstupu $ d[n]$ - $ \mathrm{SNR}_1$, SNR na výstupu $ e[n]$ - $ \mathrm{SNR}_2$ a dosažené SNRE), spektrogram $ u[n]$, spektrogram $ d[n]$, spektrogram $ e[n]$
\includegraphics[width=10cm]{ada9/obrmat/fig1.ps}

Figure 9.3: Úloha A1 r_zes = 4, bez $ H_2(z)$: (zleva doprava) porovnání vah v ustáleném stavu s impulsovou odezvou $ h_1[n]$, spektrogram $ x[n]$, spektrogram $ r[n]$
\includegraphics[width=10cm]{ada9/obrmat/fig2.ps}

Figure 9.4: Úloha A2 r_zes = 4, s $ H_2(z)=H_1(z)$: (zleva doprava) průběh vah adaptivního filtru na čase (v titulku SNR na vstupu $ d[n]$ - $ \mathrm{SNR}_1$, SNR na výstupu $ e[n]$ - $ \mathrm{SNR}_2$ a dosažené SNRE), spektrogram $ u[n]$, spektrogram $ d[n]$, spektrogram $ e[n]$
\includegraphics[width=10cm]{ada9/obrmat/fig3.ps}

Výsledky pro r_zes = 1:

Figure 9.5: Úloha B1 r_zes = 1, bez $ H_2(z)$: (zleva doprava) průběh vah adaptivního filtru na čase (v titulku SNR na vstupu $ d[n]$ - $ \mathrm{SNR}_1$, SNR na výstupu $ e[n]$ - $ \mathrm{SNR}_2$ a dosažené SNRE), spektrogram $ u[n]$, spektrogram $ d[n]$, spektrogram $ e[n]$
\includegraphics[width=10cm]{ada9/obrmat/fig4.ps}
Figure 9.6: Úloha B2 r_zes = 1, s $ H_2(z)=H_1(z)$: (zleva doprava) průběh vah adaptivního filtru na čase (v titulku SNR na vstupu $ d[n]$ - $ \mathrm{SNR}_1$, SNR na výstupu $ e[n]$ - $ \mathrm{SNR}_2$ a dosažené SNRE), spektrogram $ u[n]$, spektrogram $ d[n]$, spektrogram $ e[n]$
\includegraphics[width=10cm]{ada9/obrmat/fig5.ps}

Výsledky pro r_zes = 0.1:

Figure 9.7: Úloha C1 r_zes = 0.1, bez $ H_2(z)$: (zleva doprava) průběh vah adaptivního filtru na čase (v titulku SNR na vstupu $ d[n]$ - $ \mathrm{SNR}_1$, SNR na výstupu $ e[n]$ - $ \mathrm{SNR}_2$ a dosažené SNRE), spektrogram $ u[n]$, spektrogram $ d[n]$, spektrogram $ e[n]$
\includegraphics[width=10cm]{ada9/obrmat/fig6.ps}
Figure 9.8: Úloha C2 r_zes = 0.1, s $ H_2(z)=H_1(z)$: (zleva doprava) průběh vah adaptivního filtru na čase (v titulku SNR na vstupu $ d[n]$ - $ \mathrm{SNR}_1$, SNR na výstupu $ e[n]$ - $ \mathrm{SNR}_2$ a dosažené SNRE), spektrogram $ u[n]$, spektrogram $ d[n]$, spektrogram $ e[n]$
\includegraphics[width=10cm]{ada9/obrmat/fig7.ps}

Nyní si vyneseme tabulku 9.1 dosažených SNRE pro jednotlivá r_zes a typy $ H_2(z)$. Rovněž uvedu pokles SNRE vlivem přítomnosti $ H_2(z)$ (označeno $ \Delta\mathrm{SNRE}$).

Table 9.1: Dosažených SNRE Pro jednotlivá r_zes a typ $ H_2(z)$ (rovněž je uveden pokles SNRE vlivem přítomnosti $ H_2(z)$ - označeno $ \Delta\mathrm{SNRE}$)
  $ \mathrm{SNRE}$ bez $ H_2(z)$ $ \mathrm{SNRE}$ s $ H_2(z)=H_1(z)$ $ \Delta\mathrm{SNRE}$
r_zes = 4 33 28 5
r_zes = 1 6 -3 9
r_zes = 0.1 -41 -55 14


9.0.0.0.3 Proč zavedení vazby $ H_2(z)$ (z $ u[n]$ na $ x[n]$) vede ke zhoršení (snížení SNRE)?

Podívejme se na strukturu Obr. 9.1 z hlediska užitečného signálu $ u[n]$. $ u[n]$ je jednak částí $ d[n]$ a jednak přispívá (přes $ H_2(z)$ a adaptivní filtr) k odhadu $ \hat{d}[n]$. Odečtením $ \hat{d}[n]$ od $ d[n]$ dojde tedy při zapojené $ H_2(z)$ ke zkreslení $ u[n]$. Čím větší je výkon přípěvku od $ u[n]$ na referenčním vstupu $ d[n]$ oproti výkonu $ r[n]$ tím je jev výraznější, viz. tabulka 9.1 (s klesajícím r_zes $ \Delta\mathrm{SNRE}$ roste). V případě zanedbatelného výkonu $ r[n]$ na referenčním vstupu (oproti přípěvku od $ u[n]$) může dojít i k úplnému potlačení $ u[n]$ na chybovém výstupu $ e[n]$ (adaptivní filtr realizuje inverzi k $ H_2(z)$). To u nás ale možné není neb iverze k zvolenému $ H_2(z)$ je nekauzální (a řeč není tak dobře predikovatelná jako např. harmonický signál).

9.0.0.0.4 Proč se vlivem poklesu výkonu $ r[n]$ SNRE zhoršuje?

Předpokládejme, že vazba $ H_2(z)$ je odpojená (je-li zapojená je vše ještě horší). Jeli SNR na vstupu $ d[n]$ již hodně vysoké (výkon (pro náhodné procesy rozptyl) $ u[n]$ je ve směsi $ d[n]$ o hodně vyšší než výkon $ r[n]$), je pro optimální nastavení vah výkon na chybovém výstupu $ e[n]$ (MSE) zhruba stejně velký jako na vstupu $ d[n]$.

Problém je, že váhový vektor není fixován na optimální hodnotu ale vykazuje rozptyl (gradientní šum). Vlivem gradientního šum je skutečné MSE o něco vyšší než MSE pro optimální nastavení vah (volíme-li $ \mu$ podle (7.1) a zvolíme-li zde missadjustment $ \mathcal{M}=0.1$ - běžná hodnota, mělo by dojít ke zvýšení zhruba o 10 procent). Pak se stane, že výkon příspěvku k $ e[n]$ vlivem gradientního šumu je mnohem větší než výkon příspěvku rušení na vstupu $ d[n]$.


Cvičení 9.1: Jak byste modifikovali strukturu ANC Obr. 9.1 víte-li, že SNR na vstupu $ d[n]$ bude vždy větší než 0 (rušení má ve směsi $ d[n]$ vždy menší zastoupení než užitečný signál)?




Subsections
next up previous
Next: 10. Cvičení 10: Separace Up: Cvičení k předmětu ADA Previous: 8.2 Kaskáda IIR prediktorů
Mirek 2006-12-12