声回波消除方法和装置转让专利

申请号 : CN201510255926.X

文献号 : CN104994249B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 郭启行魏建强崔玮玮宋辉

申请人 : 百度在线网络技术(北京)有限公司

摘要 :

本发明提出一种声回波消除方法和装置,该声回波消除方法包括对参考信号和麦克风信号进行对齐处理,得到对齐处理后的信号;对所述对齐处理后的信号进行自适应滤波处理,得到自适应滤波处理后的信号;根据所述自适应滤波处理后的信号进行NLP预处理,得到NLP处理参数;根据所述NLP处理参数,对所述自适应滤波处理后的信号进行NLP后滤波处理。该方法能够提高AEC效果。

权利要求 :

1.一种声回波消除方法,其特征在于,包括:

对参考信号和麦克风信号进行对齐处理,得到对齐处理后的信号;

对所述对齐处理后的信号进行自适应滤波处理,得到自适应滤波处理后的信号;

根据所述自适应滤波处理后的信号进行非线性处理NLP预处理,得到NLP处理参数;

根据所述NLP处理参数,对所述自适应滤波处理后的信号进行NLP后滤波处理;

所述对所述自适应滤波处理后的信号进行NLP预处理,包括:根据所述自适应滤波处理后的信号,进行最佳相干系数搜索,得到实际的最佳相干系数;根据所述实际的最佳相干系数以及预设的固定消除等级,对所述自适应滤波处理的信号进行初步NLP滤波,并根据初步NLP滤波后的信号进行声学通道衰减量ERL更新;

对所述初步NLP滤波后的信号,进行远端检测和双讲检测,得到检测结果;

根据更新后的ERL,以及所述检测结果,进行NLP消除程度设定;

所述NLP处理参数包括:NLP等级以及实际的最佳相干系数,所述根据所述NLP处理参数,对所述自适应滤波处理后的信号进行NLP后滤波处理,包括:根据所述NLP等级以及所述实际的最佳相干系数,确定后滤波系数;

根据所述后滤波系数,对所述自适应滤波处理后的信号进行NLP后滤波处理。

2.根据权利要求1所述的方法,其特征在于,所述对所述对齐处理后的信号进行自适应滤波处理,包括:对所述对齐处理后的信号进行子带自适应滤波处理。

3.根据权利要求1所述的方法,其特征在于,所述进行最佳相干系数搜索,包括:获取当前帧的麦克风信号和当前帧的参考信号,所述当前帧的参考信号是与所述当前帧的麦克风信号对齐后的参考信号;

获取所述当前帧的参考信号前后预设范围内的参考信号;

计算所述当前帧的麦克风信号与每个获取的参考信号的相干系数,并从中确定出最大的相干系数确定为实际的最佳相干系数。

4.根据权利要求1所述的方法,其特征在于,所述根据更新后的ERL,以及所述检测结果,进行NLP消除程度设定,包括:确定当前状态,当前状态包括:听筒模式或者免提模式;

在当前状态是听筒模式时,根据有无远端信号,以及更新后的ERL确定NLP等级;或者,在当前状态是免提模式时,根据有无远端信号,以及更新后的ERL确定初步的NLP等级,并根据是否双讲状态以及初步的NLP等级,确定最终的NLP等级。

5.根据权利要求2-4任一项所述的方法,其特征在于,还包括:对NLP后滤波处理后的信号,进行子带合成。

6.一种声回波消除装置,其特征在于,包括:

延迟估计模块,用于对参考信号和麦克风信号进行对齐处理,得到对齐处理后的信号;

自适应滤波模块,用于对所述对齐处理后的信号进行自适应滤波处理,得到自适应滤波处理后的信号;

非线性处理NLP预处理模块,用于根据所述自适应滤波处理后的信号进行NLP预处理,得到NLP处理参数;

NLP后滤波处理模块,用于根据所述NLP处理参数,对所述自适应滤波处理后的信号进行NLP后滤波处理;

所述NLP预处理模块包括:

最佳相干系数搜索单元,用于根据所述自适应滤波处理后的信号,进行最佳相干系数搜索,得到实际的最佳相干系数;

初步NLP滤波单元,用于根据所述实际的最佳相干系数以及预设的固定消除等级,对所述自适应滤波处理的信号进行初步NLP滤波;

声学通道衰减量ERL更新单元,用于根据初步NLP滤波后的信号进行ERL更新;

远端检测和双讲检测单元,用于对所述初步NLP滤波后的信号,进行远端检测和双讲检测,得到检测结果;

NLP消除程度设定单元,用于根据更新后的ERL,以及所述检测结果,进行NLP消除程度设定;

所述NLP处理参数包括:NLP等级以及实际的最佳相干系数,所述NLP后滤波处理模块具体用于:根据所述NLP等级以及所述实际的最佳相干系数,确定后滤波系数;

根据所述后滤波系数,对所述自适应滤波处理后的信号进行NLP后滤波处理。

7.根据权利要求6所述的装置,其特征在于,所述自适应滤波模块具体用于:对所述对齐处理后的信号进行子带自适应滤波处理。

8.根据权利要求6所述的装置,其特征在于,所述最佳相干系数搜索单元具体用于:获取当前帧的麦克风信号和当前帧的参考信号,所述当前帧的参考信号是与所述当前帧的麦克风信号对齐后的参考信号;

