HI,欢迎来到起点商标网!
24小时服务QQ:2880605093

一种回声残留判断方法与流程

2021-01-28 14:01:30|285|起点商标网
一种回声残留判断方法与流程

本发明涉及回声消除技术领域,特别指一种回声残留判断方法。



背景技术:

当声音往返延时超过30ms时,讲话者就能分辨出回声和本地语音,回声会劣化通话音质,影响通话体验,因此,回声消除功能是通话应用中必备的一种音频处理功能,常见于视讯会议、喇叭扩声器和手机通话等。通过消除麦克风拾取信号中的回声成分,能排除回声对通话的干扰,提高语音的可懂度,并防止啸叫。

传统上消除回声残留的方法是基于误差信号、近端信号和当前近端信号对应的远端信号三者的相关性,生成抑制因子,将抑制因子作用于误差信号,从而大幅衰减误差信号中的非线性回声残留,得到干净语音。但是,传统的方法存在如下缺点:使用的判断频带较为单一,遗漏了非语音频段,或者对当前所有频点的相干性求平均,相干性高的个别频点放到全局变得很小,低于阈值,导致回声状态判断和实际存在误差,误算了误差信号的抑制曲线,导致回声有残留,甚至出现回声自激引起的啸叫。

经检索,申请日为2011.05.17,申请号为cn201180072348.6的中国发明专利公开了可实现声学回声消除的音频信号非线性后期处理方法和系统,该专利的回声消除原理如图4所示,该专利分别对误差信号、近端信号、远端信号做fft;计算误差信号和近端信号各频点的相干性,记为cde,回声残留越多,cde越小,反之越大;计算近端信号和远端信号各频点的相干性,记为cxd,它可用于辅助检查当前近端信号中是否有回声,有回声时,cxd相对较高,反之越小,为了使两种相干性的渐变方向保持一致,记c'xd=1-cxd,有回声时,c'xd相对较小,反之越大;统计cde和c'xd在首选频率带的平均相干性,基于平均值判断当前的回声状态,比如当前有回声,回声残留较多,需要提高抑制量,抑制回声残留;最后判断结果得到的抑制因子生成抑制曲线,将抑制曲线作用到误差信号就得到最终的干净语音。不过,统计cde和c'xd的平均相干性的公式为:

其中n是fftsize,fs是信号采样率。

从公式中可以看到它只选择500hz到3500hz各频点的相干性来判断,如果当前回声为纯粹的人声,那么没有问题;如果当前远端信号为高频或纯低频为主的杂音,比如唇齿音,那么因为杂音频率在[500hz,3500hz]之外或者求平均之后的相干性低于判断阈值,而认为当前没有回声残留,结果就出现有回声残留或者回声自激引起的啸叫。如图5所示,就是该类算法回声消除的结果,前半段是语音,回声没有残留,后半段是唇齿音,唇齿音不但没被消除,还出现轻微的啸叫现象。

因此,如何提供一种回声残留判断方法,实现降低回声状态的误检率,进而减少回声残留,成为一个亟待解决的问题。



技术实现要素:

本发明要解决的技术问题,在于提供一种回声残留判断方法,实现降低回声状态的误检率,进而减少回声残留。

本发明是这样实现的:一种回声残留判断方法,包括如下步骤:

步骤s10、确认近端信号d(n)对应的远端信号x(n),基于所述近端信号d(n)以及远端信号x(n)得到误差信号e(n);

步骤s20、分别对所述近端信号d(n)、远端信号x(n)以及误差信号e(n)进行快速傅立叶变换,分别得到对应的频域信号d(k)、x(k)以及e(k),基于各所述频域信号分别计算近端信号d(n)、远端信号x(n)以及误差信号e(n)的功率谱密度以及互功率谱密度;

步骤s30、基于所述功率谱密度以及互功率谱密度,分别计算所述近端信号d(n)和误差信号e(n)、远端信号x(n)和近端信号d(n)的各频点的相干系数;

步骤s40、将声音信号的频域部分划分为三个子频带,并计算各所述子频带的误差信号e(n)的平均功率谱密度;

步骤s50、基于所述相干系数计算各子频带的平均相干系数;

步骤s60、基于所述频域信号计算各子频带的误差信号e(n)的频谱平坦度,并设定一用于判断是否为稳态噪声的阈值;

