上海商显声学回声AEC算法

时间:2022年12月26日 来源:

    为什么又这么冷呢?我能想到的一个答案是它太难了,它非常有挑战性。下面就来看一下它的技术难点。5非线性声学回声消除的技术难点,我从6个不同的维度比较了线性的和非线性这两种回声消除问题。个维度,系统传递函数。在线性系统里面,我们认为系统传递函数是一个缓慢时变的系统,我们可以通过自适应滤波的方式去逼近这个传递函数,来有效抑制回声。而在非线性系统里面,系统传递函数通常是快变、突变的,我们如果用线性的方法去逼近的话,会出现滤波器的更新速度,跟不上系统传递函数变化的速度,就会导致声学回声消除不理想。第二个维度是优化模型,在线性里面我们是有一套非常完备的线性优化模型,从目标函数的构建到系统优化问题的求解,整个脉络是很清晰的。而在非线性的系统里面,目前是缺少一种有效的模型来对它进行支撑的。接下来的四个维度对应4个问题,它们是线性回声消除领域普遍存在的4个难点问题,这些问题在非线性领域也同样存在。比如强混响问题,我们如果在一个小型会议室里开视频会议,那么声音会经过多次墙壁反射,带来很强的混响,混响的拖尾时间会很长。如果想抑制这样的强混响回声,就需要把线性滤波器的长度加长。

    声学回声消除应用技术。上海商显声学回声AEC算法

上海商显声学回声AEC算法,声学回声

该技术的出现旨在消除这种因远程网络会议所带来的回授现象,以遏制首先次回声产生所需的必要条件来遏制多次回声的出现。为什么要费那么大周折去抑制回声?这个话题应该不言而喻了。会议、语音扩声讲究的即是STI语音清晰度(可懂度),而回声是语言清晰度的比较大。设想踩脚跟式的语音信号传达到耳朵,听者难受,讲者费劲,对于这样的语音会议来说,那必将是一场灾难。我们把声学回声消除这个技术变成一张实体的插件(设备插卡),在系统中,为实现首先次回声过滤(过滤回声源则过滤多次回声)。这个技术应该插入在系统的哪个环节呢?我们不妨来找找系统中具备近乎相同/相似信号的一级进出环节。该图片经我司设计员制作后作者再编辑通过上图的分析,我们并不难发现一组具备相似信号的输入输出环节。而AEC技术认为,在这里对回声下手是治根的办法!市面上有多种类的回声消除器,也有部分抑制器,其算法和解决办法各有不同,本文就不详细阐释了。须知,通过对具有相似性极高的输入、输出信号的比对,约掉这一具备相似信号的输出,即切断了回授的根源,A地将不再听到回声现象。笔者也经常遇到有用户因远程会议本地有回声而采购了带有AEC回声消除功能的处理器。河北录播声学回声消除算法声学回声往往会经过多个不同路径的多次反射之后到达接收端。