获取所述当前帧的参考信号前后预设范围内的参考信号;

计算所述当前帧的麦克风信号与每个获取的参考信号的相干系数,并从中确定出最大的相干系数确定为实际的最佳相干系数。

9.根据权利要求6所述的装置,其特征在于,所述NLP消除程度设定单元具体用于:确定当前状态,当前状态包括:听筒模式或者免提模式;

在当前状态是听筒模式时,根据有无远端信号,以及更新后的ERL确定NLP等级;或者,在当前状态是免提模式时,根据有无远端信号,以及更新后的ERL确定初步的NLP等级,并根据是否双讲状态以及初步的NLP等级,确定最终的NLP等级。

10.根据权利要求7-9任一项所述的装置,其特征在于,还包括:子带合成模块,用于对NLP后滤波处理后的信号,进行子带合成。

说明书 :

声回波消除方法和装置

技术领域

[0001] 本发明涉及数据处理技术领域,尤其涉及一种声回波消除(Acoustic Echo Cancellation,AEC)方法和装置。

背景技术

[0002] 随着智能手机等移动设备的逐渐普及和3G/4G网络的飞速发展,大量基于移动设备的互联网协议(Internet Protocol,IP)软电话产品越来越受到广大用户的青睐。在IP通话系统中,声回波消除(Acoustic Echo Cancellation,AEC)模块用来消除通话过程中的回波信号,已成为各个终端的不可或缺的音频处理算法。
[0003] 传统的AEC技术的处理流程包括:延迟估计,自适应滤波,双讲检测和非线性处理(Non-Linear Processing,NLP)后滤波。
[0004] 但是,AEC的消除性能强烈依赖于延迟估计模块的对齐程度,而实际中延迟估计模块难以实现严格对齐,从而会影响AEC效果。

发明内容

[0005] 本发明旨在至少在一定程度上解决相干技术中的技术问题之一。
[0006] 为此,本发明的一个目的在于提出一种声回波消除方法,该方法可以提高声回波消除方法的效果。
[0007] 本发明的另一个目的在于提出一种声回波消除装置。
[0008] 为达到上述目的,本发明第一方面实施例提出的声回波消除方法,包括:对参考信号和麦克风信号进行对齐处理,得到对齐处理后的信号;对所述对齐处理后的信号进行自适应滤波处理,得到自适应滤波处理后的信号;根据所述自适应滤波处理后的信号进行NLP预处理,得到NLP处理参数;根据所述NLP处理参数,对所述自适应滤波处理后的信号进行NLP后滤波处理。
[0009] 本发明第一方面实施例提出的声回波消除方法,通过进行NLP预处理,可以在NLP预处理时采用一些优化措施,从而提高AEC效果。
[0010] 为达到上述目的,本发明第二方面实施例提出的声回波消除装置,包括:延迟估计模块,用于对参考信号和麦克风信号进行对齐处理,得到对齐处理后的信号;自适应滤波模块,用于对所述对齐处理后的信号进行自适应滤波处理,得到自适应滤波处理后的信号;NLP预处理模块,用于根据所述滤波处理后的信号进行NLP预处理,得到NLP处理参数;NLP后滤波处理模块,用于根据所述NLP处理参数,对所述自适应滤波处理后的信号进行NLP后滤波处理
[0011] 本发明第二方面实施例提出的声回波消除装置,通过进行NLP预处理,在NLP预处理时采用一些优化措施,从而提高AEC效果。
[0012] 本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

[0013] 本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
[0014] 图1是本发明一实施例提出的声回波消除方法的流程示意图;
[0015] 图2是本发明另一实施例提出的声回波消除方法的流程示意图;
[0016] 图3是本发明实施例中最佳相干系数搜索的流程示意图;
[0017] 图4是本发明实施例中NLP等级的确定流程示意图;
[0018] 图5是本发明另一实施例提出的声回波消除装置的结构示意图;
[0019] 图6是本发明另一实施例提出的声回波消除装置的结构示意图。

具体实施方式

