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

突变噪声快速估计方法与流程

2021-01-28 15:01:10|282|起点商标网
突变噪声快速估计方法与流程

本发明属于无线通信领域,主要涉及一种语音降噪中的噪声估计算法,特别是一种能对突变噪声进行快速估计的方法。



背景技术:

语音信号因其具有直接、高效、方便的优点,作为传递信息的方式被应用于很多领域。然而,在使用语音进行信息表达的同时,实际环境中的噪声会无法避免地对其产生影响,噪声不仅影响语音接收者收听语音时的舒适度,还会影响各种语音处理应用的性能。在语音通信中,背景噪声是影响语音通信质量的主要因素之一,语音信号在传输过程中会受到来自外界环境噪声、通讯设备内部噪声的干扰,容易受到噪声的污染,会致使语音质量下降,语音系统性能恶化。语音降噪的目的是尽可能从带噪语音中提取纯净语音信号,降低背景噪声。语音的清楚程度取决于伴随信号的噪声级,系统可以通过在特定时间测量噪声级的方式来估计噪声。目前,噪声估计已成为语音增强技术中很关键的环节。在很多单通道语音增强算法中,尤其在噪声源不可知的情况下,实时噪声功率谱估计是很重要的。噪声估计的准确性会直接影响降噪算法的性能和最终效果,若噪声估计过高,则微弱的语音将被去掉,增强语音会产生失真;若估计过低,则会有较多的背景残留噪声,进而降低语音可懂度。噪声估计是语音降噪的基础,只有实现了快速的、准确的噪声估计,才能较好地抑制背景噪声,减小语音失真,提高通信质量。传统的噪声估计方法实现纯粹基于语音活动的检测,制约了噪声在语音存在时的更新,而且在弱语音信号的低输入信噪比时,其可靠性性能恶化较明显。

在短波、超短波电台的调幅、调频等语音通信模式中,电台解调输出的音频信号中的噪声功率会发生突变。由于信道增益的变化,在通信开始时,电台解调输出的噪声会突然变小;在通信结束时,电台解调输出的噪声会突然变大。对这种噪声突变的音频信号进行降噪处理时,噪声的快速估计尤为重要。

噪声谱估计是语音增强系统中一个重要组成部分。传统的噪声估计方法是使用语音活动性监测(vad:voiceactivedetection)判别语音是否出现,并分离出无声段,此时无声段主要表现为噪声特性,然后在无声区通过某种统计方法,获得背景噪声特性的近似估计,对噪声谱进行更新。尽管该方法在噪声为平稳的情况下是可行的,但是在实际的噪声环境中噪声谱的特性变化很大,且在低信噪比下,vad的误检率会增大,在不能正确判断无声段的情况下很难保证估计出来的噪声的准确性。基于vad的噪声估计需要先进行vad检测,在无声段进行噪声更新,这种噪声估计算法虽在平稳噪声环境下效果不错,但是在噪声谱特性不断变化的场景下,效果就不甚理想,且该方法依赖vad判断的准确性,在低信噪比条件下,vad准确性下降,影响噪声估计的准确性。为了实现精确的噪声估计,就要对噪声谱进行实时的估计。martin提出了一种基于最小值统计的方法来估计噪声。基于最小值统计的噪声估计可分为基于最小统计量(minimumstatistics,ms)的噪声估计方法、最小值控制的递归平均法(minimacontrolledrecursiveaveraging,mcra)估计噪声谱。ms方法通过跟踪特定窗内语音功率谱的最小值来估计噪声,乘以一个系数来补偿偏差。该方法所得噪声估计的方差是传统方法的2倍,同时它可能偶尔会削弱低能垦音素,尤其当最小观察窗很小时,只有以很高的计算复杂度为代价来克服其局限性。mcra方法是根据带噪声语音子带平滑功率谱与其最小值之间的比值,计算带噪语音子带中语音存在概率,调节时频平滑参数,加权带噪语音功率谱来估计噪声谱。后两种噪声谱估计方法保证了噪声谱估计的准确性,但在追踪带噪语音子带平滑功率谱最小值时都采用了固定时间的窗,因此在噪声突变的情况下,估计的噪声谱存在延时。

