回聲消除 Speex AEC 論文和代碼解析

參考

"On Adjusting the Learning Rate in Frequency Domain Echo Cancellation With Double-Talk"

"Multidelay Block Frequency Domain Adaptive Filter"

"Echo Canceler with Two Echo Path Models "

注:由于包含很多LaTeX公式凌彬,可能需要多次刷新或者使用google瀏覽器

大綱

包括小節(jié):1 信號(hào)模型弯淘、2 迭代公式推導(dǎo)、3 最優(yōu)學(xué)習(xí)率寇荧、4 量的估計(jì)刽脖、5 雙講分析羞海、6 代碼解析

speexdsp AEC 的三個(gè)主要設(shè)計(jì):

1)Multi-delay frequency domain adaptive filter,好處是:a)用來進(jìn)行低延遲自適應(yīng)曲管,b)可以為每個(gè)頻點(diǎn)單獨(dú)使用學(xué)習(xí)率

2)Two path model却邓,好處是:a)雙濾波器切換,避免雙講時(shí)發(fā)散

3)Optimal learning rate under noise:a)噪聲環(huán)境下能更好地控制學(xué)習(xí)率院水,b)避免雙講發(fā)散腊徙,對(duì)近端語音快速響應(yīng)

下面對(duì)“On Adjusting the Learning Rate in Frequency Domain Echo Cancellation With Double-Talk”這篇論文(也就是上面的第三點(diǎn))進(jìn)行解析,并挑一些代碼中的技術(shù)點(diǎn)進(jìn)行梳理檬某。

AEC系統(tǒng)圖

噪聲環(huán)境下最優(yōu)NLMS學(xué)習(xí)率

1 信號(hào)模型

\begin{aligned}&d(n) : 目標(biāo)信號(hào)\\&\hat{y}(n): 估計(jì)的回聲信號(hào)\\&\hat{w}: 估計(jì)的濾波器權(quán)重\\&w: 理想濾波器權(quán)重\\&x: 遠(yuǎn)端信號(hào)\\&[\cdot]^*: 表示求復(fù)數(shù)共軛\end{aligned}

則撬腾,系統(tǒng)的誤差公式如下:

\begin{aligned}e(n) &= d(n) - \hat{y}(n) \\&= d(n) - \sum_{k=0}^{N-1}\hat{w}_k(n) x(n-k)  \quad (1)\end{aligned}

基于 NLMS 的迭代公式如下:

\begin{aligned}\hat{w}_k(n+1) &=\hat{w}_k(n) + \mu\frac{e(n)x^*(n-k)}{\sum_{i=0}^{N-1} |x(n-i)|^2}  \quad (2) \\ \end{aligned}

代入(1)式有:

\begin{aligned}\hat{w}_k(n+1) &=\hat{w}_k(n) + \mu\frac{[ d(n) - \sum_{k=0}^{N-1}\hat{w}_k(n) x(n-k)  ]x^*(n-k)}{\sum_{i=0}^{N-1} |x(n-i)|^2}  \quad (3) \\ \end{aligned}

 \delta_k(n) = \hat{w}_k(n) - w_k(n)為第n次迭代后,濾波器權(quán)重第k個(gè)系數(shù)的估計(jì)誤差恢恼;并且民傻,對(duì)于理想濾波器有:d(n) = v(n) + \sum_{k=0}^{N-1} w_k(n) x(n-k)

\delta_k(n),d(n)的表達(dá)式代入(3)式中,并考慮到理想濾波器系數(shù)(聲學(xué)路徑)并不隨著時(shí)間發(fā)生較大變化饰潜,可以認(rèn)為w(n) = w(n+1),得到:

\delta_k(n+1) = \delta_k(n) + \mu\frac{[v(n)-\sum_{i=0}^{N-1} \delta_i(n)x(n-i)]x^*(n-k)}{\sum_{i=0}^{N-1}|x(n-i)|^2}  \quad (4)

接著定義在第 n 次迭代時(shí)和簸,濾波器失配度

\Lambda(n) = \sum_{k=0}^{N-1}\delta_k^*(n) \delta_k(n)

2 濾波器失配度的迭代公式推導(dǎo)

