安徽电视声学回声分析

时间:2022年04月25日 来源:

    深入浅出WebRTCAEC(声学回声消除),前言:近年来,音视频会议产品提升着工作协同的效率,在线教育产品突破着传统教育形式的种种限制,娱乐互动直播产品丰富着生活社交的多样性,背后都离不开音视频通信技术的优化与创新,其中音频信息内容传递的流畅性、完整性、可懂度直接决定着用户之间的沟通质量。自2011年WebRTC开源以来,无论是其技术架构,还是其中丰富的算法模块都是值得我们细细品味,音频方面熟知的3A算法(AGC:Automaticgaincontrol;ANS:Adaptivenoisesuppression;AEC:Acousticechocancellation)就是其中闪闪发光的明珠。本文章将结合实例解析WebRTCAEC的基本框架和基本原理,一起探索回声消除的基本原理,技术难点以及优化方向。回声的形成WebRTC架构中上下行音频信号处理流程,音频3A主要集中在上行的发送端对发送信号依次进行回声消除、降噪以及音量均衡(这里只讨论AEC的处理流程,如果是AECM的处理流程ANS会前置),AGC会作为压限器作用在接收端对即将播放的音频信号进行限幅。那么回声是怎么形成的呢?如图2所示,A、B两人在通信的过程中,我们有如下定义:x(n):远端参考信号,即A端订阅的B端音频流,通常作为参考信号;y(n):回声信号,即扬声器播放信号x。

    声学回声的功能怎么样?安徽电视声学回声分析

    首先是优化准则。NLMS算法是基于小均方误差准则,而双耦合算法是基于小平均短时累计误差准则,所以他们的优化准则是不一样的。第二个就是理论的比较好解,NLMS算法具有Wiener-Hopf方程解,而双耦合算法的线性滤波器也具有Wiener-Hopf方程解,非线性滤波器具有小二乘解。第三个维度就是运算量,NLMS运算量是O(M),M是滤波器的阶数,而双耦合算法运算量后面会多一个O(N2),因为他有两个滤波器,N是非线性滤波器的阶数,这里的平方是因为小二乘需要对矩阵进行求逆运算,所以它的运算量比线性的NLMS运算量要大很多。第三个就是控制机制,NLMS算法只有一个滤波器,它的控制主要是通过调整步长来实现的,控制起来要相对简单。而双耦合算法需要对两套滤波器进行耦合控制,控制的复杂度要高很多。实验结果分析,这里我主要是分了两个实验场景比较双耦合算法和NLMS算法的性能,个是单讲测试场景,第二个就是双讲测试场景。首先看一下单讲测试场景,个示例是针对强非线性失真的情况,左边分别原信号的语谱,NLMS算法进行回声消除之后的语谱、双耦合算法的语谱。颜色越深,能量越大。右边这个的是回声抑制比,值越大越好,红色的曲线是双耦合算法的回声抑制比。

    安徽电视声学回声分析深入浅出 WebRTC AEC(声学回声消除)。

    3.双耦合滤波器设计当滤波器的结构确定下来之后,我们要去设计滤波器系数了。设计过程我把它总结成了三步,第一步就是构建优化准则,第二步是求解滤波器的权系数——Wl和Wn,一步就是构建耦合机制。第一步就是构建优化准则。我觉得构建优化准则,应该是整个滤波器设计里面重要的一步,因为它决定了滤波器性能的上限。什么样的优化准则是一个好的优化准则呢?我觉得好的优化准则需要跟问题的物理特性有效匹配起来,所以在构建优化准则之前,我们先对非线性声学回声的特性进行分析,希望通过这种分析去挖掘非线性声学回声的一些物理特性。我们的分析是基于上面的函数,我们称它为短时相关度,它所表示的是两个信号,在一个短时的观测时间窗“T”这样一个尺度范围内的波形的相似程度,需要注意的是这个函数它是统计意义上的,因为我们对它进行了数学期望运算。同时在分子的一项我们还加了一个相位校正因子,目的是为了将这两路信号的初始相位对齐。基于前面构建的短时相关度函数,我们对大量声学回声数据进行分析,并挑选了几组比较典型的数据:绿色的曲线对应的是一组线性度非常好的回声数据。我们从这个数据上可以看到,在整个时间T的变化范围内,它的短时相关度都非常高。

    

    达到,接近于1。黄色曲线,对应的数据具有比较弱的非线性失真,所以在时间T变大了之后,短期相关度逐渐降低,趋于一个相对平稳的值。而红色曲线是我们选的一条具有强非线性失真的数据,为了对这三组数据进行有效对比,我们还给出了一条蓝色曲线,这条曲线是信号与噪声的短时相关度,它在整个时间T范围内都很小。通过这样一组曲线的对比,会得到两个结论,个结论就是我们构建的短时相关度函数,能够相对客观反映这个声学系统的线性度特征,线性度越好,这个值会越大。第二个结论:对于非线性失真很强的系统,其在短时观测窗内(如T<100ms)依然具有较强的相关度,这从红色的曲线可以看出来。也正是基于这样的特征,我们接下来就构建了一种新的误差函数,称之为“短时累积误差函数”。大家可以注意到我们在一个观测时间窗T内,对残差进行了累积。基于这样的误差函数,我们进一步构建了一种新的优化准则,称为“小平均短时累计误差准则”。我们希望通过优化准则的约束,得到的滤波器权系数能够满足两个特性,个特性是滤波器在统计意义上能够达到比较好,即全局比较好,因此我们在目标函数里加入了数学期望运算。同时。

     通过这种分析去挖掘非线性声学回声的一些物理特性。

    如果设置nlp_mode=kAecNlpAggressive,α大约会在30左右。如果当前帧为近端帧(即echo_state=false),假设第k个频带hNl(k)=,hNl(k)=hNl(k)^α=,即使滤波后的损失听感上几乎无感知。如图8(a),hNl经过α调制之后,幅值依然很接近。如果当前帧为远端帧(即echo_state=true),假设第k个频带hNl(k)=,hNl(k)=hNl(k)^α=,滤波后远端能量小到基本听不到了。如图8(b),hNl经过α调制之后,基本接近0。经过如上对比,为了保证经过调制之后近端期望信号失真小,远端回声可以被抑制到不可听,WebRTCAEC才在远近端帧状态判断的的模块中设置了如此严格的门限。另外,调整系数α过于严格的情况下会带来双讲的抑制,如图9第1行,近端说话人声音明显丢失,通过调整α后得以恢复,如第2行所示。因此如果在WebRTCAEC现有策略上优化α估计,可以缓解双讲抑制严重的问题。延时调整策略回声消除的效果与远近端数据延时强相关,调整不当会带来算法不可用的风险。在远近端数据进入线性部分之前,一定要保证延时在设计的滤波器阶数范围内,不然延时过大超出了线性滤波器估计的范围或调整过当导致远近端非因果都会造成无法收敛的回声。先科普两个问题:。1)为什么会存在延时?首先近端信号d。

   非线性声学回声产生的原因。安徽电视声学回声分析