在现有的噪声估计算法中,mcra算法是目前应用较广、性能较好的一种噪声估计算法。在mcra算法中,噪声估计的更新速度受功率谱最小值和语音存在概率的控制。该类方法认为语音能量不会持续出现在固定的频点上,因此可以通过使用一个固定长度时间窗在每个频点上搜索最小值来作为噪声的估计值,但该类方法仍存在噪声谱估计延时较大的问题。对于突变噪声,mcra算法还是存在跟踪速度较慢的问题。特别是当噪声功率突然变大时,基于最小值统计的mcra算法的噪声估计会存在滞后现象,滞后时间在d和2d之间(d为最小值搜索窗的长度)。另外,当噪声功率突然变小时,由于mcra算法需要进行帧间递归平滑处理,所以噪声估计值不能快速下降。



技术实现要素:

本发明的目的是针对mcra噪声估计算法不能对突变噪声场景的噪声谱进行快速跟踪估计的不足之处,提供了一种复杂度低,能够快速且准确地估计噪声,能够有效提高噪声估计的跟踪能力的基于频谱排序和筛选的突变噪声快速估计方法。

本发明的上述目的可以通过以下措施来达到。一种突变噪声快速估计方法,其特征在于包括如下步骤:

快速傅里叶变换fft:对输入的带噪语音信号进行分帧、加汉宁窗,然后进行n点快速傅里叶变换fft;

求解带噪语音功率谱:对带噪语音信号频谱取模值、取平方,得到带噪语音功率谱值;

频谱排序及筛选:对带噪语音功率谱按照从小到大、从左到右进行排序,然后分别去掉左右两端的一部分频点,筛选出中间部分的频点计算平均值,得到第l帧整个频带的平均噪声功率谱;

噪声突变检测及参数修正:判断噪声是否存在突变,比较前后帧之间平均噪声功率谱的估计值的变化量,若变化量超过设定阈值,判定为发生了噪声突变,则对当前帧的平滑参数和状态变量进行校正;否则判定为未发生噪声突变,直接按照经典mcra算法进行条件语音存在概率计算、噪声谱估计更新,递归平滑计算更新噪声功率估计值,输出噪声谱估计值。

本发明相比于现有技术具有如下有益效果:

保留了经典mcra算法的优势。本发明针对mcra噪声估计算法不能对突变噪声进行快速跟踪估计的不足进行改进,引入基于频谱排序和筛选的平均噪声功率快速估计、噪声突变检测、平滑参数和状态变量校正等措施,在经典mcra算法的基础上进行改进和优化,实现了对突变噪声的快速估计。通过引入一系列附加措施完成改进和优化,进行递归平滑计算得到噪声功率估计值,保留并继承了mcra算法针对非平稳噪声场景进行噪声估计的优势。

能够快速且准确地估计噪声。本发明针对mcra噪声估计算法在噪声水平升高时存在跟踪时延和估计不准确的问题,基于频谱排序和筛选,筛选出中间部分的频点计算平均值,得到第l帧整个频带的平均噪声功率谱,当检测到存在噪声突变时,使用平均噪声功率谱对参数进行修正,从而使最小值跟踪不受窗长约束而减少跟踪时延;在平稳和非平稳噪声环境中,都能有效提高增强后语音的质量。通过在经典mcra算法基础上引入基于频谱排序和筛选的快速平均噪声功率估计、噪声功率谱突变检测、突变噪声状态重置等措施,能够有效提高噪声估计的跟踪能力,实现了对突变噪声的快速估计,噪声估计跟踪时间缩短了90%以上,解决了经典mcra算法在噪声强度突然增大时跟踪能力较差,噪声抑制收敛速度较慢的问题。