由失配度的定義和迭代公式(4)可得彭雾,在第 n+1 次迭代時(shí),濾波器的失配度為:

\Lambda(n+1) = \sum_{k=0}^{N-1}\left |  \delta_k(n) + \mu \frac{[v(n)-\sum_{i=0}^{N-1}\delta_i(n)x(n-i)]x^*(n-k)}{\sum_{i=0}^{N-1}|x(n-i)|^2} \right | \quad (5)

若我們作一個(gè)強(qiáng)假設(shè):遠(yuǎn)端信號(hào)x(n)和 近端語音v(n)互不相關(guān)的白噪聲锁保,假設(shè)給定x(n),\delta_i(n)的條件下v(n)的條件分布為p_{v|x(n),\Lambda(n)}薯酝,則對(duì)\Lambda(n+1)關(guān)于分布p_{v|x(n),\Lambda(n)}求期望得:

\mathbb E\{ \Lambda (n+1) | \Lambda(n), x(n) \} = \Lambda(n)\left[  1 - \frac{2\mu}{N}  + \frac{\mu^2}{N} + \frac{\mu^2\sigma_v^2}{\Lambda(n)\sum_{i=0}^{N-1}|x(n-i)|^2 }\right] \quad (6)

其中:\sigma_v^2是近端語音信號(hào)得方差?\sigma_v^2 = \mathbb E\{|v(n)|^2\}

我們需要對(duì)(6)式做一些推導(dǎo):(為了簡(jiǎn)潔爽柒,將時(shí)間 n 略去)

先直接對(duì)絕對(duì)值的平方進(jìn)行展開:

\begin{aligned}\mathbb E\{\Lambda(n+1)|\Lambda(n), x\} &= \mathbb E\{\sum_k \left |\delta_k + \mu\frac{(v - \sum_i \delta_i x_i)x_k^*}{\sum_i|x_i|^2} \right |^2\} \\&= \mathbb E \{ \underbrace{ \sum_k |\delta_k|^2}_{(E1)} + \underbrace{\sum_k \delta_k^*\mu\frac{(v-\sum_i\delta_i x_i)x_k^*}{\sum_i |x_i|^2}}_{(E2)} \\&\quad +\underbrace{\sum_k\delta_k\mu\frac{(v^*-\sum_i\delta_i^*x_i^*)x_k}{\sum_i|x_i|^2}}_{(E3)} \\&\quad + \underbrace{\sum_k\mu^2\frac{|v-\sum_i\delta_ix_i|^2\cdot |x_k|^2}{(\sum_i|x_i|^2)^2}}_{(E4)}\}\end{aligned}

其中:(E1)顯然就是時(shí)刻 n 的濾波器失配度\Lambda(n)吴菠,(E2),(E3)中有關(guān)v(n)的一次項(xiàng)式的部分,在其取期望后為 0浩村,即:

\mathbb E\{ \sum_k\frac{\delta_k^* x_k^*\mu v}{\sum_i|x_i|^2}\} = 0,\quad \mathbb E\{ \sum_k\frac{\delta_k x_k\mu^* v^*}{\sum_i|x_i|^2}\} = 0

余下的部分做葵,重新整理得:

\begin{aligned}\mathbb E\{ \Lambda(n+1)| \Lambda(n), x \} &= \mathbb E \{ \Lambda (n) - \underbrace{ \frac{2\mu\sum_k\delta_k^* x_k^*\sum_i\delta_ix_i}{\sum_i |x_i|^2} }_{(E5)} \\&\quad +\underbrace{\frac{\mu^2(|v|^2-v^*\sum_i\delta_ix_i-v\sum_i\delta_i^*x_i^* + \sum_i\delta_ix_i\sum_k \delta_k^* x_k^*)}{\sum_i|x_i|^2}}_{(E6)}\}\end{aligned}

再一次,在上式(E6)中心墅,對(duì)v得一次項(xiàng)取期望后為 0酿矢;

再對(duì)上式中(E5)子式進(jìn)行處理,其分子如下化簡(jiǎn):

