一种应用于回声抵消系统的双端通话检测方法与流程

文档序号:16888706发布日期:2019-02-15 22:52阅读:704来源:国知局
一种应用于回声抵消系统的双端通话检测方法与流程

本发明涉及电子通信技术领域,具体涉及一种应用于回声抵消系统的双端通话检测方法,尤其是一种基于信号包络检测(envelopedetection,env)和互相关估计(normalizedcrosscorrelation,ncc)的双端通话检测(doubletalkdetection,dtd)方法。



背景技术:

在声学回声消除(acousticechocancellation,aec)系统中,自适应滤波技术用于消除对话期间的回声。其中一个主要问题是处理双端通话,在双端通话期间,由于远端语音信号x(n)与近端语音信号s(n)的不相关特性,近端信号s(n)表现为一个很强的干扰信号,使得自适应滤波算法性能下降,甚至出现自适应滤波器发散,导致远端讲话人听到自己的回声,这是非常糟糕的体验。自从第一种基于自适应滤波器的回声消除器的发展以来,已经提出了几种方法来检测双端通话,从而避免滤波器发散。图1给出了具有双端通话检测功能的aec框图:如图1所示,传统的ncc算法在aec系统中的应用是通过计算麦克风信号y(n)和误差信号e(n)之间的互相关系数来判定是否出现双端通话。

根据dtd的检测结果,如果不存在双端通话,自适应滤波器可以更新其系数,反之,自适应滤波器停止更新。目前,最为常见的dtd算法有geigel和ncc算法。geigel算法因其简单易实现而被广泛使用,由于回声路径中的信号衰减,回声的能量通常远小于远端语音的能量。通过当前的麦克风输入信号和一段时间之内的扬声器输出信号的最大值做对比来判断是否发生双端通话。但是这个方法的性能还取决于自适应滤波器的输出和实际的应用环境。在信噪比较低的环境下,通常会出现错误的检测结果,导致滤波器发散。ncc算法是通过比较麦克风和误差信号之间的互相关系数来判定是否出现双端通话。由于ncc算法的简单性,如果采用麦克风和误差信号来计算互相关,在自适应滤波器的初始收敛周期内麦克风和误差信号之间的互相关性很高,导致出现错误的检测结果。

理论上来说,在双端通话期间,麦克风输入信号能量大于远端信号能量。但是在实际应用环境中,室内脉冲响应和回声路径是未知的,当回声的延迟较长将对双端检测系统有影响。在这种情况下,麦克风信号可能低于远端输入能量,可能导致错误的双端通话判定。虽然这种情况很少发生,但是一旦发生,可能导致滤波器发散而降低系统性能。



技术实现要素:

本发明的目的是:针对上述已有方法的问题,提出一种基于信号包络检测(env)和ncc算法相结合的双端通话检测dtd方法,以期能准确判断双端通话的开始与结束,提升整个aec系统的性能,从而更好地应用于实际场景。

为了达到上述目的,本发明所采用的技术方案是:

一种应用于回声抵消系统的双端通话检测方法,其特征在于,所述方法包括如下步骤:

步骤1,计算远端信号和麦克风信号的信号包络,得出判定函数ξenv(n),再与设定的阈值t进行比较判断双端通话是否发生;

步骤2,根据步骤1的判断结果,如果判断发生双端通话,则滤波器停止更新,否则,利用远端信号和麦克风信号进行ncc计算;

步骤3,利用步骤2得到的ncc判定式得到最终的判定函数η(n),将ncc计算结果与设定的阈值k进行比较,最终确定双端通话是否发生,如果判断发生双端通话,则滤波器停止更新,否则,滤波器继续更新。

进一步的,所述步骤1的具体实现过程包括:在计算信号包络中,考虑信号包络上升和下降的两种情况分别计算,这样麦克风信号x(n)的信号包络可以使用以下公式计算:

其中,λ是遗忘因子,它定义为包络检测器对信号幅度的快速变化作出反应的速度,用于精确估计信号能量,0.85<λ<0.99;

麦克风的输入信号y(n)包括近端语音信号s(n),回声信号d(n),近端噪声信号b(n):

y(n)=s(n)+d(n)+b(n)(2)