复杂度低,易于实现。本发明引入的基于频谱排序和筛选的平均噪声估计、噪声功率谱突变检测、突变噪声状态重置等措施尽在经典mcra算法基础上引入了排序、阈值比较法、参数重置与修正等低复杂度流程,不会对mcra算法的时间复杂度产生太大影响。

附图说明

图1表示本发明突变噪声快速估计方法的处理流程框图。

图2是条件语音存在概率计算的算法流程图。

图3是频谱排序和筛选算法流程图。

图4是噪声突变检测算法流程图。

图5是噪声估计平滑参数及状态变量修正算法流程图。

下面结合附图及具体实施例,对本发明进行详细说明。

具体实施方式

参阅图1。根据本发明,快速傅里叶变换fft:对输入的带噪语音信号进行分帧、加汉宁窗,然后进行n点快速傅里叶变换fft;求解带噪语音功率谱:对带噪语音信号频谱取模值、取平方,得到带噪语音功率谱和幅度平方值;频谱排序及筛选:基于频谱排序和筛选,按照从小到大、从左到右进行排序,然后分别去掉左右两端的一部分频点,筛选出中间部分的频点计算平均值,得到第l帧整个频带的平均噪声功率谱;

噪声突变检测及参数修正:判断噪声是否存在突变,比较前后帧之间平均噪声功率谱的估计值和变化量,若变化量超过设定阈值,判定为发生了噪声突变,则对当前帧的平滑参数和状态变量进行校正;否则判定为未发生噪声突变,直接按照经典mcra算法进行条件语音存在概率计算、噪声谱估计更新,递归平滑计算更新噪声功率估计值,输出噪声谱估计值。

具体包括如下步骤:

对输入的带噪语音信号y(n)进行分帧、加汉宁窗,然后根据fft点数n、频点数k,按帧计数号对第l帧进行n点快速傅里叶变换fft,得到第l帧带噪语音频谱y(k,l),再计算出y(k,l)幅度的平方值,得到带噪语音功率谱|y(k,l)|2

按照从小到大、从左到右对|y(k,l)|2(0<k<n/2)进行排序,然后分别去掉左右两端的一部分频点,筛选出中间部分的频点计算平均值,得到第l帧整个频带的平均噪声功率谱savg(l);比较前后帧之间的平均噪声功率savg(l)和savg(l-1)估计值,若变化量超过阈值αf,则认为发生了噪声突变,需要对递归平均算法mcra当前帧的平滑参数和状态变量进行校正,校正后按照经典递归平均算法mcra步骤进行噪声估计;若变化量未超过阈值αf,则认为无噪声突变发生,直接按照经典递归平均法算法mcra步骤进行噪声估计,此时无需噪声估计参数校正。

在频域对带噪语音功率谱|y(k,l)|2进行加窗平滑处理,得到频域平滑带噪语音功率谱sf(k,l);对sf(k,l)进行前后帧间的时域一阶平滑,得到时频域平滑带噪语音功率谱s(k,l);在一个长度为d的搜索窗内搜索各个频点上功率谱的最小值smin(k,l);计算s(k,l)与smin(k,l)的比值sr(k,l),通过将sr(k,l)与阈值δ进行比较,可得二元语音存在概率p(k,l);对p(k,l)进行前后帧间递归平滑,得到条件语音存在概率估计值利用条件语音存在概率估计值计算递归平滑系数最后利用递归平滑系数进行递归平滑计算,得到噪声功率谱估计值λd(k,l+1)。

在可选的实施例中,

a)fft

本实施例中,取fft点数n为256点,对采样率为8khz的带噪语音信号y(n)按n点分帧,根据汉宁窗函数hanning(n)加汉宁窗,然后进行256点快速傅里叶变换fft,得带噪语音频谱y(k,l),并且

式中,k为频点数,l表示帧序号,n为采样时间点,j表示虚数单位,e为自然指数。

b)求带噪语音功率谱

通过对带噪语音信号频谱y(k,l)取模值、取平方计算幅度平方值,得到带噪语音信号功率谱|y(k,l)|2

c)频谱排序及筛选