\begin{aligned}&\mathbb E\{ \sum_k\sum_i\delta_k^*x_k^*\delta_i x_i  \}\\&= \sum_k \mathbb E\{ \delta_k^*\delta_kx_k^*x_k \} + 交叉項(xiàng)\\&=\sum_k |\delta_k|^2\sigma_x^2 \\&= \sigma_x^2\Lambda(n)\end{aligned}

其中 “交叉項(xiàng)” 為 0怎燥,因?yàn)榧僭O(shè)(遠(yuǎn)端)語音是白噪瘫筐,因此不相關(guān);\sigma_x^2為遠(yuǎn)端語音信號(hào)得方差铐姚。

再對(duì)(E5)中的分母改寫為:

\sum_k|x_i|^2 = N(\frac{1}{N}\sum_i |x_i|^2) \approx N\hat{\sigma}_x^2

\sigma_x^2 \approx \hat{\sigma}_x^2策肝,全部代入(E5)子式得:(E5) = \frac{2\mu\Lambda(n)}{N}

同理,對(duì)子式(E6)使用同樣得處理可得:

\mathbb E\{\Lambda(n+1)|\Lambda(n),x\} = \Lambda(n) + \frac{2\mu\Lambda(n)}{N} + \frac{\mu^2\sigma_v^2}{\sum_i|x_i|^2} + \frac{\mu^2\Lambda(n)}{N} \quad (*)

提取公因子\Lambda(n)隐绵,就得到了論文中的公式(6)之众。

3 最優(yōu)學(xué)習(xí)率

接下來,我們尋找在新的一輪迭代中依许,使得 濾波器失配度\Lambda(n+1)達(dá)到最小的學(xué)習(xí)率酝枢;由于上式(*)是一個(gè)關(guān)于學(xué)習(xí)率\mu的二次函數(shù),因而容易得到最小值點(diǎn)悍手,求導(dǎo)并令其為 0 得:

\frac{-2}{N} + \frac{2\mu}{N} + \frac{2\mu\sigma_v^2}{\Lambda(n)\sum_{i=0}^{N-1}|x(n-i)|^2} = 0 \quad (7)

解方程得:

\mu_{opt}(n) = \frac{1}{1+\frac{\sigma_v^2}{\Lambda(n)(1/N)\sum_i|x(n-i)|^2}} \quad (8)

Observation:當(dāng)沒有近端語音時(shí)帘睦,即\sigma_v^2 = 0,此時(shí)(8)式退化成 NLMS 對(duì)應(yīng)的學(xué)習(xí)率坦康。

雖然我們得到了噪聲環(huán)境中的最優(yōu)學(xué)習(xí)率(8)式竣付,但是其中的失配度無法計(jì)算,因此我們需要進(jìn)一步將其變?yōu)榭晒烙?jì)的量滞欠。

3.1 得到可估計(jì)的學(xué)習(xí)率公式

繼續(xù)分析(8)式中的\Lambda(n)\frac{1}{N}\sum_i|x(n-i)|^2這一項(xiàng)古胆,其中左半邊\Lambda (n)為濾波器的失配度,右半邊\frac{1}{N}\sum_i|x(n-i)|^2顯然是遠(yuǎn)端信號(hào)能量的估計(jì);因此逸绎,這一整項(xiàng)似乎與 AEC 濾波后的遠(yuǎn)端信號(hào)殘留能量相關(guān)的某個(gè)量惹恃;下面我們證明,它的確就是遠(yuǎn)端信號(hào)的殘留能量的估計(jì)棺牧,推導(dǎo)過程如下:

\begin{aligned}\sigma_r^2 &= \mathbb E\{ |\sum_i \hat w_ix_i- \sum_i w_ix_i) |^2\} \\&=\mathbb E\{\sum_i | (\hat{w}_i - w_i)x_i |^2 \}\\&= \sum_i\mathbb E\{|\hat{w}_i-w_i|^2 \cdot|x_i|^2\} +\sum_{i\ne j} \mathbb E \{(\hat{w}_i-w_i)^*(\hat{w}_j-w_j)x_i^*x_j\} \\&=(\sum_i|\delta_i|^2)\mathbb E\{|x_i|^2\}\\&= \Lambda(n)\sigma_x^2\\&=\Lambda(n)\frac{1}{N}\sum_i |x(n-i)|^2 \quad as \ N\to \infty\end{aligned}