假设回声信号d(n)的能量与远端信号x(n)相比较低,在双端通话期间,麦克风信号y(n)的能量大于远端信号x(n)的能量,可以得到信号包络不等式:

vy(n)>vd(n)+vb(n)(3)

在单边通话期间,可以近似得到:

vy(n)≈vd(n)+vb(n)(4)

因此,双端通话检测应该基于回声和噪声的信号包络,回声信号d(n)可以使用自适应滤波器产生的回声估计来代替,背景噪声的包络可以通过恒定的阈值ε来估计,在双端通话期间,采用与远端信号x(n)成比例的近似回声来判断双端通话,可以得到不等式:

vy(n)>vd(n)+φ(n)vx(n)+ε(5)

其中,φ(n)是滤波器系数的发散度量,φ(n)≥0,在系统工作中,φ(n)应该随着滤波器收敛而降低并在收敛期间接近零,滤波器系数的梯度向量的范数可以满足这个条件,在随着自适应滤波器收敛而单调下降,在某一时刻,自适应算法更新时,滤波器系数w(n)随着△w(n)而改变,可以得到:

其中,是比例常数,在频域自适应滤波器的情况下,根据帕赛瓦尔定理可知一个信号的能量恒等于此信号在完备正交函数集中各分量能量之和,因此w(n)可以使用它的dft之和代替,计算公式如下:

因此,可得到双端通话判定函数如下:

将ξenv(n)与设定的阈值t进行比较,如果ξenv(n)>t,则判定发生双端通话。

进一步的,所述步骤2的具体实现过程包括:根据步骤1的结果,如果判定发生双端通话,则滤波器停止更新,否则,利用远端信号和麦克风信号进行ncc计算;

ncc算法是利用远端信号x(n)与麦克风信号y(n)来构造检测公式:

其中,rxy=e[x(n)y(n)]=rxxh,是麦克风信号的方差,且有:

其中,rxx是x(n)的自相关矩阵,当没有近端信号存在时,判定函数ξncc(n)=1,双端通话期间,麦克风信号包含近端语音,因此相关系数会降低,当存在近端信号时0<ξncc(n)<1,因此,设置一个略小于1的常数k作为阈值,然后将判定函数ξncc(n)与k比较来判断是否存在双端通话,如果ξncc(n)<k,则表示存在双端通话。

进一步的,所述步骤3的具体实现过程包括:当信号包络检测无法准确的判断双端通话的发生时,ncc将作为最终的判断,利用步骤2得到的ncc判定式,最终的判定函数如下:

当η(n)=1时则判定为发生双端通话,滤波器停止更新,否则,判定为单边通话,滤波器继续更新。

与现有技术相比,本发明的有益效果是:本发明提出的基于env和ncc算法相结合的dtd方法,其优点在于:与传统的双端通话检测算法相比,该方法可以准确地判断双端通话的开始与结束,避免了滤波器的发散,提高了回声抵消系统性能。

附图说明

图1是现有的具有双端通话检测功能的aec框图;

图2是本发明提出的基于env和ncc的dtd方法的流程图;

图3是本发明提出的基于env和ncc的dtd方法的框图;

图4是三种dtd方法的pm性能比较;

图5是三种dtd方法的pf性能比较;

图6是近端语音信号、远端语音回声信号、麦克风接收的信号;

图7是三种dtd方法的实验结果。

具体实施方式

为了便于本领域普通技术人员理解和实施本发明,下面结合实施例对本发明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不用于限定本发明。

本发明提出一种基于信号包络检测和互相关估计相结合的双端通话检测方法。该方法先使用两个信号x(n)和y(n)来判断双端通话,再采用互相关估计来减少双端通话检测误差。当信号包络信息不能准确的判断双端通话时,互相关估计将会确定双端通话的最终判断。该方法可以正确判断近端语音的开始和结束,从而精确检测出现双端通话的时刻。

