具体实施方式
步骤一,数字助听器输入的含噪信号进行预处理,首先对输入的含噪信号进行分帧处理,然后计算每帧信号的频谱;
(1)数字助听器输入的含噪信号y(t),t表示时间,在模数转换过程中,采用16kHz的采样率,输出表示为时域数字信号y(n),n表示的序列号;
(2)含噪信号y(n)通过哈明窗进行分帧,取320点即20ms为一帧,帧移为160点即10ms,可采用式(1)进行分帧,得到每帧信号y(λ,n);
式(1)中λ表示帧的序列号,N表示采样点数,其中N的取值为320,则y(λ,n)表示含噪信号y(n)经过哈明窗分帧后得到的第λ帧含噪信号;式中w(n)表示哈明窗,如式(2)所示,表示计算第λ帧时,哈明窗平移
(3)每帧含噪信号的频谱通过对每帧含噪信号y(λ,n)进行2N点离散傅里叶变换得到,如式(3)所示:
式(3)中Y(λ,k)表示第λ帧在频率点为k处的频谱,j是虚部;
步骤二,通过步骤一得到每帧含噪信号的频域表示形式Y(λ,k),利用人耳对相位信息的改变并不敏感,提取含噪语音信号的相位信息θn(λ),把含噪语音信号的相位信息保留下来,利用含噪语音信号的相位信息代替最终合成的语音信号的相位;
步骤三,在每帧含噪信号的频域表示形式下,估计每帧含噪信号的噪声幅度谱D(λ,k);
本发明利用最小值控制递归平均(Minima-ControlledRecursiveAveraging,MCRA)方法进行噪声估计,该方法在噪声估计时考虑了语音存在概率,对清音及过渡成分能够有效减小噪声的过估计,并能快速跟踪急剧变化的噪声,对平稳噪声和非平稳噪声都有比较好的鲁棒性,能够减小信号失真。
此算法中,当前分析帧的噪声功率谱估计是基于公式(4)的两个修正假设:当语音不存在时,对当前分析帧的噪声功率谱进行更新,否则,噪声功率谱不变。
其中,表示语音不存在,表示语音存在,λ表示分帧后帧信号的序列号,k表示离散频率点的序列号,表示当前分析的第λ帧在频率点k处的噪声估计功率谱。α是一个固定常数,代表前一帧噪声估计对当前噪声估计的影响权重,本发明中α取值为0.97;|Y(λ,k)|2表示当前分析的第λ帧在频率点k处含噪语音信号的功率谱。
估计噪声功率谱可以通过公式(5)计算得到:
式(5)中,E[·]表示求期望,p(H0|Y(λ,k)表示给定含噪语音频谱信息Y(λ,k)时,语音不存在的概率,p(H1|Y(λ,k)表示给定含噪语音频谱信息Y(λ,k)时,语音存在的概率。对于这两个条件概率,有以下已知关系:p(H0|Y(λ,k)+p(H1|Y(λ,k)=1,因此式(5)可以改写为式(6):
将式(4)代入式(6)中,即有:
式中,表示当前分析的λ帧在频率点k处的噪声估计功率谱。|Y(λ,k)|2表示当前分析的λ帧中频点k处含噪语音信号的功率谱。αd(λ,k)=α+(1-α)p(λ,k)代表前一帧噪声估计对当前帧噪声估计的影响权重,α是一个固定常数,本发明中α取值为0.97,其中p(λ,k)=p(H1|Y(λ,k))表示语音存在的概率。因此,需要进一步计算语音存在的概率p(λ,k)。
语音存在概率p(λ,k)由当前时刻含噪语音信号功率谱与功率谱最小值的比值进行估计。首先将含噪语音信号的功率谱进行频域上的平滑得到Sf(λ,k),采用式(8)计算:
其中,w(n)是长度为2Lw+1的哈明窗,本发明中Lw取1,n表示序列号,Y(λ,k-n)表示当前分析的第λ帧中频点k处进行n个单位的平移。
然后对Sf(λ,k)进行时域平滑得到S(λ,k),采用式(9)计算:
S(λ,k)=αsS(λ-1)+(1-αs)Sf(λ,k)(9)
其中,αs为平滑因子,表示前一帧的平滑功率谱对当前帧的平滑功率谱的影响权重,本发明中αs取值为0.6;。最后得到当前帧含噪语音的功率值与最小功率值的比值,记为Sr(λ,k):
其中,Smin(λ,k)为当前时刻含噪语音功率谱的最小值,其采用一种有效的搜索方法,该方法在一个长度为D的窗口内搜索功率谱的最小值,其搜索过程如下:
Pmin(λ,k)=min{Ptmp(λ-1,k),P(λ,k)}
Ptmp(λ,k)=P(λ,k)
else
Pmin(λ,k)=min{Pmin(λ-1,k),P(λ,k)}
Ptmp(λ,k)=min{Ptmp(λ-1,k),P(λ,k)}
end
其中,λ是帧号,D是搜索窗口的长度,本发明中D取值为20;是将λ对D球模,Ptmp(λ,k)是当前搜索窗口中频点k处的功率谱最小值,Pmin(λ,k)是各个搜索窗中连续进行更新的功率谱最小值。
之后,通过将Sr(λ,k)与一个特定的阈值δ相比,本发明中阈值δ取值为2.25,可以得到当前分析帧在频率点k处的局部语音存在概率p,其表达式为:
ifSr(λ,k)≥δ
p=1表示语音存在
ifSr(λ,k)≤δ
p=0表示语音不存在
end
最终,将得到的概率谱p通过平滑因子为αp的平滑运算,将得到的概率p(λ,k),本发明中αp取值为0.2:
p(λ,k)=αpp(λ-1,k)+(1-αp)p(11)
通过以上过程,最终得到了语音存在概率p(λ,k)的估计。最后,把公式(11)带入公式(7)中,得到估计噪声功率谱最后对噪声功率谱进行开方得到估计噪声的幅度谱
步骤四,由步骤三得到估计噪声的幅度谱然后利用谱减法的基本思想,让含每帧含噪语音信号的幅度谱减去每帧估计噪声的幅度谱,得到每帧初步增强的语音幅度谱|s1(λ,n)|;
为了更好地得到每帧初步增强语音信号s1(λ,n),其利用步骤三得到的估计噪声幅度谱采用一种过谱减算法,对含噪语音进行初步增强;该算法引入了过谱减系数和谱地板系数两个参数,算法如式(18)所示;
式中,αs(λ)是过减系数,取值范围是αs(λ)≥1,其随着不同帧的信噪比而发生变化;βs是谱地板系数,取值范围是0<βs≤1,本发明中βs取值为0.2;过减系数αs(λ)决定了算法对语音成分造成的损失程度。当αs(λ)取值较小时,由算法造成的语音失真较小;当αs(λ)取值较大时,算法造成的语音失真较大,但同时残留的“音乐噪声”音调结构也就越就不显。谱地板系数βs影响着增强语音中背景噪声的残留量,如果βs取值较大,残留的背景噪声也就越多;如果βs取值较小,背景噪声的残留量也就越少。
为了达到较好的增强效果,过减系数αs(λ)的选择应遵循如下规则:信噪比(SNR)高的部分,αs(λ)取值较小;信噪比(SNR)的部分,αs(λ)取值较大;这充分考虑了αs(λ)和语音失真度的联系,信噪比高的部分应该保留较高的语音质量,那么所允许的语音失真度应该较小;信噪比低的部分,应该最大限度的提取语音信息,在保证语音可懂度的前提下允许一定的语音失真。因此,αs(λ)采用式(19)计算得到:
式中,α0是含噪语音的信噪比为0dB时对应的过减系数,本发明中α0取值为6;SNR是一帧信号的信噪比,其定义如下:
步骤五,傅里叶逆变换,由步骤三得到的估计噪声幅度谱和步骤四得到的初步增强的语音幅度谱|S1(λ,k)|分别乘以由步骤二得到的含噪语音的相位θn(λ),得到估计噪声和S1(λ,k),然后通过公式(21)(22)傅里叶逆变换分别得到每帧初步增强的语音信号和估计噪声信号;
步骤六,时频分析,利用人耳听觉感知理论,结合人耳的听觉特性和耳蜗的工作机理,把步骤五得到初步增强的语音信号s1(λ,n)和估计噪声信号d(λ,n)在频域范围内非均匀地分为M个频带,M为128个频带,采用公式(23)(24)得到:
Bands(λ,i,n)=s1(λ,n)*g(n,f(i))i=1,2,…128(23)
式(23)中,Bands(λ,i,n)表示初步增强语音信号s1(λ,n)在第λ帧的第i频带的信号;同理,Bandd(λ,i,n)表示估计噪声信号在第λ帧的第i频带的信号;g(n,f(i))表示gammatone滤波器组,其中心频率为f(i),本发明采用的gammatone滤波器组在下文展开解释。
本发明采用一种gammatone滤波器组对耳蜗中的基底膜进行仿真,用此滤波器组对输入的信号进行滤波。由于耳蜗是人耳听觉系统中重要的器官,而基底膜是耳蜗感知声音的重要组织。基底膜对声音具有频谱分析特性:对于输入复合音信号,基底膜能够把不同频率转化为不同的耳蜗位置,从而可以自动分离出复合音中不同频率成分和对应的幅度,完成耳蜗对声音频率和强度的编码。人耳能够分辨出语音中的不同频率和强度信息,其与基底膜的频谱分析特性是分不开的。除此之外,耳蜗对声音的频率分辨率也是非均匀的,在80Hz~5000Hz范围,gammatone滤波器组的中心频率内以准对数形式分布,并以等矩形带宽(equivalentrectangularbandwidth,ERB)的方式均匀地分布在语音信号所占据的频率范围内。因此,根据人耳对信号频率的不同分辨率和感知能力,并利用人耳的听觉特性,采用gammatone滤波器组对信号进行滤波,把信号的频率范围非均匀的分为M个频带,在进行信号掩蔽时,确保在语音失真最小和可懂度最高的情况下,把背景噪声和“音乐噪声”去除干净,同时提高言语可懂度。gammatone滤波器的脉冲响应具有以下形式,如图2所示:
式中a=4,表示滤波器的阶数。b(f(i))表示中心频率为f(i)时的等矩形带宽,随着f(i)的增加而变宽,使时频分析后的信号低频分辨率较高,可以很好分辨出语音低频中的前5个共振峰。由于共振峰是区别不同元音最主要的特征,对提高耳聋患者的语言识别率具有重要意义。因此,该滤波器有益于提高言语可懂度。另外,为了模拟人耳的外耳和中耳的压力增益,等响度曲线被用来对滤波器的增益进行调整。耳障者的等响度曲线不同于正常人的等响度曲线,可以测试耳障者的等响度曲线,去调整滤波器的增益。通过此滤波器实现时频分析,同时还可以对不同的耳障者进行初步的频响补偿,很大程度上减少助听器整体算法复杂度。
步骤七,计算频带信噪比,初步增强语音信号由步骤七的时频分析得到的M个频带,并采用公式(26)计算每个频带的信噪比(dB);
Bands(λ,i,n)表示初步增强语音信号s1(λ,n)在第λ帧的第i频带的信号;同理,Bandd(λ,i,n)表示估计噪声信号在第λ帧的第i频带的信号;
步骤八,计算掩蔽域值,利用由步骤七得到每个频带的信噪比和人耳对不同频带的感知特性,计算不同频带的掩蔽域值;采用式(27):
式中,Std(·)表示求标准差。
步骤九,测试耳障者的听域曲线和痛域曲线,利用不同频率特征点测试耳障者的听域声压级和痛域声压级,然后利用插值的方法得到整个频率范围的听力曲线Up(λ,f(i)),同理得到正常人的听力曲线Np(λ,f(i));
步骤十,计算掩蔽值,由步骤八得到的掩蔽阈值LC和步骤九得到的听力曲线Up(λ,f(i))和Np(λ,f(i)),动态的调整掩蔽值的大小;利用式(30)计算估计的掩蔽值Mask(λ,f(i));
式中,Up(λ,f(i))表示耳障者在中心频率为f(i)的声压级,Np(λ,f(i))表示正常人在中心频率为f(i)的声压级,表示初步增强语音信号在第λ频带、等矩形带宽为b(f(i))内的能量,表示估计噪声在第λ频带、等矩形带宽为b(f(i))内的能量, 和LC都用dB表示;
从公式(30)中可以看出,如果不满足条件时,掩蔽值Mask(λ,f(i))为0,否则掩蔽值为即耳障者在中心频率为f(i)时的声压级和正常人在中心频率为f(i)时的声压级的比值,也就是在满足条件的情况下,Mask(λ,f(i))是根据耳障者要达到和正常人一样的听力水平,外界声音需要进行放大或者压缩的比值;当Mask(λ,f(i))为0,表示对外界噪声信号进行掩蔽,也就是对每帧含噪信号进一步进行语音增强,当Mask(λ,f(i))的取值大于0时,表示对外界的每帧信号进行放大或者压缩,也就是对增强语音进行频响补偿;因此,实现了语音增强和频响补偿相融合的方法。
步骤十一,时频掩蔽;
由步骤十得到的每帧信号的每个频带的时频掩蔽值Mask(λ,f(i))分别乘以该频带的信号Bands(λ,i,n),最后所有频带相加之后,得到最终的输出信号y(λ,n),如公式(31):