其中:由語音是白噪聲這一假設(shè)可知 “交叉項(xiàng)” 為 0巫糙。

進(jìn)而有:\mu_{opt}(n) = \frac{1}{1+\frac{\sigma_v^2}{\sigma_r^2}}=\frac{\sigma_r^2}{\sigma_r^2+\sigma_v^2} = \frac{\sigma_r^2}{\sigma_e^2}

這里又用到了 殘差信號(hào) 與 遠(yuǎn)端殘留信號(hào) 的不相關(guān)性,得到總誤差的能量\sigma_e^2就等于 組成誤差的兩個(gè)分量的能量和\sigma_v^2+\sigma_r^2?颊乘。

結(jié)論:在以上的假設(shè)下参淹,理論上的最優(yōu)學(xué)習(xí)率?近似等于?殘留回聲總誤差信號(hào) 的能量比。

在實(shí)際操作中乏悄,迭代第 n 步有:(其中\hat{\sigma}_r(n),\hat{\sigma}_e(n)分別是\sigma_r,\sigma_e在第 n 步得估計(jì))

\hat{\mu}_{opt}(n) = \min(\frac{\hat{\sigma}_r^2(n)}{\hat{\sigma}_e^2(n)}, 1) \quad (10)

4 量的估計(jì)

4.1 殘留回聲估計(jì)的上限

當(dāng)條件\mathbb E\{\Lambda(n+1)\} = \Lambda(n)滿足時(shí)浙值,我就達(dá)到了統(tǒng)計(jì)意義上的收斂(此時(shí),濾波器在整體上達(dá)到了平穩(wěn)狀態(tài)檩小,但系數(shù)之間或有細(xì)微變化)开呐,在公式(*)中,令\mathbb E\{\Lambda(n+1)\} = \Lambda(n)规求,并用遠(yuǎn)端信號(hào)得方差\sigma_x^2替代其估計(jì)\frac{1}{N}\sum_i|x(n-i)|^2后负蚊,可解得:

\Lambda(n) \approx \frac{\sigma_v^2}{\sigma_x^2(\frac{2}{\mu}-1)} \quad (11)

因此,如果當(dāng)前濾波器失配度滿足上式(11)颓哮,則在統(tǒng)計(jì)意義下家妆,使用最優(yōu)學(xué)習(xí)率,將不再能改善濾波器失配度冕茅。最優(yōu)學(xué)習(xí)率為\hat{\mu}_{opt} = \frac{\hat{\sigma}_r^2}{\hat{\sigma}_e^2}代入(11)式中伤极,考慮到誤差信號(hào)得方差\sigma_e^2可以估計(jì)得很準(zhǔn)確,因此我們直接使用它得期望值代入姨伤,而殘留回聲方差\sigma_r^2則用估計(jì)值\hat{\sigma}_r^2代入哨坪,即將\frac{\hat{\sigma}_r^2}{\sigma_e^2}作為學(xué)習(xí)率代入(11)式得:

\begin{aligned}(11)式 &\Leftrightarrow \Lambda(n)\sigma_x^2 \approx\frac{\sigma_v^2}{\frac{2}{\mu} - 1} \\&\Leftrightarrow \sigma_r^2 \approx \frac{\sigma_v^2}{\frac{2\sigma_e^2}{\hat{\sigma}_r^2}-1} \\&\Leftrightarrow \sigma_r^2 \approx \frac{\sigma_v^2}{\frac{2(\sigma_r^2+\sigma_v^2)}{\hat{\sigma}_r^2}-1}\end{aligned}

上式繼續(xù)整理,得到如下方程:

\begin{aligned}(11)式&\Leftrightarrow2(\sigma_r^2)^2+2\sigma_r^2\sigma_v^2-(\sigma_r^2+\sigma_v^2)\hat{\sigma}_r^2 = 0 \\&\Leftrightarrow (2\sigma_r^2-\hat{\sigma}_r^2)(\sigma_r^2-\sigma_v^2) = 0\end{aligned}

所以乍楚,殘差得 估計(jì)值 和 期望值 應(yīng)滿足:\sigma_r^2 \approx \min(\frac{1}{2}\hat{\sigma}_r^2, \sigma_v^2) \quad (12)