步骤s70、基于所述频谱平坦度、阈值、平均功率谱密度以及平均相干系数判断误差信号e(n)是否有回声残留。

进一步地,所述步骤s10具体为:

确认近端信号d(n)对应的远端信号x(n),利用频域自适应滤波算法预估所述远端信号x(n)的线性回声,将所述近端信号d(n)减去线性回声得到误差信号e(n)。

进一步地,所述步骤s20中,所述基于各所述频域信号分别计算近端信号d(n)、远端信号x(n)以及误差信号e(n)的功率谱密度以及互功率谱密度具体为:

近端信号d(n)的功率谱密度:sd(k)=λsd(k-1)+(1-λ)(d(k)·d*(k));

远端信号x(n)的功率谱密度:sx(k)=λsx(k-1)+(1-λ)(x(k)·x*(k));

误差信号e(n)的功率谱密度:se(k)=λse(k-1)+(1-λ)(e(k)·e*(k));

近端信号d(n)和误差信号e(n)的互功率谱密度:

sde(k)=λsde(k-1)+(1-λ)(d(k)·e(k));

远端信号x(n)和近端信号d(n)的互功率谱密度:

sxd(k)=λsxd(k-1)+(1-λ)(x(k)·d(k));

其中λ表示迭代因子,且λ=0.9;k表示近端信号d(n)、远端信号x(n)以及误差信号e(n)的频点,且k为正整数;d*(k)表示d(k)的共轭复数;x*(k)表示x(k)的共轭复数;e*(k)表示e(k)的共轭复数。

进一步地,所述步骤s30具体为:

设所述近端信号d(n)和误差信号e(n)的各频点的相干系数为cde(k),则:

设所述远端信号x(n)和近端信号d(n)的各频点的相干系数为cxd(k),则:

其中表示sde(k)的共轭复数;表示sxd(k)的共轭复数。

进一步地,所述步骤s40具体为:

设定声音信号的三个子频带分别为low、middle以及high;且low、middle以及high均属于[250hz,fs/2],其中fs表示信号采样率;

当fs=8000hz时,low=[250hz,1750hz],middle=[1750hz,3000hz],high=[3000hz,4000hz];

当fs>8000hz时,low=[250hz,1750hz],middle=[2500hz,4000hz],high=[4500hz,6500hz];

设low、middle以及high子频带的误差信号e(n)的平均功率谱密度分别为slow、smiddle以及shigh,通过下式进行计算:

其中lowfreq表示当前频带的下限,highfreq表示当前频带的上限,n为正整数,kl表示当前频带的频点的下限,kh表示当前频带的频点的上限。

进一步地,所述步骤s50具体为:

设low、middle以及high子频带的近端信号d(n)和误差信号e(n)的平均相干系数分别为hdelow、hdemiddle以及hdehigh,通过下式进行计算:

设low、middle以及high子频带的远端信号x(n)和近端信号d(n)的平均相干系数分别为hxdlow、hxdmiddle以及hxdhigh,通过下式进行计算:

进一步地,所述步骤s60具体为:

设low、middle以及high子频带的误差信号e(n)的频谱平坦度分别为flow、fmiddle以及fhigh,通过下式进行计算:

通过vad检测非语音状态下近端语音的频谱平坦度,并设为用于判断是否为稳态噪声的阈值,记为flimit。

进一步地,所述步骤s70具体包括:

步骤s71、分别判断所述flow、fmiddle以及fhigh是否大于flimit,若是,则令s'low=1.5slow,f'middle=fmiddle,f'high=fhigh,并进入步骤s72;若否,则令s'low=0,f'middle=0,f'high=0,并进入步骤s72;

步骤s72、选取s'low、f'middle以及f'high中最大值对应的频带作为bandx,若s'low、f'middle以及f'high取值相同,则选取s'low对应的频带作为bandx,并选取bandx对应的hde和hxd;

步骤s73、判断是否hde大于0.98且hxd大于0.9,若是,说明误差信号e(n)无回声残留;若否,则进入步骤s74;

步骤s74、判断是否hde小于0.95或者hxd小于0.8,若是,说明误差信号e(n)有回声残留;若否,延续上一次的回声判断结果。

本发明的优点在于:

