广州机器人唤醒声学回声降噪算法

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

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

     非线性声学回声消除技术。广州机器人唤醒声学回声降噪算法

    什么是非线性声学回声?,什么是非线性的声学回声?这里我给出了一张图,的是声学回声的路径图,图的左边对应的是发射端,右边对应的是接收端。我们发出的信号首先要经过D/A变换,从数字域变换到模拟域,然后再经过功率放大器,放大之后驱动喇叭,这样就会发出声音。发出来的声音经过空气信道传播之后,到了接收端被麦克风采集到,然后再次经过功率放大器,再通过A/D变换,从模拟域又变回到数字域。那么这里的y[k]就是我们收到的回声信号。,我们接收到的回声y[k]到底是线性回声还是非线性回声呢?或者说我们应该怎么去判断它?我觉得要解决这个问题,就是要认识清楚这里面的每一个环节,看看它们到底是线性系统还是非线性系统,如果所有的环节都是线性的话,那么很自然y[k]就是一个线性的回声,否则只要有一个环节是非线性的,那么这个回声就是非线性回声。 广东语音交互声学回声产品介绍AEC声学回声,电话的扬声器的声音(包括反射声),被麦克风拾取传送给远端,使远端说话人又听到自己的声音。

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

   

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

     推出的双耦合的声学回声消除算法以及实验检验结果。

    至于双讲恢复能力WebRTCAEC算法提供了{kAecNlpConservative,kAecNlpModerate,kAecNlpAggressive}3个模式,由低到高依次不同的抑制程度,远近端信号处理流程,NLMS自适应算法(上图中橙色部分)的运用旨在尽可能地消除信号d(n)中的线性部分回声,而残留的非线性回声信号会在非线性滤波(上图中紫色部分)部分中被消除,这两个模块是WebrtcAEC的模块。模块前后依赖,现实场景中远端信号x(n)由扬声器播放出来在被麦克风采集的过程中,同时包含了回声y(n)与近端信号x(n)的线性叠加和非线性叠加:需要消除线性回声的目的是为了增大近端信号X(ω)与滤波结果E(ω)之间的差异,计算相干性时差异就越大(近端信号接近1,而远端信号部分越接近0),更容易通过门限直接区分近端帧与远端帧。非线性滤波部分中只需要根据检测的帧类型,调节抑制系数,滤波消除回声即可。下面我们结合实例分析这套架构中的线性部分与非线性分。线性滤波线性回声y'(n)可以理解为是远端参考信号x(n)经过房间冲击响应之后的结果,线性滤波的本质也就是在估计一组滤波器使得y'(n)尽可能的等于x(n),通过统计滤波器组的比较大幅值位置index找到与之对齐远端信号帧,该帧数据会参与相干性计算等后续模块。

     非线性的声学回声消除是一个很有挑战的研究方向。广东语音交互声学回声产品介绍

实现对整个声学回声路径的变化进行有效跟进。广州机器人唤醒声学回声降噪算法

我们比较这两个之后就会发现,双讲段主要出现在中间这一段。我们评估双讲性能的主要指标是回声抑制比和近端语音失真度。上面这是经过回声消除之后的语谱,中间的是NLMS算法的结果。我们可以看到它的回声抑制不是很理想,不管在单讲段还是在双讲段,都有比较多的回声残留。而下面这个是采用双耦合算法得到的语谱,可以看到在单讲和双讲里面回声抑制得都比较干净,并且在双讲里,对近端语音的损伤也很小。这个数据对应视频会议场景,因此还需要做一步NLP的处理。上面这个就是基于双耦合算法,做了NLP之后的输出结果。我们可以看到处理完之后,整个语谱很清晰,回声去得很干净,而且语谱没有太大损伤,双讲很通透。我再来简单总结一下,主要是介绍了三个方面的内容,个就是认识了非线性声学回声、产生的原因、研究现状以及技术难点。接下来重点介绍了华为云音视频的双耦合声学回声消除算法,我们的主要贡献体现在两个方面,个方面就是构建一种双耦合自适应滤波器结构;第二个就是提出了小平均短时累计误差准则并进行求解。通过求解之后,我们会得到双耦合滤波器的线性滤波器是具有Wiener-Hopf方程解的比较好解这种形式,然后非线性滤波器具有小二乘解。广州机器人唤醒声学回声降噪算法

深圳鱼亮科技有限公司主要经营范围是通信产品,拥有一支专业技术团队和良好的市场口碑。公司业务分为智能家居,语音识别算法,机器人交互系统,降噪等,目前不断进行创新和服务改进,为客户提供良好的产品和服务。公司从事通信产品多年,有着创新的设计、强大的技术,还有一批**的专业化的队伍,确保为客户提供良好的产品及服务。在社会各界的鼎力支持下,持续创新,不断铸造***服务体验,为客户成功提供坚实有力的支持。

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