本发明涉及回声消除技术领域,尤其涉及一种回声非线性处理的分级调整方法、终端及存储介质。
背景技术:
在电信系统中,由于二四线转换中平衡阻抗和外线阻抗不完全匹配时产生了电学回声。如果没有做回声消除处理,由于网络延时,远端的用户就会听出自己说话的回声。
现有的回声非线性消除器仅仅支持使能和非使能开关(enable/disable),不支持回声非线性处理的回波损耗(erl,echoreturnloss,回波损耗)的分级调整。目前的实现仅仅能满足g.168协议规定最坏的情况是erl最小为6db的情况,再更恶劣的情况非线性处理工作就不稳定了,导致把近端语音(例如在系统就是从tdm->ip方向的语音,讲电话语音是从tdm进入系统的,从自身这侧进入系统的是近端语音,从对端过来的语音是远端语音)的部分擦除掉,使语音不连续(连续的语音被非线性处理器切除了部分语音信号就造成了不连续。就是语音中有断的)。
因此,现有技术还有待于改进和发展。
技术实现要素:
本发明的主要目的在于提供一种回声非线性处理的分级调整方法、终端及存储介质,旨在解决现有技术的上述缺陷。
为实现上述目的,本发明提供一种回声非线性处理的分级调整方法,所述回声非线性处理的分级调整方法包括如下步骤:
接收近端语音和远端信号的回声的输入;
通过线性回声消除器在回声尾长内移除回声的线性部分;
当近端语音不存在时,通过非线性回声消除器移除经线性处理后的回声的残余值。
可选地,所述的回声非线性处理的分级调整方法,其中,所述回声非线性处理的分级调整方法还包括:
双向检测器判定近端语音存在时阻止回声非线性消除器工作。
可选地,所述的回声非线性处理的分级调整方法,其中,所述双向检测器用于检测近端语音和远端语音的回声。
可选地,所述的回声非线性处理的分级调整方法,其中,所述回声非线性处理的分级调整方法还包括:
当近端语音能量减去远端信号大于等于预设回波损耗值时,双向检测器判定为近端语音,非线性处理器允许信号通过,否则当作回声被做清除。
可选地,所述的回声非线性处理的分级调整方法,其中,所述回声非线性处理的分级调整方法还包括:
如果线路回声消除器设置在一个已知回波损耗特性的网络中,使用回波损耗值调整非线性处理器对信号进行操作;
根据网络中预期的回波损耗值调整双向检测的门限,并提供多个级别的参数。
可选地,所述的回声非线性处理的分级调整方法,其中,所述线路回声消除器包括线性回声消除器和非线性回声消除器。
此外,为实现上述目的,本发明还提供一种终端,其中,所述终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的回声非线性处理的分级调整程序,所述回声非线性处理的分级调整程序被所述处理器执行时实现如上所述的回声非线性处理的分级调整方法的步骤。
此外,为实现上述目的,本发明还提供一种存储介质,其中,所述存储介质存储有回声非线性处理的分级调整程序,所述回声非线性处理的分级调整程序被处理器执行时实现如上所述的回声非线性处理的分级调整方法的步骤。
本发明通过接收近端语音和远端语音的回声的输入;通过线性回声消除器在回声尾长内移除回声的线性部分;当近端语音不存在时,通过非线性回声消除器移除经线性处理后的回声的残余值。本发明通过分级调整双向检测器的工作模式,使回声非线性消除器在各种已知网络erl的场合下都能正确的工作,使得数字信号处理器在一些极端的网络环境中也可以正常工作,提升了通话的语音质量。
附图说明
图1是本发明回声非线性处理的分级调整方法的较佳实施例的流程图;
图2是本发明回声非线性处理的分级调整方法的较佳实施例中回声消除工作流程示意图;
图3是本发明回声非线性处理的分级调整方法的较佳实施例中回声误检重叠区的示意图;
图4为本发明终端的较佳实施例的运行环境示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
对数字信号处理器来说,远端信号的回声和近端的的信号是没有区别的,回声消除的工作就是要把没有任何区别的远端信号的回声和近端信号识别出来并处理。
远端的声音信号和回声是相关的,远端的声音信号并非等同于回声。远端的声音经过四线转二线从电话口输出到电话机,近端信号从电话机输入经过二线转四线到数字信号处理器,远端信号经过二四线转换的电路串到了近端的输入线路形成了回声。回声与远端信号的差别用一个函数来表示:
fe=f(fs);
fs=far-endsignal(远端信号);fe=far-endecho(远端回声);
如果能够对这个函数求解,那么就可以根据远端声音信号和远端回声之间的相关性进行建模,这个模型是对回声馈路的模拟,会高度逼近回声馈路,等到这个模型稳定时,输入远端声音信号fs,就可以输出高度接近远端回声的信号fe。通过滤波器生成反相的信号,和采集到的声音信号进行叠加,就可以把回声信号消除掉。这就是回声消除线性回声消除的基本原理。这个函数求出来的解不大可能和远端回声完全一致,只能高度逼近。该函数求出来的解和远端回声越逼近,回声消除的效果就越好。
虽然实时语音的通话是双工模式,但是可以分为不同的情形:静音、单讲和双讲。针对不同的情形要采取不同的回声消除策略。
1)静音
没有人说话的情形。在语音段才需要做回声消除,在非语音段不会有回声,不需要做回声消除,甚至不需要发送语音信息,从而可以降低码率,节约带宽成本。因此,准确探测语音活动十分重要。语音的探测算法叫vad(voiceactivitydetection)。不同的厂商有不同的vad实现方法,利用基音周期实现vad,有效地提高vad判断的准确性,避免将非语音段误判为语音段。
2)单讲
只有远端说话的情形。由于只有远端说话,从麦克风采集进来的语音信号只包含远端的回声,而不包含近端的语音。单讲情形下的回声消除相对比较容易处理,可以采取比较激进的处理策略。如果确定单讲是高概率事件的情况下,可以直接地把所有语音信号都干掉,然后适当地填充舒适噪音。一般来说,在单讲情形下,用线性自适应滤波器跟踪回声馈路,可以很好地消除回声,大概能够抑制掉18db的回声。
3)双讲
有多方同时说话的情形。由于有多方同时说话,从话筒采集进来的语音信号就包含了远端的回声和近端的语音,两者混合在一起。双讲情形下的回声消除就十分困难:一方面要保护近端的语音信号不被损伤,另外一方面还要尽量地把回声消除干净。一般来说,在远端回声比近端语音能量还要高的情况下,如果要把远端回声消除干净,那么肯定会或多或少地损伤到近端语音。
回声消除的实现:
回声消除主要包含两个步骤:线性自适应滤波和非线性处理。线性自适应滤波就是对fe=f(fs)求解,建立远端回声的语音模型,进行第一轮回声消除。非线性处理是对衰减能量达到阈值的语音信号进行比较激进的剪切处理。
回声消除的原理与实现
线性自适应滤波:
以远端声音信号和远端回声的相关性为基础,建立远端回声的语音模型,利用它对远端回声进行估计,目的是获得对远端回声尽量逼近的估计。可以把回声馈路看作一个“环境滤波器”。经过它的处理,远端声音信号被变成远端回声。回声消除就是要构建一个“算法滤波器”,基于对远端回声的语音模型,不断地调整该滤波器的系数,使得估计值更加逼近真实的回声。估计值越逼近真实回声,回声消除效果就越好。
自适应滤波器收敛后得到的就是需要求解的回声馈路函数fe=f(fs)。当滤波器收敛稳定之后,输入远端声音信号fs,就可以输出相对准确的对远端回声信号的估计值fe。把采集到的信号减去远端回声信号的估计值fe,就得到实际要发送的语音信号。
实现线性自适应滤波器有两个难点:
1)快速收敛
在收敛阶段,采集到声音信号要求只有远端的回声信号,不能混有近端的语音信号。近端的语音信号和远端的参考语音信号没有相关性,会对自适应滤波器的收敛过程造成扰乱。因此,让自适应滤波器收敛的时间尽量的短,短到收敛过程的时间段里采集进来的信号只有远端的回声信号,这样自适应滤波器收敛的效果就会很好。在收敛好之后,滤波器就稳定下来了,就可以用来过滤远端的回声信号了。
2)动态自适应
在收敛好稳定下来以后,自适应滤波器还要随时自动适应回声馈路的变化。自适应滤波器要能够判断回声馈路是否发生变化,并且能够重新学习和对其进行建模,不断地调整该滤波器的系数,进入一个新的收敛过程,最后快速地逼近新的回声馈路。
这两个难点是一对矛盾的特征,要求自适应滤波器一方面要能够快速收敛后保持系数高度稳定,另外一方面要能够随时保持更新状态跟踪回声馈路的变化。
非线性处理
1)非线性剪切处理
在完成了上述线性滤波处理以后,其实剩下的回声一般都比较小了而且回声是断断续续的了,但不排除仍有一些残留的可以感知的小回声。为了进一步消除这些小回声,要根据前面处理得到的衰减量来做进一步的抑制处理。
在这里要为衰减量设定一个阈值。一般来说,这个衰减量阈值要设定得比较保守(比较高)。
如果衰减量达到或者超过设定的阈值,就表明回声消除量比较大,采集进来的语音信号很可能全部都是回声信号,那么就直接将语音信号全部消除掉,并填充舒适噪声,防止声音听感起伏。能达到那么大的衰减量,一般是处于远端单讲状态,或者远端回声信号要远远大于近端语音信号的双讲状态。正常的双讲状态下,为了保护近端语音的音质,自适应滤波器是不会做大幅的回声消除的。因此,只要衰减量达到或者超过设定阈值,把采集到的语音信号全部消除掉是不会影响正常听音效果的。
如果衰减量没有超过设定的阈值,那么就不要进一步做回声消除了。这种情形可能是双讲状态,要保护本地语音的音质,避免本地语音被当成回声误杀。业界一般有两种做法:一种是允许对近端声音有些许损伤也要把远端回声消除干净,另外一种是允许保留些许远端回声也不要对近端声音造成损伤。如果过分消除回声,就会造成断续的听音感觉。回声消除就是要在这两种做法之间找平衡点。
本发明较佳实施例所述的回声非线性处理的分级调整方法,如图1和图2所示,所述回声非线性处理的分级调整方法包括以下步骤:
步骤s10、接收近端语音和远端语音的回声的输入;
步骤s20、通过线性回声消除器在回声尾长内移除回声的线性部分;
步骤s30、当近端语音不存在时,通过非线性回声消除器移除经线性处理后的回声的残余值。
具体地,在回声消除的算法中双向检测器(检测近端语音和远端语音的检测器)判定近端语音存在时阻止回声非线性消除器工作,线路回声消除器(线路回声消除器包含线性和非线性消除)的双向检测器是基于双向语音能量的比较来工作的,在双向能量的比较中,回波损耗(erl)是一个重要的参数。双向检测器比较满足这个条件ectx–ecrx>-erl就认为此时是近端语音,非线性处理器尽量不对信号做处理,允许信号漏过去,不满足这个条件,非线性处理器就对信号做侵略性的处理,会将部分信号擦除掉,导致有切音的存在,语音会变的不连续。
其中,ectx=tdmrx=近端语音 远端语音的回声,就是从tdm侧上来的语音,ec就是echo,回声的意思,tx就是发送的意思,rx就是接收的意思,两个组合ecrx=tdmtx=远端语音。
但是某些场景回声消除器就工作不稳定,当从网络侧过来的信号比较大,而近端语音信号又比较小的时候(比如电话线路过长,对语音信号的衰减比较大,导致进入数字信号处理器的语音信号就比较小),回声消除器时常会把近端语音擦除掉一部分,有时又把回声漏过去。
这是因为这些场景双向信号的输入到如图3中“重叠”的区域,双向检测器的判断结果处于一个不确定的状态。“重叠”区域的信号特征很难去正确地区分近端语音还是回声,如果判断为近端语音,非线性消除器就尽量不工作将信号漏过去,如果判断为回声,非线性消除器就尽量将所有信号都擦除掉。
当近端语音的信号足够强的时候就很清晰的判断近端语音的存在,但是当回声的水平和近端语音的能量水平相当,很难正确地区分出回声还是近端语音。
根据g.168的协议规范,回声消除器能处理的最坏情况的最小回波损耗是6db,所以数字信号处理器就是根据最小回波阻抗6db来实现的,非线性处理器也仅仅只支持打开/关闭的操作方式,在比最小回波损耗6db更恶劣的工作场景中数字信号器的工作就不稳定。本发明的回声非线性处理的分级处理方式来适应各种使用场景。
当近端语音能量(tdmrx)-远端信号(tdmtx)>=-erl,双向检测器认为是近端语音,
非线性处理器允许信号通过,否则当作回声被做清除操作。
如果线路回声消除器部署在一个已知回波损耗(erl)特性的网络中,使用erl值去调整非线性处理器(nlp)对信号的操作方式,从而改善线路的语音质量。
根据网络中预期的erl值来调整双向检测的门限,提供了12级别的参数调整,如下表:
其中,ectx=tdmrx=近端语音 远端语音回声,ecrx=tdmtx=远端语音。
本发明通过回声非线性处理回波损耗的分级调整的方式来使回声非线性消除器在各种已知网络erl的场合下都能正确的工作,在一个已知erl值的网络中,可根据erl的值配置合适的双向检查模式来使回声消除器工作在一个稳定的状态;通过分级调整双向检测器工作模式的方法,使得数字信号处理器在一些极端的网络环境中也可以正常工作,提升通话的语音质量。
进一步地,如图4所示,基于上述回声非线性处理的分级调整方法,本发明还相应提供了一种终端,所述终端包括处理器10、存储器20及显示器30。图4仅示出了终端的部分组件,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
所述存储器20在一些实施例中可以是所述终端的内部存储单元,例如终端的硬盘或内存。所述存储器20在另一些实施例中也可以是所述终端的外部存储设备,例如所述终端上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器20还可以既包括所述终端的内部存储单元也包括外部存储设备。所述存储器20用于存储安装于所述终端的应用软件及各类数据,例如所述安装终端的程序代码等。所述存储器20还可以用于暂时地存储已经输出或者将要输出的数据。在一实施例中,存储器20上存储有回声非线性处理的分级调整程序40,该回声非线性处理的分级调整程序40可被处理器10所执行,从而实现本申请中回声非线性处理的分级调整方法。
所述处理器10在一些实施例中可以是一中央处理器(centralprocessingunit,cpu),微处理器或其他数据处理芯片,用于运行所述存储器20中存储的程序代码或处理数据,例如执行所述回声非线性处理的分级调整方法等。
所述显示器30在一些实施例中可以是led显示器、液晶显示器、触控式液晶显示器以及oled(organiclight-emittingdiode,有机发光二极管)触摸器等。所述显示器30用于显示在所述终端的信息以及用于显示可视化的用户界面。所述终端的部件10-30通过系统总线相互通信。
在一实施例中,当处理器10执行所述存储器20中回声非线性处理的分级调整程序40时实现以下步骤:
接收近端语音和远端语音的回声的输入;
通过线性回声消除器在回声尾长内移除回声的线性部分;
当近端语音不存在时,通过非线性回声消除器移除经线性处理后的回声的残余值。
所述回声非线性处理的分级调整方法还包括:
双向检测器判定近端语音存在时阻止回声非线性消除器工作。
所述双向检测器用于检测近端语音和远端语音。
所述回声非线性处理的分级调整方法还包括:
当近端语音能量减去远端信号大于等于预设回波损耗值时,双向检测器判定为近端语音,非线性处理器允许信号通过,否则当作回声被做清除。
所述回声非线性处理的分级调整方法还包括:
如果线路回声消除器设置在一个已知回波损耗特性的网络中,使用回波损耗值调整非线性处理器对信号进行操作;
根据网络中预期的回波损耗值调整双向检测的门限,并提供多个级别的参数。
所述线路回声消除器包括线性回声消除器和非线性回声消除器。
本发明还提供一种存储介质,其中,所述存储介质存储有回声非线性处理的分级调整程序,所述回声非线性处理的分级调整程序被处理器执行时实现如上所述的回声非线性处理的分级调整方法的步骤。
综上所述,本发明提供一种回声非线性处理的分级调整方法、终端及存储介质,所述方法包括:接收近端语音回声和背景噪音的输入;通过线性回声消除器在回声尾长内移除回声的线性部分;当近端语音不存在时,通过非线性回声消除器移除经线性处理后的回声的残余值。本发明通过分级调整双向检测器的工作模式,使回声非线性消除器在各种已知网络erl的场合下都能正确的工作,使得数字信号处理器在一些极端的网络环境中也可以正常工作,提升了通话的语音质量。
当然,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关硬件(如处理器,控制器等)来完成,所述的程序可存储于一计算机可读取的存储介质中,所述程序在执行时可包括如上述各方法实施例的流程。其中所述的存储介质可为存储器、磁碟、光盘等。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
1.一种回声非线性处理的分级调整方法,其特征在于,所述回声非线性处理的分级调整方法包括:
接收近端语音和远端语音的回声的输入;
通过线性回声消除器在回声尾长内移除回声的线性部分;
当近端语音不存在时,通过非线性回声消除器移除经线性处理后的回声的残余值。
2.根据权利要求1所述的回声非线性处理的分级调整方法,其特征在于,所述回声非线性处理的分级调整方法还包括:
双向检测器判定近端语音存在时阻止回声非线性消除器工作。
3.根据权利要求1或2所述的回声非线性处理的分级调整方法,其特征在于,所述双向检测器用于检测近端语音和远端语音。
4.根据权利要求1所述的回声非线性处理的分级调整方法,其特征在于,所述回声非线性处理的分级调整方法还包括:
当近端语音能量减去远端信号大于等于预设回波损耗值时,双向检测器判定为近端语音,非线性处理器允许信号通过,否则当作回声被做清除。
5.根据权利要求4所述的回声非线性处理的分级调整方法,其特征在于,所述回声非线性处理的分级调整方法还包括:
如果线路回声消除器设置在一个已知回波损耗特性的网络中,使用回波损耗值调整非线性处理器对信号进行操作;
根据网络中预期的回波损耗值调整双向检测的门限,并提供多个级别的参数。
6.根据权利要求1所述的回声非线性处理的分级调整方法,其特征在于,所述线路回声消除器包括线性回声消除器和非线性回声消除器。
7.一种终端,其特征在于,所述终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的回声非线性处理的分级调整程序,所述回声非线性处理的分级调整程序被所述处理器执行时实现如权利要求1-6任一项所述的回声非线性处理的分级调整方法的步骤。
8.一种存储介质,其特征在于,所述存储介质存储有回声非线性处理的分级调整程序,所述回声非线性处理的分级调整程序被处理器执行时实现如权利要求1-6任一项所述的回声非线性处理的分级调整方法的步骤。
技术总结