通过将声音信号的频域部分划分为三个频带,基于各频带的误差信号的平均功率谱密度、频谱平坦度、近端信号和误差信号的平均相干系数、远端信号和近端信号的平均相干系数来判断误差信号是否有回声残留;即首先借助误差信号的频谱平坦度判断当前语音信号是否为稳态噪声,当且仅当不是稳态噪声时采取抑制回声操作;然后基于误差信号各频带的平均功率谱密度,获取功率最大的频带,该频带对当前回声的贡献比最大;最后基于该频带的近端信号和误差信号的平均相干系数以及远端信号和近端信号的平均相干系数,判断误差信号内回声残留状况,若存在回声残留则提高抑制因子及过载值,否则减少;最终极大的降低了回声状态的误检率,进而极大的减少了回声残留。

附图说明

下面参照附图结合实施例对本发明作进一步的说明。

图1是本发明一种回声残留判断方法的流程图。

图2是本发明非线性抑制输入输出示意图。

图3是应用本发明进行回声残留消除的仿真图。

图4是传统上回声消除原理示意图。

图5是应用传统方法进行回声残留消除的仿真图。

具体实施方式

请参照图1至图5所示,本发明一种回声残留判断方法的较佳实施例,包括如下步骤:

步骤s10、确认近端信号d(n)对应的远端信号x(n),基于所述近端信号d(n)以及远端信号x(n)得到误差信号e(n);

步骤s20、分别对所述近端信号d(n)、远端信号x(n)以及误差信号e(n)进行快速傅立叶变换(fft变换),分别得到对应的频域信号d(k)、x(k)以及e(k),基于各所述频域信号分别计算近端信号d(n)、远端信号x(n)以及误差信号e(n)的功率谱密度以及互功率谱密度;即d(n)fft变换得到d(k),x(n)fft变换得到x(k),e(n)fft变换得到e(k);

步骤s30、基于所述功率谱密度以及互功率谱密度,分别计算所述近端信号d(n)和误差信号e(n)、远端信号x(n)和近端信号d(n)的各频点的相干系数;

步骤s40、将声音信号的频域部分划分为三个子频带,并计算各所述子频带的误差信号e(n)的平均功率谱密度;

步骤s50、基于所述相干系数计算各子频带的平均相干系数;

步骤s60、基于所述频域信号计算各子频带的误差信号e(n)的频谱平坦度,并设定一用于判断是否为稳态噪声的阈值;频谱平坦度用于排除稳态噪声,因为稳态噪声频谱相对平坦,而语音或突发性噪声有更多的谐波,频域上往往在基频和谐波中出现峰值;

步骤s70、基于所述频谱平坦度、阈值、平均功率谱密度以及平均相干系数判断误差信号e(n)是否有回声残留。

还包括步骤s80、利用现有技术,基于步骤s70得到的误差信号e(n)的状态(是否有回声残留)求取抑制因子和过载值,最终得到误差信号频域抑制频响曲线消除回声残留。

所述步骤s10具体为:

在非线性抑制处理之前,通过延时估计器确认近端信号d(n)对应的远端信号x(n),利用频域自适应滤波算法预估所述远端信号x(n)的线性回声,将所述近端信号d(n)减去线性回声得到误差信号e(n);所述频域自适应滤波算法优选为nlms。

所述步骤s20中,所述基于各所述频域信号分别计算近端信号d(n)、远端信号x(n)以及误差信号e(n)的功率谱密度以及互功率谱密度具体为:

近端信号d(n)的功率谱密度:sd(k)=λsd(k-1)+(1-λ)(d(k)·d*(k));

远端信号x(n)的功率谱密度:sx(k)=λsx(k-1)+(1-λ)(x(k)·x*(k));

误差信号e(n)的功率谱密度:se(k)=λse(k-1)+(1-λ)(e(k)·e*(k));

近端信号d(n)和误差信号e(n)的互功率谱密度:

sde(k)=λsde(k-1)+(1-λ)(d(k)·e(k));

远端信号x(n)和近端信号d(n)的互功率谱密度:

sxd(k)=λsxd(k-1)+(1-λ)(x(k)·d(k));

其中λ表示迭代因子,且λ=0.9;k表示近端信号d(n)、远端信号x(n)以及误差信号e(n)的频点,且k为正整数;d*(k)表示d(k)的共轭复数;x*(k)表示x(k)的共轭复数;e*(k)表示e(k)的共轭复数。