上海商显声学回声AEC算法,声学回声

    黑色这条线是标准NLMS算法的回声抑制比。我们可以看到,NLMS算法在收敛之后,回声抑制比只能到10个分贝左右,相对比较低。而双耦合算法在收敛之后,可以达到25个分贝以上,也就是说它比NLMS算法多15个分贝,这个优势是很明显的。接下来我们再看第二个示例,针对弱非线性失真的情况,左边是语谱,右边是回声抑制比。我们评估单讲性能的主要指标是回声抑制比和收敛速度。首先看一下NLMS算法,它在收敛之后,大概可以抑制22~25个分贝。这个算法的收敛速度很慢,大概经过100多帧之后才会进入到相对收敛的状态。再来看一下双耦合算法,在稳定之后,可以抑制35~40个分贝,比NLMS算法大概提升15~20个分贝的回声抑制比。同时它还有一个很明显的优势:收敛速度很快,几乎是回声到了之后,他瞬间就进入到收敛状态。接下来这个是针对不同手机机型的回声抑制比的比较。红色是双耦合算法,蓝色是NLMS算法,从这组数据里面,我们可以看到双耦合算法比NLMS算法普遍提升了大概10个分贝以上的回声抑制比,具有比较大的优势。再进入双讲测试场景。我首先介绍一下测试的示例,这组数据是一个视频会议的数据,左边这个是原始的麦克信号语谱,右边这个是回声参考信号语谱。

    

    只需要近端采集信号即可,傲娇的回声消除需要同时输入近端信号与远端参考信号。有同学会问已知了远端参考信号,为什么不能用噪声抑制方法处理呢,直接从频域减掉远端信号的频谱不就可以了吗?行为近端信号s(n),已经混合了近端人声和扬声器播放出来的远端信号,黄色框中已经标出对齐之后的远端信号,其语音表达的内容一致,但是频谱和幅度(明显经过扬声器放大之后声音能量很高)均不一致,意思就是:参考的远端信号与扬声器播放出来的远端信号已经是“貌合神离”了,与降噪的方法相结合也是不错的思路,但是直接套用降噪的方法显然会造成回声残留与双讲部分严重的抑制。接下来,我们来看看WebRTC科学家是怎么做的吧。信号处理流程WebRTCAEC算法包含了延时调整策略,线性回声估计,非线性回声抑制3个部分。回声消除本质上更像是音源分离,我们期望从混合的近端信号中消除不需要的远端信号,保留近端人声发送到远端,但是WebRTC工程师们更倾向于将两个人交流的过程理解为一问一答的交替说话,存在远近端同时连续说话的情况并不多(即保单讲轻双讲)。因此只需要区分远近端说话区域就可以通过一些手段消除绝大多数远端回声。

     AEC声学回声,电话的扬声器的声音(包括反射声),被麦克风拾取传送给远端,使远端说话人又听到自己的声音。

上海商显声学回声AEC算法,声学回声

    在这里我将整个回声路径分成了A、B、C、D四个部分。我们一起来看一下,ABCD里面哪一个环节有可能是非线性的?答案应该是B。也就是回声路径里面的功率放大器和喇叭,具体的原因稍后会做详细分析。接下来我想再解释一下为什么A、C、D它们不是非线性的。首先这里的A和D比较好判断,他们都属于线性时不变系统。比较难判断的是C,因为在一些比较复杂的场景下,声学回声往往会经过多个不同路径的多次反射之后到达接收端,同时会带有很强的混响,甚至在更极端情况下,喇叭与麦克风之间还会产生相对位移变化,导致回声路径也会随时间快速变化。这么多因素叠加在一起,往往会导致回声消除算法的性能急剧退化,甚至完全失效。有同学可能会问,难道这么复杂的情况,不是非线性的吗?我认为C应该是一个线性时变的声学系统,因为我们区分线性跟非线性的主要依据是叠加原理,前面提到的这些复杂场景,它们依然是满足叠加原理的,所以C是线性系统。这里还要再补充一点,细心的朋友会发现B里面有一个功率放大器,同时在C里面也有一个功率放大器,为什么经B的功率放大器放大之后,可能带来非线性失真,而C的功率放大器不会产生非线性失真呢?二者的主要区别在于B放大之后输出是一个大信号。

    在构建滤波器模型的过程中结合了非线性声学回声的一些特性。北京语音识别声学回声供应商

介绍非线性声学回声消除的公开文献也少之又少。上海商显声学回声AEC算法

    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。②大延时检测是基于远近端数据相似性在远端大缓存中查找相似的帧的过程,其算法原理有点类似音频指纹中特征匹配的思想。大延时调整的能力是对固定延时调整与线型滤波器能力的补充,使用它的时候需要比较慎重。需要控制调整的频率,以及控制造成非因果的风险。

     上海商显声学回声AEC算法

深圳鱼亮科技有限公司是一家服务型类企业,积极探索行业发展,努力实现产品创新。公司致力于为客户提供安全、质量有保证的良好产品及服务,是一家有限责任公司(自然)企业。公司业务涵盖智能家居,语音识别算法,机器人交互系统,降噪,价格合理,品质有保证,深受广大客户的欢迎。深圳鱼亮科技将以真诚的服务、创新的理念、***的产品,为彼此赢得全新的未来!

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