[0020] 下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的模块或具有相同或类似功能的模块。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
[0021] 图1是本发明一实施例提出的声回波消除方法的流程示意图,该方法包括:
[0022] S11:对参考信号和麦克风信号进行对齐处理,得到对齐处理后的信号。
[0023] 其中,参考信号是指语音通讯系统中的远端讲话人的语音信号,且这些信号是已知的。
[0024] 麦克风信号是指近端麦克风拾取到的信号,其中包括近端语音信号、扬声器播放的远端语音信号,和各种环境噪音等。
[0025] 在对齐处理时,先进行延迟估计,确定出最优延迟点,之后再根据最优延迟点输出对齐处理后的参考信号和麦克风信号。
[0026] 例如,采用如下公式计算参考信号与麦克风信号的相干系数:
[0027]
[0028] 其中,R(t1)表示在延迟点是t1时的相干系数,spk(t-t1)是延迟了t1延时点的参考信号,mic(t)是麦克风信号,spkeng,miceng是能量长时平均估计,以spkeng(miceng可以参照运算)为例,计算公式是:
[0029] spkeng(t)=a×spkeng(t-1)×(1-a)×spk(t)×spk(t),
[0030] a是预设的值,满足0
[0031] 在实际实施时,可以枚举一些t1,t2,t3…这些值,之后采用上面的相干系数的计算公式计算相应的相干系数R,最优解就是R最大时的解,例如,R(t1)最大,最优延时点可以确定为t1。当然,可以理解的是,具体的延迟估计过程可以采用通常采用的手段实现,上述只是简化描述,例如,在确定出上述公式的最优解后还可以进行渐变以及偏移处理等,对最优解进行偏移后得到最优延迟点,例如,最优延迟点是t1偏移一定值后的值。另外,上述的t1,t2,t3…可以根据选择的范围确定,例如选择的范围是500ms,假设每帧(在语音处理时通常以帧为单位进行处理)为20ms,则可以选择1,2,…25。
[0032] 另外,可以理解的是,在系统处理的信号通常是数字信号,因此上述的spk(t-t1)以及mic(t)是数字信号,例如,用spk(n-n1)以及mic(n)表示。
[0033] 假设最优延迟点用ta表示,则对齐处理后的信号包括:spk(t-ta),mic(t)。
[0034] 另外,在实际运算时上述的数学期望的计算可以采用时间平滑的方式进行,例如,[0035] b是预设系数,R的初始值可以从0或者初始的 开始,n0是初始时间点。
[0036] 参见图2,对参考信号和麦克风信号进行对齐处理的流程可以用延迟估计(S21)表示。
[0037] 通过延迟估计可以有效增加后续自适应滤波器估计系数的有效性,从而更好的消除干扰信号。
[0038] 但是,由于语音通讯系统录制麦克风信号和播放参考信号会造成相应信号的时间抖动,抖动是指信号时间点的实际值相对于理论值发生偏移。在发生抖动的情况下,严格对齐是做不到的,由于不能严格对齐引起的偏差将在后续的NLP预处理部分予以处理。
[0039] S12:对所述对齐处理后的信号进行自适应滤波处理,得到自适应滤波处理后的信号。
[0040] 现有技术中,自适应滤波采用的是基于快速傅立叶变换(Fast  Fourier Transformation,FFT)的频域自适应滤波器,由于FFT会造成不同频带间产生混叠,从而会降低AEC的效果。
[0041] 为了提高AEC的效果,参见图2,本实施例中可以采用子带自适应滤波(S22)方式。
[0042] 参见图2,自适应滤波流程可以具体包括:
[0043] S221:对所述对齐处理后的参考信号和麦克风信号进行子带分析;
[0044] S222:在每个子带内,基于该子带的参考信号和麦克风信号进行该子带的子带自适应滤波处理。
[0045] 子带自适应滤波的输入信号有两个,一个是参考信号,一个是麦克风信号,基于以上两个信号来完成子带自适应滤波处理,即消除远端回波信号。
[0046] 参考信号和麦克风信号是首先要经过子带分析单元,将全带划分成各个子带信号,然后再基于子带参考信号和对应的同一子带的麦克风信号进行子带自适应滤波处理。
[0047] 划分子带信号的方式有多种,例如采用均匀子带划分方式或者非均匀子带划分方式。具体的,本实施例中,可以采用均匀离散傅立叶变换(Discrete Fourier Transform,DFT)滤波器组实现子带划分。
[0048] 均匀DFT滤波器组在实现时存在一个原型低通滤波器,本实施例中,可以将该原型低通滤波器的阻带衰减特性设置的非常陡峭,例如,在较短的频域范围设置较大的阻带衰减值。
[0049] 通过设置陡峭的特性,可以有效降低不同子带之间的频率混叠问题,从而有利于后续流程处理,例如有利于后续的相干系数估计,从而提高AEC效果。
[0050] S13:根据所述自适应滤波处理后的信号进行NLP预处理,得到NLP处理参数。
[0051] 现有技术中,自适应滤波处理后进行双讲检测,但是,双讲检测基于自适应滤波处理的输出,由于自适应滤波是线性处理,只能消除线性回波,而进行AEC消除的设备(如手机)的声学非线性问题十分突出,而自适应滤波不能消除非线性回波,因此现有的线性自适应滤波处理对于回波的消除能力有限,致使双讲检测效果较差。
[0052] 另外,现有技术中,NLP后滤波严重依赖延迟估计模块的输出,如果参考信号和麦克风信号不能严格对齐,NLP后滤波的处理效果也就很差。
[0053] 为了解决上述问题,本实施例在NLP后滤波之前增加NLP预处理。
[0054] 需要说明的是,NLP预处理以及后续的NLP后滤波都是在每个子带上进行的。
[0055] 参见图2,NLP预处理(S23)的流程可以包括:
[0056] S231:根据所述自适应滤波处理后的信号,进行最佳相干系数搜索,得到实际的最佳相干系数。
[0057] 由于延迟估计通常不能实现参考信号和麦克风信号的严格对齐,也就是说在延迟估计时计算得到的ta可能并不是实际的最优延迟点。
[0058] 本实施例中采用最佳相干系数搜索可以得到实际的最优延迟点,例如,实际的最优延迟点用t'a表示,以及与实际的最优延迟点对应的最佳相干系数。
[0059] 可选的,参见图3,所述进行最佳相干系数搜索,包括:
[0060] S31:获取当前帧的麦克风信号和当前帧的参考信号,所述当前帧的参考信号是与所述当前帧的麦克风信号对齐后的参考信号;
[0061] S32:获取所述当前帧的参考信号前后预设范围内的参考信号;
[0062] S33:计算所述当前帧的麦克风信号与每个获取的参考信号的相干系数,并从中确定出最大的相干系数确定为实际的最佳相干系数。
[0063] 例如,对应每个子带自适应滤波后的参考信号和麦克风信号,取出当前帧的麦克风信号,假设当前帧的麦克风信号用mic(T)表示,对于参考信号,不仅取出当前帧的参考信号(由于之前进行过对齐,当前帧的参考信号是指对齐后的信号),还取出当前帧的参考信号之前和之后的N帧的参考信号,其中,N是预设值,即取出的参考信号包括:
[0064] spk(T-ta-N),spk(T-ta-N+1),…spk(T-ta),spk(T-ta+1),…spk(T-ta+N)之后,用当前帧的麦克风信号与每个取出的参考信号进行两两相干运算,并计算相干系数,将相干系数最大时的延迟点确定为实际的最优延迟点。
[0065] 例如,分别计算mic(T)与spk(T-ta-N)的相干系数,mic(T)与spk(T-ta-N+1)的相干系数,…,mic(T)与spk(T-ta)的相干系数,…,mic(T)与spk(T-ta+N)的相干系数。
[0066] 其中,mic(T)与spk(x)(x=T-ta-N,…,T-ta,…,T-ta+N)的相干系数可以表示为:
[0067]
[0068] 在计算出上述的各相干系数后,假设mic(T)与spk(X)的相干系数最大,则实际的最优延迟点t'a的计算公式是:t'a=T-X,相应的最佳相干系数是:
[0069] R(t'a)=R(T-X)。
[0070] 通过基于延迟估计模块估计的时间点为参考的前后一定时间范围进一步的搜索最佳的对齐时间点,这样可以很好的保证后续NLP模块的性能稳定性。
[0071] S232:根据所述实际的最佳相干系数以及预设的固定消除等级,对所述自适应滤波处理的信号进行初步NLP滤波。
[0072] 其中,可以根据实际的最佳相干系数以及预设的固定消除等级确定初步NLP滤波的滤波系数,并采用该滤波系数对子带自适应滤波后的信号进行NLP滤波,得到初步NLP滤波后的信号。具体的,根据实际的最佳相干系数以及预设的固定消除等级确定初步NLP滤波的滤波系数的计算公式可以是:
[0073] w(k)0=w(k)α0×f(k),
[0074] 其中,w(k)0是要计算的滤波系数,w(k)是实际的最佳相干系数,α0是预设的固定消除等级,f(k)是已知的递增函数,k是子带索引,也是傅立叶变换的频率位。
[0075] S233:根据初步NLP滤波后的信号进行声学通道衰减量(Echo Return Loss,ERL)更新。
[0076] ERL表征的是从扬声器到麦克风的声学通道衰减量。具体的可以用初步NLP滤波后的信号中麦克风信号的峰值与参考信号的峰值的比值表示。
[0077] 随着麦克风信号和参考信号的不同,ERL可以实时更新。
[0078] 本实施例中,通过将经过初步NLP后的信号作为更新ERL的依据,可以有效的避免在线性AEC模块消除量很低的情况下,ERL根本无法更新或者估计误差较大的问题。
[0079] S234:对所述初步NLP滤波后的信号,进行远端检测和双讲检测,得到检测结果。
[0080] 其中,远端检测用于检测是否存在远端信号,具体如上述的参考信号;双讲检测用于检测是否处于双讲状态,其中,双讲状态是指远端信号和近端信号共存的情况,例如参考信号和麦克风信号共存的状态。
[0081] 具体的,可以基于能量阈值或者神经网络模型的健壮检测方式,进行远端检测。有效避免一些环境噪音造成非线性后处理模块出现不稳定或异常的问题,即在没有检测出远端有效语音信号的情况下,会尽量降低非线性后处理模块对近端语音的损伤。双讲检测模块同样基于初步NLP后的信号来进行工作,这样可以进一步提高检测的准确度,具体的双讲检测方式可以采用通常采用的方式。
[0082] 现有技术中,双讲检测基于自适应滤波器的输出,而自适应滤波器的处理是线性处理,而声学非线性问题,从而影响双讲检测效果。而本实施例中,通过对子带自适应滤波处理后的信号再进行初步的NLP处理,可以至少部分解决非线性问题,提高远端检测和双讲检测的效果。
[0083] S235:根据更新后的ERL,以及所述检测结果,进行NLP消除程度设定。
[0084] 其中,NLP消除程度设定可以获取到NLP等级。
[0085] 具体的,NLP等级可以根据S243的检测结果,以及S242的更新后的ERL值确定。其中,ERL越高采用的消除等级越高,反之亦然。在没有远端信号的情况下,采用最小的消除等级,以便更好的保护近端语音。
[0086] 假设NLP等级分为5级(分别用0,1,2,3,4表示),
[0087] 具体实现过程的伪代码如下:
[0088] Case听筒模式:
[0089] If无远端信号:nlpMode=0;
[0090] Else if ERL<0.05:nlpMode=0;
[0091] Else if nlpMode=1;
[0092] Case免提模式:
[0093] If无远端信号:nlpMode=0;
[0094] Else if ERL<1:nlpMode=1;
[0095] Else if ERL>4:nlpMode=4;
[0096] Else:nlpMode=2;
[0097] If(双讲状态&&nlpMode>=2)nlpMode--;
[0098] 参见图4,NLP等级的确定流程可以包括:
[0099] S41:确定当前状态,当前状态包括:听筒模式或者免提模式。
[0100] 其中,可以在移动设备的用户界面(User Interface,UI)上提供选择项,由用户选择听筒模式或者免提模式,进而执行本实施例的模块可以根据用户的选择确定当前状态。
[0101] 其中,听筒模式包括:用户直接通过扬声器收听,或者用户通过耳机收听。
[0102] S42:在当前状态是听筒模式时,根据有无远端信号,以及更新后的ERL确定NLP等级。
[0103] 其中,当没有远端信号时,NLP等级=0;或者,
[0104] 当存在远端信号且更新后的ERL小于0.05时,NLP等级=0;或者,
[0105] 当存在远端信号且更新后的ERL大于或等于0.05时,NLP等级=1。
[0106] S43:在当前状态是免提模式时,根据有无远端信号,以及更新后的ERL确定初步的NLP等级,并根据是否双讲状态以及初步的NLP等级,确定最终的NLP等级。
[0107] 其中,当没有远端信号时,初步的NLP等级=0;或者,
[0108] 当存在远端信号且更新后的ERL小于1时,初步的NLP等级=1;或者,[0109] 当存在远端信号且更新后的ERL大于4时,初步的NLP等级=4;或者,[0110] 当存在远端信号且更新后的ERL大于或等于1以及小于或等于4时,初步的NLP等级=2;
[0111] 当双讲状态且初步的NLP等级大于或等于2时,最终的NLP等级=初步的NLP等级-1,其他情况下,最终的NLP等级=初步的NLP等级。
[0112] 现有技术中,NLP后滤波处理对于各种品牌机型的自适应能力较弱,而本实施例中,通过确定NLP等级,能够自适应的选择NLP的消除程度,这样做对于不同型号的手机避免了大量的手工适配工作。
[0113] S14:根据所述NLP处理参数,对所述自适应滤波处理后的信号进行NLP后滤波处理。
[0114] 非线性处理(Non-Linear Processing,NLP)后滤波模块用于进一步抑制残留回波(如非线性回波成分等),一般会采用维纳滤波或相干系数的方法进行后滤波处理。
[0115] 例如,后滤波处理的系数w(k)'的计算公式是:
[0116] w(k)'=w(k)α×f(k)
[0117] 其中,w(k)是实际的最佳相干系数,α是NLP等级(如果存在最终的NLP等级,此时具体是指最终的NLP等级),f(k)是已知的递增函数,k是子带索引,也是傅立叶变换的频率位。
[0118] 在确定出后滤波系数w(k)'后,可以对S12中得到的自适应滤波处理后的信号(具体可以是子带自适应滤波处理后的信号)进行相应的非线性消除处理。
[0119] 由于NLP预处理以及NLP后滤波处理都是在每个子带上进行的,因此,另一实施例中,参见图2,在NLP后滤波处理(S24)之后,该方法还可以包括:
[0120] S25:对NLP后滤波处理后的信号,进行子带合成。
[0121] 其中,子带合成时采用的运算可以具体是S22中子带分析的逆运算。
[0122] 本实施例中,通过进行NLP预处理,在NLP预处理时采用一些优化措施,从而提高AEC效果。本实施例中,基于子带自适应滤波处理,可以很好的解决FFT分带处理各个频带之间的混叠比较大的问题,从而保证了非线性后处理模块能够更好地抑制非线性残留回波。具体在NLP预处理时,本实施例中,通过前后搜索选择最佳相干系数,能够很好的解决延迟估计偏差带来的不利影响,从而降低NLP后滤波模块对延迟估计准确度的依赖,增加健壮性。本实施例中,ERL估计和双讲检测模块是基于初步NLP后的信号,进一步提高了ERL估计和双讲检测的准确度和实时性,进而可以获得更好更稳定的NLP性能。本实施例中,ERL估计可以反映出不同手机的声学特性以及当前声学环境的动态变化,从而使我们可以选择最优的NLP的消除等级,有效地避免大量的人工干预和适配工作,使整个系统具有更强的适应性和健壮性。本实施例中,在近端单讲和双讲的状态下,对于NLP的消除等级进行优化选择,更好地保护近端语音和双讲效果。
[0123] 图5是本发明另一实施例提出的声回波消除装置的结构示意图,该装置50包括:
[0124] 延迟估计模块51,用于对参考信号和麦克风信号进行对齐处理,得到对齐处理后的信号;
[0125] 其中,参考信号是指语音通讯系统中的远端讲话人的语音信号,且这些信号是已知的。
[0126] 麦克风信号是指近端麦克风拾取到的信号,其中包括近端语音信号、扬声器播放的远端语音信号,和各种环境噪音等。
[0127] 在对齐处理时,先进行延迟估计,确定出最优延迟点,之后再根据最优延迟点输出对齐处理后的参考信号和麦克风信号。
[0128] 例如,采用如下公式计算参考信号与麦克风信号的相干系数:
[0129]
[0130] 其中,R(t1)表示在延迟点是t1时的相干系数,spk(t-t1)是延迟了t1延时点的参考信号,mic(t)是麦克风信号,spkeng,miceng是能量长时平均估计,以spkeng(miceng可以参照运算)为例,计算公式是:
[0131] spkeng(t)=a×spkeng(t-1)×(1-a)×spk(t)×spk(t),
[0132] a是预设的值,满足0
[0133] 在实际实施时,可以枚举一些t1,t2,t3…这些值,之后采用上面的相干系数的计算公式计算相应的相干系数R,最优解就是R最大时的解,例如,R(t1)最大,最优延时点可以确定为t1。当然,可以理解的是,具体的延迟估计过程可以采用通常采用的手段实现,上述只是简化描述,例如,在确定出上述公式的最优解后还可以进行渐变以及偏移处理等,对最优解进行偏移后得到最优延迟点,例如,最优延迟点是t1偏移一定值后的值。另外,上述的t1,t2,t3…可以根据选择的范围确定,例如选择的范围是500ms,假设每帧(在语音处理时通常以帧为单位进行处理)为20ms,则可以选择1,2,…25。
[0134] 另外,可以理解的是,在系统处理的信号通常是数字信号,因此上述的spk(t-t1)以及mic(t)是数字信号,例如,用spk(n-n1)以及mic(n)表示。
[0135] 假设最优延迟点用ta表示,则对齐处理后的信号包括:spk(t-ta) ,mic(t)。另外,在实际运算时上述的数学期望的计算可以采用时间平滑的方式进行,例如,b是预设系数,R的初始值可以从0或者初始的 开始,n0是初始时间点。
[0136] 通过延迟估计可以有效增加后续自适应滤波器估计系数的有效性,从而更好的消除干扰信号。
[0137] 但是,由于语音通讯系统录制麦克风信号和播放参考信号会造成相应信号的时间抖动,抖动是指信号时间点的实际值相对于理论值发生偏移。在发生抖动的情况下,严格对齐是做不到的,由于不能严格对齐引起的偏差将在后续的NLP预处理部分予以处理。
[0138] 自适应滤波模块52,用于对所述对齐处理后的信号进行自适应滤波处理,得到自适应滤波处理后的信号;
[0139] 现有技术中,自适应滤波采用的是基于FFT的频域自适应滤波器,由于FFT会造成不同频带间产生混叠,从而会降低AEC的效果。
[0140] 为了提高AEC的效果,本实施例中可以采用子带自适应滤波方式。
[0141] 参见图6,另一实施例中,自适应滤波模块52具体
[0142] 用于对所述对齐处理后的信号进行子带自适应滤波处理。
[0143] 参见图6,自适应滤波模块52具体可以包括:
[0144] 子带分析单元521,用于对所述对齐处理后的参考信号和麦克风信号进行子带分析;
[0145] 子带自适应滤波单元522,用于在每个子带内,基于该子带的参考信号和麦克风信号进行该子带的自适应滤波处理。
[0146] 子带自适应滤波的输入信号有两个,一个是参考信号,一个是麦克风信号,基于以上两个信号来完成子带自适应滤波处理,即消除远端回波信号。
[0147] 参考信号和麦克风信号是首先要经过子带分析单元,将全带划分成各个子带信号,然后再基于子带参考信号和对应的同一子带的麦克风信号进行子带自适应滤波处理。
[0148] 划分子带信号的方式有多种,例如采用均匀子带划分方式或者非均匀子带划分方式。具体的,本实施例中,可以采用均匀离散傅立叶变换(Discrete Fourier Transform,DFT)滤波器组实现子带划分。
[0149] 均匀DFT滤波器组在实现时存在一个原型低通滤波器,本实施例中,可以将该原型低通滤波器的阻带衰减特性设置的非常陡峭,例如,在较短的频域范围设置较大的阻带衰减值。
[0150] 通过设置陡峭的特性,可以有效降低不同子带之间的频率混叠问题,从而有利于后续流程处理,例如有利于后续的相干系数估计,从而提高AEC效果。
[0151] NLP预处理模块53,用于根据所述自适应滤波处理后的信号进行NLP预处理,得到NLP处理参数;
[0152] 现有技术中,自适应滤波处理后进行双讲检测,但是,双讲检测基于自适应滤波处理的输出,由于自适应滤波是线性处理,只能消除线性回波,而进行AEC消除的设备(如手机)的声学非线性问题十分突出,而自适应滤波不能消除非线性回波,因此现有的线性自适应滤波处理对于回波的消除能力有限,致使双讲检测效果较差。
[0153] 另外,现有技术中,NLP后滤波严重依赖延迟估计模块的输出,如果参考信号和麦克风信号不能严格对齐,NLP后滤波的处理效果也就很差。
[0154] 为了解决上述问题,本实施例在NLP后滤波之前增加NLP预处理。
[0155] 需要说明的是,NLP预处理以及后续的NLP后滤波都是在每个子带上进行的。
[0156] 参见图6,另一实施例中,所述NLP预处理模块53包括:
[0157] 最佳相干系数搜索单元531,用于根据所述自适应滤波处理后的信号,进行最佳相干系数搜索,得到实际的最佳相干系数;
[0158] 由于延迟估计通常不能实现参考信号和麦克风信号的严格对齐,也就是说在延迟估计时计算得到的ta可能并不是实际的最优延迟点。
[0159] 本实施例中采用最佳相干系数搜索可以得到实际的最优延迟点,例如,实际的最优延迟点用t'a表示,以及与实际的最优延迟点对应的最佳相干系数。
[0160] 可选的,所述最佳相干系数搜索单元531具体用于:
[0161] 获取当前帧的麦克风信号和当前帧的参考信号,所述当前帧的参考信号是与所述当前帧的麦克风信号对齐后的参考信号;
[0162] 获取所述当前帧的参考信号前后预设范围内的参考信号;
[0163] 计算所述当前帧的麦克风信号与每个获取的参考信号的相干系数,并从中确定出最大的相干系数确定为实际的最佳相干系数。
[0164] 例如,对应每个子带自适应滤波后的参考信号和麦克风信号,取出当前帧的麦克风信号,假设当前帧的麦克风信号用mic(T)表示,对于参考信号,不仅取出当前帧的参考信号(由于之前进行过对齐,当前帧的参考信号是指对齐后的信号),还取出当前帧的参考信号之前和之后的N帧的参考信号,其中,N是预设值,即取出的参考信号包括:
[0165] spk(T-ta-N),spk(T-ta-N+1),…spk(T-ta),spk(T-ta+1),…spk(T-ta+N)之后,用当前帧的麦克风信号与每个取出的参考信号进行两两相干运算,并计算相干系数,将相干系数最大时的延迟点确定为实际的最优延迟点。
[0166] 例如,分别计算mic(T)与spk(T-ta-N)的相干系数,mic(T)与spk(T-ta-N+1)的相干系数,…,mic(T)与spk(T-ta)的相干系数,…,mic(T)与spk(T-ta+N)的相干系数。
[0167] 其中,mic(T)与spk(x)(x=T-ta-N,…,T-ta,…,T-ta+N)的相干系数可以表示为:
[0168]
[0169] 在计算出上述的各相干系数后,假设mic(T)与spk(X)的相干系数最大,则实际的最优延迟点t'a的计算公式是:t'a=T-X,相应的最佳相干系数是:
[0170] R(t'a)=R(T-X)。
[0171] 通过基于延迟估计模块估计的时间点为参考的前后一定时间范围进一步的搜索最佳的对齐时间点,这样可以很好的保证后续非线性处理模块的性能稳定性。
[0172] 初步NLP滤波单元532,用于根据所述实际的最佳相干系数以及预设的固定消除等级,对所述自适应滤波处理的信号进行初步NLP滤波;
[0173] ERL更新单元533,用于根据初步NLP滤波后的信号进行ERL更新;
[0174] 其中,可以根据实际的最佳相干系数以及预设的固定消除等级确定初步NLP滤波的滤波系数,并采用该滤波系数对子带自适应滤波后的信号进行NLP滤波,得到初步NLP滤波后的信号。具体的,根据实际的最佳相干系数以及预设的固定消除等级确定初步NLP滤波的滤波系数的计算公式可以是:
[0175] w(k)0=w(k)α0×f(k),
[0176] 其中,w(k)0是要计算的滤波系数,w(k)是实际的最佳相干系数,α0是预设的固定消除等级,f(k)是已知的递增函数,k是子带索引,也是傅立叶变换的频率位。
[0177] ERL表征的是从扬声器到麦克风的声学通道衰减量。具体的可以用初步NLP滤波后的信号中麦克风信号的峰值与参考信号的峰值的比值表示。
[0178] 随着麦克风信号和参考信号的不同,ERL可以实时更新。
[0179] 本实施例中,通过将经过初步NLP后的信号作为更新ERL的依据,可以有效的避免在线性AEC模块消除量很低的情况下,ERL根本无法更新或者估计误差较大的问题。
[0180] 远端检测和双讲检测单元534,用于对所述初步NLP滤波后的信号,进行远端检测和双讲检测,得到检测结果;
[0181] 其中,远端检测用于检测是否存在远端信号,具体如上述的参考信号;双讲检测用于检测是否处于双讲状态,其中,双讲状态是指远端信号和近端信号共存的情况,例如参考信号和麦克风信号共存的状态。
[0182] 具体的,可以基于能量阈值或者神经网络模型的健壮检测方式,进行远端检测。有效避免一些环境噪音造成非线性后处理模块出现不稳定或异常的问题,即在没有检测出远端有效语音信号的情况下,会尽量降低非线性后处理模块对近端语音的损伤。双讲检测模块同样基于初步NLP后的信号来进行工作,这样可以进一步提高检测的准确度,具体的双讲检测方式可以采用通常采用的方式。
[0183] 现有技术中,双讲检测基于自适应滤波器的输出,而自适应滤波器的处理是线性处理,而声学非线性问题,从而影响双讲检测效果。而本实施例中,通过对子带自适应滤波处理后的信号再进行初步的NLP处理,可以至少部分解决非线性问题,提高远端检测和双讲检测的效果。
[0184] NLP消除程度设定单元535,用于根据更新后的ERL,以及所述检测结果,进行NLP消除程度设定。
[0185] 其中,NLP消除程度设定可以获取到NLP等级。
[0186] 具体的,NLP等级可以根据上述的检测结果,以及更新后的ERL值确定。其中,ERL越高采用的消除等级越高,反之亦然。在没有远端信号的情况下,采用最小的消除等级,以便更好的保护近端语音。
[0187] 假设NLP等级分为5级(分别用0,1,2,3,4表示),
[0188] 具体实现过程的伪代码如下:
[0189] Case听筒模式:
[0190] If无远端信号:nlpMode=0;
[0191] Else if ERL<0.05:nlpMode=0;
[0192] Else if nlpMode=1;
[0193] Case免提模式:
[0194] If无远端信号:nlpMode=0;
[0195] Else if ERL<1:nlpMode=1;
[0196] Else if ERL>4:nlpMode=4;
[0197] Else:nlpMode=2;
[0198] If(双讲状态&&nlpMode>=2)nlpMode--;
[0199] 可选的,所述NLP消除程度设定单元534具体用于:
[0200] 确定当前状态,当前状态包括:听筒模式或者免提模式;
[0201] 其中,可以在移动设备的用户界面(User Interface,UI)上提供选择项,由用户选择听筒模式或者免提模式,进而执行本实施例的模块可以根据用户的选择确定当前状态。
[0202] 其中,听筒模式包括:用户直接通过扬声器收听,或者用户通过耳机收听。
[0203] 在当前状态是听筒模式时,根据有无远端信号,以及更新后的ERL确定NLP等级;
[0204] 其中,当没有远端信号时,NLP等级=0;或者,
[0205] 当存在远端信号且更新后的ERL小于0.05时,NLP等级=0;或者,
[0206] 当存在远端信号且更新后的ERL大于或等于0.05时,NLP等级=1。
[0207] 或者,
[0208] 在当前状态是免提模式时,根据有无远端信号,以及更新后的ERL确定初步的NLP等级,并根据是否双讲状态以及初步的NLP等级,确定最终的NLP等级。
[0209] 其中,当没有远端信号时,初步的NLP等级=0;或者,
[0210] 当存在远端信号且更新后的ERL小于1时,初步的NLP等级=1;或者,[0211] 当存在远端信号且更新后的ERL大于4时,初步的NLP等级=4;或者,[0212] 当存在远端信号且更新后的ERL大于或等于1以及小于或等于4时,初步的NLP等级=2;
[0213] 当双讲状态且初步的NLP等级大于或等于2时,最终的NLP等级=初步的NLP等级-1,其他情况下,最终的NLP等级=初步的NLP等级。
[0214] 现有技术中,NLP后滤波处理对于各种品牌机型的自适应能力较弱,而本实施例中,通过确定NLP等级,能够自适应的选择NLP的消除程度,这样做对于不同型号的手机避免了大量的手工适配工作。
[0215] NLP后滤波处理模块54,用于根据所述NLP处理参数,对所述自适应滤波处理后的信号进行NLP后滤波处理。
[0216] 非线性处理(Non-Linear Processing,NLP)后滤波模块用于进一步抑制残留回波(如非线性回波成分等),一般会采用维纳滤波或相干系数的方法进行后滤波处理。
[0217] 所述NLP处理参数包括:NLP等级以及实际的最佳相干系数,所述NLP后滤波处理模块54具体用于:
[0218] 根据所述NLP等级以及所述实际的最佳相干系数,确定后滤波系数;
[0219] 根据所述后滤波系数,对所述初步NLP滤波后的信号进行NLP后滤波处理。
[0220] 例如,后滤波处理的系数w(k)'的计算公式是:
[0221] w(k)'=w(k)α×f(k)
[0222] 其中,w(k)是实际的最佳相干系数,α是NLP等级(如果存在最终的NLP等级,此时具体是指最终的NLP等级),f(k)是已知的递增函数,k是子带索引,也是傅立叶变换的频率位。
[0223] 在确定出后滤波系数w(k)'后,可以对自适应滤波模块52输出的自适应滤波处理后的信号(具体可以是子带自适应滤波处理后的信号)进行相应的非线性消除处理。
[0224] 由于NLP预处理以及NLP后滤波处理都是在每个子带上进行的,因此,另一实施例中,参见图6,该装置50还包括:
[0225] 子带合成模块55,用于对NLP后滤波处理后的信号,进行子带合成。
[0226] 其中,子带合成时采用的运算可以具体是上述子带分析的逆运算。
[0227] 本实施例中,通过进行NLP预处理,在NLP预处理时采用一些优化措施,从而提高AEC效果。本实施例中,基于子带自适应滤波处理,可以很好的解决FFT分带处理各个频带之间的混叠比较大的问题,从而保证了非线性后处理模块能够更好地抑制非线性残留回波。具体的,在NLP预处理时,本实施例中,通过前后搜索选择最佳相干系数,能够很好的解决延迟估计偏差带来的不利影响,从而降低NLP后滤波模块对延迟估计准确度的依赖,增加健壮性。本实施例中,ERL估计和双讲检测模块是基于初步NLP后的信号,进一步提高了ERL估计和双讲检测的准确度和实时性,进而可以获得更好更稳定的NLP性能。本实施例中,ERL估计可以反映出不同手机的声学特性以及当前声学环境的动态变化,从而使我们可以选择最优的NLP的消除等级,有效地避免大量的人工干预和适配工作,使整个系统具有更强的适应性和健壮性。本实施例中,在近端单讲和双讲的状态下,对于NLP的消除等级进行优化选择,更好地保护近端语音和双讲效果。
[0228] 需要说明的是,在本发明的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是指至少两个。
[0229] 流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
[0230] 应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
[0231] 本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相干的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[0232] 此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
[0233] 上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0234] 在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0235] 尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。