本发明中将信号包络检测和互相关估计算法相结合形成一个新的dtd方法,该方法有更高的检测精度,在回声路径发生改变时能快速适应,将性能调整到最优,同时不会增加太多的计算复杂度。提出的基于env和ncc的dtd方法框图如图3所示。该方法先使用远端信号x(n)和麦克风信号y(n)进行信号包络检测来判断双端通话,再采用x(n),y(n)两个信号计算互相关来减少双端通话检测误差。当信号包络信息不能准确的判断双端通话时,互相关估计将会确定双端通话的最终判断。该方法可以正确判断近端语音的开始和结束,从而精确检测出现双端通话的时刻。

在计算信号能量包络中信号能量是变化的,采用平均值计算有一定的误差,本方法在计算信号包络时,考虑了信号包络上升和下降的两种情况分别计算,以提高系统的精确度。x(n)的信号包络可以使用以下公式计算:

其中,λ是遗忘因子,它定义为包络检测器对信号幅度的快速变化作出反应的速度。用于精确估计信号能量,0.85<λ<0.99。同样,其它信号的包络也可以用这个公式计算。

麦克风的输入信号y(n)包括近端语音信号s(n),回声信号d(n),近端噪声信号b(n):

y(n)=s(n)+d(n)+b(n)(2)

假设回声信号d(n)的能量与远端信号x(n)相比较低,在双端通话期间,麦克风信号y(n)的能量大于远端信号x(n)的能量。可得信号包络不等式:

vy(n)>vd(n)+vb(n)(3)

在单边通话期间,可近似得到:

vy(n)≈vd(n)+vb(n)(4)

因此,双端通话检测应该基于回声和噪声的信号包络。回声信号d(n)可以使用自适应滤波器产生的回声估计来代替。如果噪声水平保持在合理的范围内,则背景噪声的包络可以通过恒定的阈值ε来估计。在双端通话期间,采用与远端信号x(n)成比例的近似回声来判断双端通话。可得到不等式:

vy(n)>vd(n)+φ(n)vx(n)+ε(5)

其中φ(n)是滤波器系数的发散度量,φ(n)≥0。在系统工作中,φ(n)应该随着滤波器收敛而降低并在收敛期间接近零。滤波器系数的梯度向量的范数可以满足这个条件,因为它随着自适应滤波器收敛而几乎单调下降。在某一时刻,自适应算法更新时,滤波器系数w(n)随着△w(n)而改变。可得到:

其中,α是比例常数,h是共轭转置,在频域自适应滤波器的情况下,根据帕赛瓦尔定理可知一个信号能量恒等于此信号在完备正交函数集中各分量能量之和。因此w(n)可以使用它的dft之和代替。计算公式如下:

其中,i=0,1,2,…,n,j=0,1,2,…,n,re表示实数部分,im表示虚数部分。因此,可得到判定函数如下:

将判定函数ξenv(n)与预先设定的阈值t进行比较,t略小于1,如果ξenv(n)>t,判定发生双端通话。

理论上来说,在双端通话期间,麦克风输入信号能量大于远端信号能量。但是在实际应用环境中,室内脉冲响应和回声路径是未知的,当回声的延迟较长将对双端检测系统有影响。在这种情况下,麦克风信号可能低于远端输入能量,可能导致错误的双端通话判定。虽然这种情况很少发生,但是一旦发生,可能导致滤波器发散而降低系统性能。

为了解决这种问题,将ncc算法加入dtd中。ncc算法是一种常用的基于相关性的算法,利用远端信号x(n)与麦克风信号y(n)来构造检测公式。通常使用的是误差e(n)和麦克风信号y(n)之间的互相关,基于麦克风信号和远端信号之间的互相关方法,有更好的稳定性能。判定函数计算如公式(2):

其中,rxy=e[x(n)y(n)]=rxxh,是麦克风信号的方差,且有:

其中,rxx是x(n)的自相关矩阵。当没有近端信号存在时,判定函数ξncc(n)=1。双端通话期间,麦克风信号包含近端语音,因此相关系数会降低,当存在近端信号时0<ξncc(n)<1。因此,可以设置一个略小于1的常数k作为阈值,然后将判定函数ξncc(n)与k比较来判断是否存在双端通话。如果ξncc(n)<k,则表示存在双端通话。

在双端通话期间,麦克风信号包含近端语音,因此相关系数会降低。将ξncc(n)与预先设定的阈值k进行比较,k略小于1,如果ξncc(n)<k,则表示存在双端通话。

