一种基于子带信噪比估计的低复杂度双端检测方法与流程
本发明涉及回声消除技术领域,具体涉及基于子带信噪比估计的低复杂度双端检测方法。
背景技术:
随着iot技术的发展,越来越多的智能终端都具有高保真高采样率的音视频通讯功能,而该类终端设备一般至少具有一个麦克风和一个扬声器,因此声学回声抵消器是智能语音终端的关键模块。一般线性回声抵消器可以抑制25db左右,而对于残留的非线性回声和背景噪声将会严重影响双端检测器,若双端检测器不能在发生双讲时及时冻结滤波器,而是在自适应滤波器发散的时候再冻结滤波器,那么双讲将会有明显回声或因为非线性抑制器的原因导致明显的切音断句,无法进行正常的双向沟通。
声学回声抵消器的传统方法是采用有限长的fir滤波器来估计扬声器和麦克风之间的耦合路径,在工程中,考虑计算资源有限,一般采用频域nlms或二阶ap算法。在滤波器收敛过程中,若近端产生人声或背景噪声等干扰信号,会使自适应滤波器的学习过程发生偏离,因此回声抵消器一般都需要一个双端检测模块。当双讲判决因子达到某一阈值时,系统冻结滤波器步长,避免系统的发散。然而传统的双端检测模块一般有基于能量比较的策略和基于远端和近端的相关性进行判定的策略。但其缺点是固定的阈值门限很难选择,背景环境发生变化,系统就难以保持之前的最佳工作状态。而归一化的自相关判决方法可以较好地改善阈值参数的敏感性,但在不同信噪比的噪声环境下,固定阈值仍然是难以选择。因此,本发明的创新在于提出一种根据背景信噪比来自适应地修改双端检测判决阈值,使双端检测器能在多种信噪比的场景下保持较好的性能。
技术实现要素:
本发明的目的是提高噪声和混响环境下双端检测器的准确率,针对双端检测算法在应对背景噪声变化时性能下降的问题。本发明提出一种结合子带信噪比估计的双端检测方法,该方法具有低计算复杂度,适用于实时音频会议系统中的回声抵消器。
一种基于子带信噪比估计的低复杂度双端检测方法,包括以下步骤:
步骤(a),对当前第i帧的远端参考信号x(i),麦克风接收信号d(i),分别通过分析滤波器组和降采样器得到第m子带的参考信号xm(i)和第m子带的麦克风信号dm(i);
步骤(b)在对数域计算语音信号包络和噪声信号包络,并估计信噪比;
步骤(c)计算双端检测器的判决因子;
步骤(d)对自适应滤波器的步长μ(i,m)进行修正;
步骤(e)根据计算的滤波器步长μ(i,m),对滤波器系数
步骤(f)利用更新后的滤波器系数对当前麦克风输入帧计算误差em(i);
步骤(g)将回声消除器计算出的误差em(i)通过升采样器和综合滤波器,得到最终的输出信号e,并将其输出到系统输出缓冲区;之后返回步骤(a),处理下一帧信号。
本发明采样上述技术方案,与现有技术相比具有以下的优点:
(1)通过跟踪背景噪声等级,估计实时信噪比,并将信噪比信息映射加权到双端判决的阈值参数上。在噪声和混响环境下,能使双端判决因子的阈值根据背景环境的信噪比进行自适应变换,实现滤波器能在各种信噪比情况下,有效检测出双讲状态,避免出现滤波器发散的现象。
(2)在计算双端判决因子时,采样双判决因子,并将两个判决因子加权生成一个最终的判决因子,这样做的好处是避免多阈值的参数的配置,同时也能很好地结合双判决因子地判决特性,该策略能有效提高双判决因子地联合判决能力,并能降低固定阈值参数选取困难。
(3)该方法具有较低的计算复杂度,通过降采样技术,将长数据流降低为短数据流,同时保证了双端检测的精度。适合智能音箱、数字助听器等低功耗的设备。该方法在双端检测精度、抗噪声性能和计算复杂度三者之间取得的平衡较为合适。
附图说明
图1是本发明的低复杂度回声抵消系统框图。
图2是本发明的用于语音会议系统的具有抗噪声特性的回声消除方法的流程图。
图3是本发明信噪比估算方法的流程图。
具体实施方式
下面结合附图对本发明的技术方案进行详细说明:
一种基于子带信噪比估计的低复杂度双端检测方法,包括以下步骤:
步骤(a),对当前第i帧的远端参考信号x(i),麦克风接收信号d(i),分别通过分析滤波器组和降采样器得到第m子带的参考信号xm(i)和第m子带的麦克风信号dm(i)。
步骤(b)估计信噪比,信噪比估计方法流程如图3所示:
(b1)取第i帧的第m子带的麦克风信号dm(i)的最大值,并将其转到对数域,计算公式为:式(1),得到第i帧的第m子带的阶梯包络值ddb(i,m)。
ddb(i,m)=20·log|dm(i)|(1)
(b2)估计语音信号包络sdb(i,m),语音包络采用一阶iir网络,其计算公式为式(2):
sdb(i,m)=αsdb(i-1,m)+(1-α)ddb(i,m)(2)
其中α为一阶平滑因子,0<α<1,一般取0.96;
(b3)估计噪声包络,噪声包络的估计采用二元状态机的策略,计算公式为式(3)
其中β为噪声包络估计器的平滑因子,0<β<1一般取0.96。
(b4)计算信噪比,通过步骤(b2)和(b3)分别估计出第i帧的第m子带的语音包络sdb(i,m)和噪声包络ndb(i,m),可以直接在db域相减,得到第i帧的第m子带的信噪比,计算公式为式(4):
snr(i,m)=sdb(i,m)-ndb(i,m)(4)
(b5)将子带信噪比转化为子带加权因子。因为子带信噪比snr(i,m)反映了第i帧的第m子带的噪声和干扰程度,因此提出将子带信噪比snr(i,m)通过一个非线性函数映射到每个子带的步长更新的加权系数sd(i,m),取值范围为[0,1],计算公式为式(5)
其中τ为sigmoid函数的斜率,一般取0.5。
(b6)将sd(i,m)加权到双端检测判决阈值上,得到加权的阈值参数t′(i,m),其计算公式为公式(6):
t′(i,m)=t·sd(i,m)(6)
其中t为固定阈值,一般取0.65。
步骤(c)计算双端检测器的判决因子:
(c1)计算第一判决因子ξ1(i,m),计算麦克风信号dm(i)和估计滤波器
(c2)计算第二判决因子ξ2(i,m),计算麦克风信号dm(i)和残差信号em(i)之间的互相关系数ξ2(i,m),计算公式为式(8),其中
(c3)将两个判决系数ξ1(i,m)和ξ2(i,m)通过加权生成一个最终的判决因子。因为当双讲发生时,第一判决因子ξ1(i,m)会下降,而无双讲时,ξ1(i,m)接近1,而对于ξ2(i,m),双讲发生时,第二判决因子ξ2(i,m)会增加,因此讲ξ1(i,m)与1-ξ2(i,m)加权为一个最终的判决因子ξ(i,m),其计算公式见式(9)所示,如此ξ1(i,m)和1-ξ2(i,m)的变化方向一致。
ξ(i,m)=ηξ1(i,m)+(1-η)(1-ξ2(i,m))(9)
步骤(d)修正自适应步长μ(i,m):
根据判决因子ξ(i,m)和阈值t′(i,m),对自适应滤波器的步长μ(i,m)进行修正,修正公式为式(10):
其中μ0为固定步长,可取为1。
步骤(e)根据计算的滤波器步长μ(i,m),对滤波器系数
其中n为时域滤波器的标号,n取[0,n-1],n为滤波器长度,δ为一个极小数,取0.00001。
步骤(f)利用更新后的滤波器系数对当前麦克风输入帧计算误差em(i),计算公式为公式(12),
步骤(g)将回声消除器计算出的误差em(i)通过升采样器和综合滤波器,得到最终的输出信号e,并将其输出到系统输出缓冲区。之后返回步骤(a),处理下一帧信号。
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除