对一帧带噪语音信号功率谱|y(k,l)|2的前一半fft点数n/2,即为128点,按照由小到大、从左到右的顺序排序,并通过筛选去掉左边占比为0.35的较小值,再去掉右边占比为0.4的较大值,保留中间占比为0.25的功率谱值计算平均值,得到当前第l帧整个频带的平均噪声功率谱估计值savg(l)。

d)噪声突变检测

通过比较前后帧之间平均噪声功率谱的估计值savg(l)和savg(l-1)计算变化量,如果发现变化量超过阈值αf=8,则认为发生噪声突变,标志位flag置1;否则,则认为未发生噪声突变,标志位flag置0。

e)噪声估计参数修正

当检测到噪声突变时,即噪声突变标志flag=1时,则对递归平均算法mcra当前帧的平滑参数和状态变量进行校正,校正后就可以利用修正参数按照经典递归平均算法mcra步骤进行噪声估计了;当未检测到噪声突变,即噪声突变标志flag=0时,则无需噪声估计参数校正,直接按照经典递归平均算法mcra步骤进行后续条件语音存在概率计算、噪声功率谱递归平滑更新等流程。

f)条件语音存在概率的计算

在频域对带噪语音功率谱|y(k,l)|2进行加窗平滑处理,得到频域平滑带噪语音功率谱sf(k,l);在时域对sf(k,l)进行前后帧间的一阶平滑,得到时频域平滑带噪语音功率谱s(k,l);在一个长度为50的搜索窗内搜索窗内局部功率谱最小值smin(k,l);计算s(k,l)与smin(k,l)的比值sr(k,l),通过将sr(k,l)与阈值δ=5进行比较,可得二元语音存在概率p(k,l);对p(k,l)进行前后帧间递归平滑可得到条件语音存在概率估计值

g)噪声功率谱递归平滑更新

利用条件语音存在概率估计值计算递归平滑系数

式中:αd为固定的平滑系数,并且满足0<αd<1,本实施例平滑系数取值0.9;

最后利用递归平滑系数前一帧噪声功率谱估计值λd(k,l)和带噪语音功率谱值|y(k,l)|2,采用递归平滑计算公式计算并更新噪声功率估计值λd(k,l+1)。

参阅图2。mcra噪声估计算法的核心是计算条件语音存在概率条件语音存在概率的计算按以下步骤实现:

根据带噪语音功率谱|y(k,l)|2输入,先在频域对带噪语音的功率谱|y(k,l)|2进行相邻频点间的加窗平滑,滑动窗口窗长为2lw+1,从左往右滑动,窗内计算窗函数w(i)和带噪语音功率谱|y(k,l)|2的卷积值,得到频域平滑后的带噪语音功率谱sf(k,l):然后在时域对sf(k,l)进行前后帧间的一阶平滑,利用0<αs<1的时域平滑系数αs,得到时频域平滑带噪语音功率谱s(k,l):s(k,l)=αss(k,l-1)+(1-αs)sf(k,l);根据当前帧计数l、搜索窗内帧计数遍历l′、搜索窗长度d,计算出第l帧在长度为d的搜索窗内的局部功率谱最小值smin(k,l):smin(k,l)=min{s(k,l′)|l-d+1≤l′≤l};计算平滑功率谱与局部最小功率谱的比值sr(k,l),得到s(k,l)与smin(k,l)的比值将sr(k,l)与阈值δ进行比较,判断比值是否>5,通过将sr(k,l)与阈值δ=5进行比较,若比值sr(k,l)大于阈值δ,则二元语音存在概率为1;若比值sr(k,l)小于阈值δ,则二元语音存在概率为0,得到二元语音存在概率p(k,l),利用满足0<αp<1的平滑系数αp和计算得到的二元语音存在概率进行帧间递归平滑,计算条件语音存在概率,得到条件语音存在概率本实施例在一个长度为50的搜索窗内搜索窗内局部功率谱最小值smin(k,l),取搜索窗长度d等于50,帧计数lw取1,时域平滑系数αs=0.8,取平滑系数αp=0.9,阈值取δ=5,sr(k,l)的比值形式类似于后验信噪比。