所述步骤s30具体为:

设所述近端信号d(n)和误差信号e(n)的各频点的相干系数为cde(k),则:

设所述远端信号x(n)和近端信号d(n)的各频点的相干系数为cxd(k),则:

其中表示sde(k)的共轭复数;表示sxd(k)的共轭复数。

所述步骤s40具体为:

设定声音信号的三个子频带分别为low、middle以及high;且low、middle以及high均属于[250hz,fs/2],其中fs表示信号采样率;

当fs=8000hz时,low=[250hz,1750hz],middle=[1750hz,3000hz],high=[3000hz,4000hz];

当fs>8000hz时,low=[250hz,1750hz],middle=[2500hz,4000hz],high=[4500hz,6500hz];

排除250hz以下的声音信号是因为低于250hz的频带人声成分较少,且环境中低频噪声最为丰富;人声主要集中在低于2000hz的频带,因此[250hz,1750hz]频带用于判断人声残留情况,剩余两个频带用于判断高频部分的一些回声残留情况。

设low、middle以及high子频带的误差信号e(n)的平均功率谱密度分别为slow、smiddle以及shigh,通过下式进行计算:

其中lowfreq表示当前频带的下限,highfreq表示当前频带的上限,n为正整数,kl表示当前频带的频点的下限,kh表示当前频带的频点的上限。

所述步骤s50具体为:

设low、middle以及high子频带的近端信号d(n)和误差信号e(n)的平均相干系数分别为hdelow、hdemiddle以及hdehigh,通过下式进行计算:

设low、middle以及high子频带的远端信号x(n)和近端信号d(n)的平均相干系数分别为hxdlow、hxdmiddle以及hxdhigh,通过下式进行计算:

所述步骤s60具体为:

设low、middle以及high子频带的误差信号e(n)的频谱平坦度分别为flow、fmiddle以及fhigh,通过下式进行计算:

通过vad检测(语音活动检测)非语音状态下近端语音的频谱平坦度,并设为用于判断是否为稳态噪声的阈值,记为flimit。

所述步骤s70具体包括:

步骤s71、分别判断所述flow、fmiddle以及fhigh是否大于flimit,若是,说明当前语音信号不是稳态噪声,则令s'low=1.5slow,f'middle=fmiddle,f'high=fhigh,并进入步骤s72;若否,说明当前语音信号是稳态噪声,没有必要判断对应的频带是否存在回声残留,则令s'low=0,f'middle=0,f'high=0,并进入步骤s72;

对于low频带,即人声频带,因为是回声消除的主要目标频段,所以确认该频带不是稳态噪声后给它的平均功率谱密度分配1.5倍的权重。

步骤s72、选取s'low、f'middle以及f'high中最大值对应的频带作为bandx,若s'low、f'middle以及f'high取值相同,则选取s'low对应的频带作为bandx,并选取bandx对应的hde和hxd;

步骤s73、判断是否hde大于0.98且hxd大于0.9,若是,说明远端信号x(n)和近端信号d(n)高度不相干,误差信号e(n)无回声残留;若否,则进入步骤s74;

步骤s74、判断是否hde小于0.95或者hxd小于0.8,若是,说明误差信号e(n)有回声残留;若否,延续上一次的回声判断结果。

通过比对图3和图5,可以明显看到回声量大大减少。

综上所述,本发明的优点在于:

通过将声音信号的频域部分划分为三个频带,基于各频带的误差信号的平均功率谱密度、频谱平坦度、近端信号和误差信号的平均相干系数、远端信号和近端信号的平均相干系数来判断误差信号是否有回声残留;即首先借助误差信号的频谱平坦度判断当前语音信号是否为稳态噪声,当且仅当不是稳态噪声时采取抑制回声操作;然后基于误差信号各频带的平均功率谱密度,获取功率最大的频带,该频带对当前回声的贡献比最大;最后基于该频带的近端信号和误差信号的平均相干系数以及远端信号和近端信号的平均相干系数,判断误差信号内回声残留状况,若存在回声残留则提高抑制因子及过载值,否则减少;最终极大的降低了回声状态的误检率,进而极大的减少了回声残留。

虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。

起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。

此文章来源于网络,如有侵权,请联系删除

tips