因此当编,在達(dá)到平穩(wěn)后,殘留回聲的估計(jì)方差徒溪,不應(yīng)該大于 2 倍的真實(shí)方差忿偷,即不能高估這個(gè)方差超過 2 倍(3 dB)。

顯然臊泌,前面對(duì)近端語音v(n)和遠(yuǎn)端語音x(n)的白噪聲假設(shè)是不合理的鲤桥;但是,我們可以到頻域進(jìn)行估計(jì)渠概,理由是:

a. 經(jīng)觀察茶凳,同一個(gè)頻點(diǎn)沿著時(shí)間軸上的相關(guān)性 比 時(shí)域數(shù)據(jù)的相關(guān)性要低嫂拴,這使得我們的假設(shè)在頻域更加可靠。

b. 在頻域贮喧,我們可以對(duì)每個(gè)頻點(diǎn)單獨(dú)計(jì)算最優(yōu)學(xué)習(xí)率:\hat{\mu}_{opt}(k, l) \approx \frac{\sigma_r^2(k,l)}{\sigma_e^2(k,l)} \quad (14)

4.2 殘留回聲的估計(jì)

a. 假設(shè)濾波器有一個(gè)和頻率無關(guān)的泄露系數(shù)\eta(l)筒狠,則可以通過下式來對(duì) 殘留回聲的方差 進(jìn)行估計(jì):

\hat{\sigma}_r^2(k,l) = \hat{\eta}(l)\hat{\sigma}_{\hat{Y}}^2(k,l) \quad (15)

下面我們來證明(15)式的合理性, 顯然根據(jù)x(n)的白噪假設(shè)箱沦,有:

\begin{aligned}\mathbb E \{ \hat{y}^2 \} &= \mathbb E \{(\sum_i \hat{w}_i x(n-i))^2\}\\&= \sum_i \hat{w}_i^2 \mathbb E \{ x(n-i)^2\}\\&= (\sum_i \hat{w}_i^2) \sigma_x^2\end{aligned}

由前面關(guān)于殘留回聲功率的結(jié)論辩恼,并代入上式有:

\begin{aligned}\sigma_r^2 &= \Lambda \sigma_x^2 \\&= \frac{\Lambda}{\sum_i \hat{w}_i^2} \mathbb E\{\hat{y}^2\} \\&= \frac{\sum_i \delta_i^2}{\sum_i \hat{w}_i^2} \sigma_{\hat y}^2\end{aligned}

在上式中,我們記\hat{\eta} = \frac{\sum_i \delta_i^2}{\sum_i \hat{w}_i^2}饱普;我們注意到?\hat{\eta}的分子和分母都是和濾波器權(quán)重的整體相關(guān)的一個(gè)值运挫,是關(guān)于 echo path 以及 echo path change 的一個(gè)量状共;而在實(shí)際中回聲路徑被認(rèn)為是緩慢變化的套耕,所以我們可以認(rèn)為?\hat{\eta}是一個(gè)緩慢變化的量。而另一項(xiàng)\sigma_{\hat y}^2是語音的能量峡继,因而是變化迅速的冯袍。

該過程同樣也能說明頻域的學(xué)習(xí)率也能分成這兩個(gè)部分。

雖然在上式中對(duì)殘留回聲方差的估計(jì)碾牌,包含了不可計(jì)算的濾波器失配度\Lambda康愤,但是從式子來看,\hat{\eta}的確可是視為濾波器的 ERLE舶吗。并且作者給出了下圖征冷,說明\hat{\eta}的倒數(shù) 與 ERLE近似程度。

ERLE與\eta的一致性

使用上式來估計(jì)殘留回聲有兩個(gè)好處:

????????1)將殘留回聲的估計(jì)轉(zhuǎn)為對(duì)兩個(gè)量的估計(jì)誓琼,一個(gè)是變化緩慢 但不易估計(jì)的泄露系數(shù)\hat{\eta}检激,另一個(gè)是變化快速 但容易估計(jì)的回聲功率\sigma_{\hat y}^2