参阅图3。为了在频域进行噪声功率谱估计,首先需要剔除语音功率谱对噪声功率谱估计的影响。从频域上来看,噪声信号功率谱在整个频带内都会有较强的能量分布,而语音信号的主要能量集中在低频段,而且不会在所有频点上都有持续的较强的能量分布。根据这一特性,可以从带噪语音中筛选出不含语音信号成分的频点,然后根据这些频点来估计整个频带的平均噪声功率谱。

对带噪语音功率谱进行频谱排序和筛选的计算按以下步骤实现:

根据带噪语音功率谱|y(k,l)|2输入,对第l帧功率谱前一半fft点数n/2,即128个频点,按照从小到大、从左到右的顺序进行排序,得到满足以下关系的已排序带噪语音功率谱s′(k,l):

式中:其中1≤k≤n/2,n为fft点数,本实施例中取n为256。

筛选:去掉s′(k,l)中左边占比为a的较小值,去掉右边占比为b的较大值,保留中间占比为c的功率谱值,其中a、b、c满足下式:

完成对已排序带噪语音功率谱s′(k,l)的筛选。本实施例中的a、b、c分别取值0.35、0.4、0.25;通过排序,含有语音信号的频点的功率谱值会集中在右边的较大值这一侧。通过去掉右边占比为0.4的较大值,就可以去掉绝大多数的含有语音能量的频点。另外,如果当前帧不含语音信号,通过去掉占比为0.4的较大值,也可以去掉噪声功率谱中能量偏大的奇异值。同样的道理,通过去掉左边占比为0.35的较小值,也可以达到去掉噪声功率谱中能量偏小的奇异值。

对中间占比为c的保留值进行计算,则噪声功率谱的平均值savg(l)可以表示为:当前帧平均噪声功率谱估计值savg(l)为占比c的保留值的平均值。

参阅图4。噪声突变检测的计算按以下步骤实现:

第一步,计算前后两帧平均噪声功率谱估计值变化量;判断变化量是否>αf=8,若变化量大于阈值αf,则判定为检测到存在噪声突变,噪声突变标志位flag置1;否则,则判定为检测到不存在噪声突变,噪声突变标志位flag置0。

通过比较前后帧之间平均噪声功率谱的估计值savg(l)和savg(l-1)计算得到平均噪声功率谱变化量,可表示为:,本实施例阈值αf取值为8,取大于1的值。

第二步,通过阈值比较法计算得到噪声突变标志flag,flag的表达式为下式:

式中:αf为阈值,本实施例中取αf=8。

参阅图5。噪声估计平滑参数及状态变量修正的计算按以下步骤实现:

首先判断是否检测到噪声突变,是则修正mcra平滑参数及状态变量,否则结束程序;通过噪声突变标志flag判断是否检测到存在噪声突变,若flag=1,则表示检测到存在噪声突变;若flag=0,则表示检测到不存在噪声突变。当检测到存在噪声突变时,即flag=1,则对经典递归平均算法mcra相关的参数和变量进行修正,按下式对递归平均算法mcra中计算条件语音存在概率时须使用的平滑参数进行修正:按下式对mcra算法中的局部功率谱最小值smin(k,l)、噪声功率谱λd(k,l)等变量进行修正:smin(k,l′)=savg(l),l-d+1≤l′≤l-1λd(k,l)=savg(l)

对相关的参数和变量进行修正后,就可以按照经典递归平均算法mcra步骤进行后续的条件语音存在概率计算、噪声功率谱估计更新等流程了。

当检测到不存在噪声突变时,即flag=0,则无需噪声估计参数校正,直接按照经典算法mcra步骤进行后续条件语音存在概率计算、噪声功率谱递归平滑更新等流程。

以上所述为本发明较佳实施例,应该注意的是上述实施例对本发明进行说明,然而本发明并不局限于此,并且本领域技术人员在脱离所附权利要求的范围情况下可设计出替换实施例。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。

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

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

tips