WebRtc AEC核心算法之二:Partitioned block频域自适应滤波

WebRtc AEC核心算法之二:Partitioned block频域自适应滤波

本篇在上一章的基础之上,继续分析滤波器的特点。

回声的延时和滤波器的抽头

在这里插入图片描述
我们不妨先想想回声延时的问题。为了简化分析,只考虑个人终端的两种普遍情况,一种是从speaker直接反馈到mic,一种是经过反射物在折返给mic(免提情况会采集到明显的回声)。第一种回声可以忽略路径损耗,只关心设备硬件和软件的群延时,第二种需要在群延时的情况下再加上几十毫秒不等。手机硬件收发大都采用20ms为一帧,因为收发同步等原因,群延时50ms以上。按照16kHz语音采样率来看,抽头>16000*0.05(800)是最低的要求,如果希望覆盖反射回声,那滤波器的抽头就得数以千计了。这是物理原因,抽头量不可避免,如果时域方法,卷积算法会非常可观,所以频域方法在实际应用中会如此受欢迎。不仅如此,各位专家还在不遗余力地寻找更加节省运算量的方法,其中之一就是WebRTC中运用的Partioned block frequeney domain adaPtive filter(PBFDAF)。

分块频域自适应滤波-PBFDAF

尽管前文已经利用FFT实现了频域滤波,令计算量减少,但由于抽头太多,为了进一步的降低预算复杂度,将 h ( n ) h(n) h(n)等分L个相邻的、N等长的而且不交叠的段:
h ( n ) = ∑ l = 0 L − 1 h l ( n ) h(n)=\sum_{l=0}^{L-1}{h_l(n)} h(n)=l=0L1hl(n)
对于每个段,都有 h l ( n ) = h ( n ) 当 n = l N , . . . , l N + N − 1 h_l(n)=h(n) 当 n=lN,...,lN+N-1 hl(n)=h(n)n=lN,...,lN+N1。相对于众所周知的子带滤波,这种分法可以理解为对输入信号全频谱的 L L L个并行的滤波器,由此,完整地信道冲击相应 h ( n ) h(n) h(n)就在时间轴被横截为L分,变成了如下图展示的并行结构。
在这里插入图片描述
那么滤波器的输出 y ( n ) = x ( n ) ∗ h ( n ) y(n)=x(n)*h(n) y(n)=x(n)h(n)可以写成如下形式
y ( n ) = x ( n ) ∗ ∑ l = 0 L − 1 h l ( n ) = ∑ l = 0 L − 1 x ( n ) ∗ h l ( n ) = ∑ l = 0 L − 1 x ( n − l N ) ∗ h l ( n + l N ) = ∑ l = 0 L − 1 y l ( n ) \begin{aligned} y(n)&=x(n)*\sum_{l=0}^{L-1}h_l(n)\\ &=\sum_{l=0}^{L-1}x(n)*h_l(n)\\ &=\sum_{l=0}^{L-1}x(n-lN)*h_l(n+lN)\\ &=\sum_{l=0}^{L-1}y_l(n) \end{aligned} y(n)=x(n)l=0L1hl(n)=l=0L1x(n)hl(n)=l=0L1x(nlN)hl(n+lN)=l=0L1yl(n)
这样就把结果变成了输入分别通过L个并行延时的N阶滤波器了。如果利用巧妙的数据分段策略,L个并行滤波器的线性卷积可以分别独立的通过一个N个采样点延时的频域方法计算得出,不再需要NL个采样点了。
在这里插入图片描述S_in和S_out标识已经分段的信号,这些信号按照上一篇的推导,需要进行线性卷积处理,输入信号时当前块和上一块的级联,长度是2N,进入FFT之后,计算得结果存于一个FIFO结构的内存空间,也是按照N个采样点来划分的。对这些段直接进行频域相乘的滤波操作,获得的结果目前仍然是2N个频率分量。处理完的数据在输出队列里相加,然后通过IFFT处理进入输出的分段器。其他的过程按照频域滤波器的结果提取过程。最后的过程等价公式如下:
∑ l = 0 L − 1 I F F T [ X l ( j − l ) H l ] = I F F T [ ∑ l = 0 L − 1 [ X l ( j − l ) H l ] \sum_{l=0}^{L-1}IFFT[X^l(j-l)H^l]=IFFT[\sum_{l=0}^{L-1}[X^l(j-l)H^l] l=0L1IFFT[Xl(jl)Hl]=IFFT[l=0L1[Xl(jl)Hl]
上述推导是参考《On the implementation of a partitioned block frequency domain adaptive filter (PBFDAF) for long acoustic echo cancellation》而得来的。该论文还给出了时域和概算法的复杂度比较,
Δ = L N 2 N ( 4 L + 3 l o g 2 2 N ) = L N 4 L + 3 l o g 2 2 N \Delta=\frac{LN^2}{N(4L+3log_22N)}=\frac{LN}{4L+3log_22N} Δ=N(4L+3log22N)LN2=4L+3log22NLN

参考文献

[1]:《On the implementation of a partitioned block frequency domain adaptive filter (PBFDAF) for long acoustic echo cancellation》 Jose M. Paez Borrallo.etc
[2]:《Adaptive Filter Theory》Fifth Edition Simon Haykin.

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值