????????2)在 double-talk 到來時(shí)腹侣,可以迅速做出反應(yīng):如下式的最優(yōu)學(xué)習(xí)率叔收,我們使用回聲的瞬時(shí)功率|\hat{Y}(k,l)|^2作為它的方差,同樣使用 誤差信號(hào)的瞬時(shí)功率|E(k,l)|^2作為誤差信號(hào)的方差:

? ??????\hat{\mu}_{opt}(k,l) = \min(\hat{\eta}(l)\frac{|\hat{Y}(k,l)|^2}{|E(k,l)|^2}, \mu_{max}) \quad (16)

????????如此,就將 學(xué)習(xí)率的自適應(yīng) 解耦成泄露系數(shù)\hat{\eta}?和 回聲功率與誤差功率之比 這兩部分,正是后者提供了對(duì) double-talk 的快速反應(yīng)能力硫眨。(而泄露系數(shù)需要較長(zhǎng)時(shí)間才能迭代到目標(biāo)值)

另外怎炊,系統(tǒng)初始化時(shí),濾波器系數(shù)為 0殿衰,所以?\hat{Y}也是 0,因此最優(yōu)學(xué)習(xí)率總是 0;為了解決這個(gè)問題芝薇,考慮在初始化后使用固定的學(xué)習(xí)率(代碼中是0.25)進(jìn)行自適應(yīng)濾波,等到濾波器系數(shù)收斂到一定程度時(shí)作儿,再使用這里提出的自適應(yīng)學(xué)習(xí)率算法洛二。

4.3 泄露系數(shù)的估計(jì)

綜上,我們就將 殘留回聲方差估計(jì)的問題,轉(zhuǎn)為對(duì) 泄露系數(shù)\eta的估計(jì)問題:

? ? 1)利用信號(hào)的非平穩(wěn)性

? ? 2)利用估計(jì)的回聲信號(hào) 和 誤差信號(hào) 之間的線性回歸值 來估計(jì)

? ? 3)基于的事實(shí)是:殘留的回聲 與 估計(jì)的回聲 是高度相關(guān)的晾嘶, 且估計(jì)的回聲 與 誤差信號(hào)中的噪聲 是無關(guān)的妓雾。

SpeexDSP 代碼中的計(jì)算過程:

? ? 1)先使用一階去 DC 濾波器 去除 估計(jì)的回聲功率 和 誤差功率譜 的 DC分量,得到 零均值的P_y,P_e垒迂,代碼中使用遞歸平均來估計(jì)均值械姻,然后分別減去均值)

? ? 2)再使用下式計(jì)算平滑的相關(guān):

? ??\begin{aligned}R_{EY} (k,l) &= (1-\beta(l))R_{EY}(k,l) + \beta(l) P_Y(k)P_E(k)\\R_{YY}(k,l) &= (1-\beta(l))R_{YY}(k,l) + \beta(l)P_Y(k)^2\end{aligned}

? ? 其中,\beta(l)是一個(gè)動(dòng)態(tài)的平滑系數(shù)机断,用于估計(jì)泄露系數(shù)楷拳,如下計(jì)算:

? ??\beta(l)= \beta_0\min(\frac{\hat{\sigma}_{\hat Y}^2}{\hat{\sigma}_e^2}, 1),其中?\beta_0是一個(gè)基礎(chǔ)平滑系數(shù)

? ? 在 Speex 代碼中吏奸,和前面的學(xué)習(xí)率一樣欢揖,使用瞬時(shí)功率 代替\beta(l)估計(jì)式中的方差。

? ? 當(dāng)遠(yuǎn)端沒有信號(hào)時(shí)奋蔚,有 beta = 0她混, 所以?R_{EY}R_{YY}保持不變,即泄露系數(shù)保持不變泊碑,這樣到下一次遠(yuǎn)端有語音(回聲)過來時(shí)坤按,能有一個(gè)合理的初始值。

????3)最后將所有的頻點(diǎn)上的相關(guān)性加起來馒过,得到頻點(diǎn)無關(guān)的泄露系數(shù)的估計(jì):

? ??\hat{\eta}(l) = \frac{\sum_k R_{EY}(k,l)}{\sum_k R_{YY}(k,l)}

5 雙講分析