当能量包络检测法无法准确的判断双端通话的发生时,ncc将作为最终的判断。最终的判定函数如下:

当η(n)=1时则判定为发生双端通话,滤波器停止更新,否则,判定为单端通话,滤波器继续更新。如图2给出了提出的dtd方法。首先计算远端信号和麦克风信号的信号包络,得出判定函数ξenv(n),再与设定的阈值t进行比较判断双端通话是否发生。然后根据判断结果,如果判断发生双端通话,则滤波器停止更新。否则,利用远端信号和麦克风信号进行ncc计算。将ncc计算结果与设定的阈值k进行比较,最终确定双端通话是否发生。如果判断发生双端通话,则滤波器停止更新,否则,滤波器继续更新。

仿真结果与分析

由于提出的dtd方法使用自适应滤波器产生的回声估计来判断双端通话,其性能取决于自适应滤波器的失调量。虽然nlms算法是最广泛使用的自适应算法,但其失调量随滤波器长度而增加,而由于频域自适应滤波器(fdaf)使用fft算法,具有非常低的失调量并且比nlms算法更快,因此fdaf更适合在嵌入式系统中实现所提出的算法。在计算信号包络和ncc中,公式(1)中的λ=0.9961,公式(10)中的比例常数α=0.5。使用ε估计恒定噪声,ε=3.1×10-3,env的判断阈值t≈1,根据实验经验,ncc的判断阈值k=0.34。

仿真以matlab为平台,使用两段不同的语音作为远端信号和近端信号,时间长约30s,采样率8khz。snr约为50db。回声用4096个采样长度的房间脉冲响应来模拟。近端语音与远端语音的功率比(nfr)在-30db至10db的范围内变化,在此范围内确定漏检率pm和误报率pf。pm和pf是判断dtd的准确性的两个主要参数。在这两个参数中,pm的值越低越好,因为双重通话的遗漏检测会导致自适应滤波器的发散,进一步影响语音信号的质量。

漏检率是指在dt模式下,η=0的概率,误报率是指不在dt模式下η=1的概率。定义式如下:

pm=1-p(η=0|γ0)(12)

pf=p(η=1|γ1)(13)

其中,γ0表示存在双端通话,γ1表示不存在双端通话。

将结果与env和ncc算法的性能水平进行比较,如图4、图5所示:

从图4可以看出,与env和ncc方法相比,本发明方法的性能有所改善,在低nfr情况下效果尤其明显,也就是在近端语音能量比远端语音能量小的情况下也能检测出双端通话。性能随着近端信号功率水平的提高而迅速提高。nfr高于-20db时,漏检率小于50%,在nfr大于0db后,漏检率更低。从图5可以看出,在误报率方面,所提出的方法优于env方法。尽管pf随着nfr增加而增加,但在变化的范围内低于2%。在实际情况中,误报率仅在非常短的时间内关闭自适应滤波器的自适应。因此不会造成滤波器发散等严重问题,由于回声路径的脉冲响应在此期间没有太大变化,因此aec的性能几乎保持不变。综合来看,本发明提出的dtd方法比env、ncc方法的性能都要好。

为了验证本发明方法对回声路径变化检测的准确性,在-10db的nfr情况下,重复上述测试,测试中在10秒和20秒时突然改变回声路径冲激响应。图6是近端语音信号、远端语音回声信号和麦克风接收到的信号,其中包括人声、回声、噪声信号。图7给出了三种dtd方法的实验结果:

从图7三种dtd方法实验结果可以看出,在第10秒和20秒左右的时候回声路径冲激响应改变之后,三种方法都受到了一定程度的影响,导致双端通话检测性能下降,出现回声。本发明方法在短时间内双端通话检测器的性能略微下降,但是如果房间冲激响应保持稳定,它会迅速稳定下来,准确的判断双端通话的开始与结束。

本发明基于远端和麦克风信号的能量包络检测和互相关估计,提出了一种新的dtd方法,并通过仿真实验验证了其性能。与传统方法相比,本发明提出的方法提高了dtd的准确性及稳定性,提升了aec系统性能,可以更好的应用在实际环境中。

应当理解的是,本说明书未详细阐述的部分均属于现有技术。

应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1