不上系统传递函数变化的速度,就会导致声学回声消除不理想。安徽电视声学回声分析

    WebRtcAec_Process接口如上,参数reported_delay_ms为当前设备需要调整延时的目标值。如某Android设备固定延时为400ms左右,400ms已经超出滤波器覆盖的延时范围,至少需要调整300ms延时,才能满足回声消除没有回声的要求。固定延时调整在WebRTCAEC算法开始之初作用一次,为什么target_delay是这么计算?inttarget_delay=startup_size_ms*self->rate_factor*8;startup_size_ms其实就是设置下去的reported_delay_ms,这一步将计算时间毫秒转化为样本点数。16000hz采样中,10ms表示160个样本点,因此target_delay实际就是需要调整的目标样本点数(aecpc->rate_factor=aecpc->splitSampFreq/8000=2)。我们用330ms延时的数据测试:如果设置默认延时为240ms,overhead_elements次被调整了-60个block,负值表示向前查找,正好为60*4=240ms,之后线性滤波器固定index=24,表示24*4=96ms延时,二者之和约等于330ms。②大延时检测是基于远近端数据相似性在远端大缓存中查找相似的帧的过程,其算法原理有点类似音频指纹中特征匹配的思想。大延时调整的能力是对固定延时调整与线型滤波器能力的补充,使用它的时候需要比较慎重。需要控制调整的频率,以及控制造成非因果的风险。

     安徽电视声学回声分析

信息来源于互联网 本站不为信息真实性负责