分析前面的最優(yōu)學(xué)習(xí)率公式臭脓,可以發(fā)現(xiàn)該系統(tǒng)能夠處理 double-talk 場(chǎng)景:

????a. 當(dāng)近端語音突然出現(xiàn)時(shí), 公式(16)中的分母(瞬時(shí)功率)會(huì)陡然增大腹忽,從而使得學(xué)習(xí)率變得很欣蠢邸;這會(huì)持續(xù)到 double-talk 結(jié)束留凭;

? ? b. 假設(shè)近端沒有語音佃扼,但是有平穩(wěn)噪聲,則(16)中的分母保持不變蔼夜,此時(shí)學(xué)習(xí)率收到 回聲功率 和 泄露系數(shù)的影響:

? ? ? ? i)當(dāng)回聲功率增大時(shí)兼耀,學(xué)習(xí)率變大,使得收斂迅速求冷;

? ? ? ? ii)當(dāng)濾波器系數(shù)收斂時(shí)瘤运,泄露系數(shù)?\eta變小,從而學(xué)習(xí)率變小匠题,使得收斂過程更平穩(wěn)拯坟;

? ? c. double-talk 時(shí),殘留回聲 與 誤差的相關(guān)性 很小韭山,從而保持學(xué)習(xí)率很小郁季,不會(huì)造成濾波器發(fā)散冷溃;

? ? d. Echo-path 發(fā)生變化時(shí),濾波器系數(shù)完全失效梦裂,殘留回聲 與 誤差有很大的相關(guān)性似枕,從而使得學(xué)習(xí)率 迅速達(dá)到 1,從而加快收斂年柠。

6 代碼解析

6.1 循環(huán)卷積到線性卷積

在代碼實(shí)現(xiàn)時(shí)凿歼,使用FFT計(jì)算卷積,會(huì)產(chǎn)生循環(huán)卷機(jī)效應(yīng)冗恨。為了看懂代碼答憔,非電子、信息掀抹、通信專業(yè)的工程師還是要搞清楚這一點(diǎn)虐拓,才能理解代碼,下面先來分析一下為什么出現(xiàn)循環(huán)卷積:

\begin{aligned}\mathcal F[{x(n)}] &= X(k) \\\mathcal F[w(n)] &= W(k)\\\end{aligned}

其中:\mathcal F為傅立葉變換渴丸,x(n),n=0,...,N-1為某一幀數(shù)據(jù)侯嘀,w(n),n=0,...,N-1為該時(shí)刻的濾波器權(quán)重另凌。

期望使用卷積定理的等價(jià)形式\mathcal F^{-1}[\mathcal F[x(n)]\mathcal F[w(n)]]來計(jì)算時(shí)域卷積運(yùn)算(可參考任一本dsp方面的書籍)谱轨,對(duì)于離散傅立葉變換的特殊情況,我們將其展開:

\begin{aligned}y(m) &= \frac{1}{N}\sum_{k=0}^{n-1} X(k)W(k)e^{j2\pi km/N} \\&= \frac{1}{N}\sum_{k=0}^{n-1}\left (\sum_{n=0}^{N-1}x(n)e^{-j2\pi kn/N}\right) \left (\sum_{l=0}^{N-1}w(l)e^{-j2\pi kl/N}\right)e^{j2\pi km/N} \\&=\sum_{n=0}^{N-1}\sum_{l=0}^{N-1} \left(x(n)w(l) \frac{1}{N}\sum_{k=0}^{N-1}e^{-j2\pi k(n+l-m)/N} \right)\end{aligned} \tag{6.1.1}

其中等比數(shù)列計(jì)算為:\frac{1}{N} \sum_{k=0}^{N-1}e^{-j2\pi k(n+l-m)/N} = \begin{cases} 1 ,\quad n+l-m=pN, p\in\mathcal Z \\ 0 ,\quad\text{otherwise}\end{cases}

因此吠谢,只有當(dāng)l = m-n+pN時(shí)土童,才包含有效的計(jì)算,上(6.1.1)式為:

y(m)=\sum_{n=0}^{N-1}x(n)w(m-n+pN), \quad p\in \mathcal Z, \ \mathbf {s.t.}\ 0 \le m-n+pN \le N-1工坊,這是一個(gè)循環(huán)卷積献汗!見下面簡(jiǎn)單示例:

例如:當(dāng)N=8時(shí),我們計(jì)算y(3)的值有y(3) = \sum_{n=0}^{7}x(n)w(3-n+p\cdot 8)王污,如下圖所示x(n)w(l)的對(duì)齊情況:

\begin{bmatrix}x_0 &x_1& x_2& x_3&x_4&x_5&x_6&x_7\\w_3&w_2&w_1&w_0&w_7&w_6&w_5&w_4\end{bmatrix}

這是一個(gè)非因果運(yùn)算罢吃,顯然我們的濾波器不允許這種情況發(fā)生,為了避免循環(huán)卷積昭齐,可以拼接前后兩幀數(shù)據(jù)尿招,并將權(quán)重的后半段置為 0 即可,多出來的 0 將不會(huì)產(chǎn)生有效的計(jì)算阱驾,如下圖所示就谜,產(chǎn)生y(0),\dots,y(7)的過程:

\begin{bmatrix}*&*&\cdots&*&x_0 & x_1& x_2& x_3&x_4&x_5&x_6&x_7&x_8&x_9&x_{10}&x_{11}&x_{12}&x_{13}&x_{14}&x_{15} \\0&0&\cdots&0&w_7&w_6&x_5&w_4&w_3&w_2&w_1&w_0& \rightarrow y(0) \\&0&\cdots&0&0&w_7&w_6&x_5&w_4&w_3&w_2&w_1&w_0& \rightarrow y(1) \\&&&&&&&&&&&&&\cdots\\&&&&&&&&0&0&\cdots&0&w_7&w_6&x_5&w_4&w_3&w_2&w_1&w_0& \rightarrow y(7) \\\end{bmatrix}

注意:利用\mathcal F^{-1}[\mathcal F[x(n)]\mathcal F[w(n)]]計(jì)算卷積,實(shí)際上的計(jì)算過程永遠(yuǎn)都是循環(huán)卷積里覆,只不過在這里丧荐,我們通過將權(quán)重的后半段強(qiáng)行置 0 后,只有后半段的x(n)在進(jìn)行有效的計(jì)算喧枷,而此時(shí)得到的結(jié)果恰好就是線性卷積的結(jié)果虹统。

(TODO)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載弓坞,如需轉(zhuǎn)載請(qǐng)通過簡(jiǎn)信或評(píng)論聯(lián)系作者。
  • 序言:七十年代末车荔,一起剝皮案震驚了整個(gè)濱河市昼丑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌夸赫,老刑警劉巖菩帝,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異茬腿,居然都是意外死亡呼奢,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門切平,熙熙樓的掌柜王于貴愁眉苦臉地迎上來握础,“玉大人,你說我怎么就攤上這事悴品≠髯郏” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵苔严,是天一觀的道長(zhǎng)定枷。 經(jīng)常有香客問我,道長(zhǎng)届氢,這世上最難降的妖魔是什么欠窒? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮退子,結(jié)果婚禮上岖妄,老公的妹妹穿的比我還像新娘。我一直安慰自己寂祥,他們只是感情好荐虐,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著丸凭,像睡著了一般福扬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上贮乳,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天忧换,我揣著相機(jī)與錄音,去河邊找鬼向拆。 笑死亚茬,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的浓恳。 我是一名探鬼主播刹缝,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼碗暗,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了梢夯?” 一聲冷哼從身側(cè)響起言疗,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎颂砸,沒想到半個(gè)月后噪奄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡人乓,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年勤篮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片色罚。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡碰缔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出戳护,到底是詐尸還是另有隱情金抡,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布腌且,位于F島的核電站梗肝,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏切蟋。R本人自食惡果不足惜统捶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一榆芦、第九天 我趴在偏房一處隱蔽的房頂上張望柄粹。 院中可真熱鬧,春花似錦匆绣、人聲如沸驻右。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽堪夭。三九已至,卻和暖如春拣凹,著一層夾襖步出監(jiān)牢的瞬間森爽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工嚣镜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留爬迟,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓菊匿,卻偏偏與公主長(zhǎng)得像付呕,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容