【发明内容】
本发明需解决的技术问题是提供一种降噪效果好的语音增强方法。
根据上述的技术问题,设计了一种语音增强的方法,其包括以下步骤:
一种语音增强的方法,其特征在于,该方法包括以下步骤:
步骤(1)将声音采集装置采集到的带噪语音信号用芯片进行分帧、预加重处理、再经过短时傅里叶变换到频域得到频域信号;
步骤(2)将频域信号划分为若干频带,计算各个频带的能量;
步骤(3)根据各个频带的能量利用计算器计算各个频带的后验信噪比,再根据各频带的能量和后验信噪比利用计算器计算各个频带的先验信噪比估计值;
步骤(4)利用修正器对各个频带的先验信噪比估计值进行修正,得到各个频带的先验信噪比修正值;
采用计权噪声估计方法进行修正
以后验信噪比为判断值,得到计权因子,对先验信噪比估计值进行加权处理,得到各个频带的先验信噪比修正值;
计权因子计算如下
其中m表示当前帧的序号,k表示当前的子带的序号,SNRpost(m,k)指当前帧的后验信噪比估计值,γ1取1.5左右,γ2取200,θz取20;
步骤(5)根据当前帧先验信噪比修正值,利用判断器判断当前帧是否为纯噪音并记录判断结果,如果当前帧是纯噪音且该当前帧的前若干帧均为纯噪音,执行步骤6,反之执行步骤7;
步骤(6)首先,根据各个频带的先验信噪比修正值利用计算器计算各个频带的增益系数;其次,利用调整器对增益系数进行调整得到衰减增益调整值;再次,利用乘法器将频域信号与衰减增益调整值相乘,得到处理后的频域信号;执行步骤8;
步骤(7)增强语音信号,其包括如下步骤:
步骤001:首先获得初始的LPC参数
如果之前帧也采用了语音生成模型增强算法,则使用前一帧最后得到的LPC参数;否则对前一帧最后得到的处理增强后的语音信号进行LPC分析,得到所需参数
设语音信号的生成模型可表示为:
其中,s(n)为语音抽样,u(n)为激励信号,g为增益系数,
是LPC参数,p为阶数;
则语音信号的p阶线性预测可表示为,
定义预测误差为
在最小均方误差最小的意义下可得到LP正则方程如下
其中,Фn(i,j)=E{sn(m-j)sn(m-j)}
增益系数g可有以下公式计算得到
其中, 为短时自相关函数
接着计算s(n)的功率谱密度函数
构造非因果维纳滤波器,
将当前帧的频域带噪信号乘以非因果维纳滤波器,得到当前帧处理后的语音s(i+1);
步骤002:利用比较器比较前一帧处理后的语音信号和当前帧处理后的语音信号是否小于某一阈值,如果小于,得到处理后的频域信号;如果不小于,重复步骤001和步骤002;
比较s
(i)与s
(i+1),若小于阈值ε,则结束迭代过程,这里取ε=3.2;否则,对s
(i+1)进行LPC分析得到新的参数
之后重复之前的计算增益因子,功率谱函数,维纳滤波器等步骤;
其中s(i)表示前一帧处理后的语音信号,s(i+1)表示当前帧处理后的语音信号;
步骤(8)对各频带的噪音能量进行更新,得到更新后的噪音能量做为下一帧计算后验信噪比的基础;
步骤(9)将处理后的频域信号变换到时间域,进行去加重处理并得到输出信号。
优选的,所述判断器采用先验信噪比的语音激活检测方法判断纯噪音。
优选的,所述该装置包括声音采集装置和集成如权利要求1所述语音增强的方法的芯片。
与相关技术比较,本发明实时语音增强的方法在改进的谱减算法基础上,采用了基于语音生成模型的增强算法,抑制各种类型的背景噪声,提高语音清晰度。本发明的语音增强的方法,大大提高了对残余噪声的衰减,保证了语音可懂度。
【具体实施方式】
下面结合附图和实施方式对本发明作进一步说明。
本发明的主要思想是,通过将一种语音增强方法集成在专用的芯片中,并通过该芯片与相应的声音采集装置的接口数据传输,形成一个语音增强装置。带噪语音信号通过声音采集装置采集,再经过由芯片处理,得到信噪比增强后的信号,输出供次级使用。
本发明提供的语音增强装置包括:声音采集装置、集成本发明语音增强方法的芯片,所述芯片集成在该声音采集装置内。
如图1、图2和图3所示,本发明语音增强方法,其包括以下步骤:
步骤(1)将声音采集装置采集到的带噪语音信号用芯片进行分帧、预加重处理、再经过短时傅里叶变换到频域得到频域信号;
步骤(2)将频域信号划分为若干频带,计算各个频带的能量;
步骤(3)根据各个频带的能量利用计算器计算各个频带的后验信噪比,再根据各频带的能量和后验信噪比利用计算器计算各个频带的先验信噪比估计值;
步骤(4)利用修正器对各个频带的先验信噪比估计值进行修正,得到各个频带的先验信噪比修正值;
步骤(5)根据当前帧先验信噪比修正值,利用判断器判断当前帧是否为纯噪音并记录判断结果,如果当前帧是纯噪音且该当前帧的前若干帧均为纯噪音,执行步骤6,反之执行步骤7;
步骤(6)首先,根据各个频带的先验信噪比修正值利用计算器计算各个频带的衰减增益;其次,利用调整器对增益系数进行调整得到衰减增益调整值;再次,利用乘法器将频域信号与衰减增益调整值相乘,得到处理后的频域信号;
步骤(7)增强语音信号,其包括如下步骤:
步骤001:利用计算器计算LPC参数、增益因子和信号功率谱;其次,构造非因果维纳滤波器,再利用乘法器将频域信号与非因果维纳滤波器相乘,得到当前帧处理后的语音信号;
步骤002:利用比较器比较前一帧处理后的语音信号和当前帧处理后的语音信号是否小于某一阈值,如果小于,得到处理后的频域信号;如果不小于,重复步骤001和步骤002;
步骤(8)对各频带的能量进行更新,供下一帧使用;
步骤(9)将处理后的频域信号变换到时间域,进行去加重处理并得到输出信号。
下面通过具体的实施例再详细介绍上述方法,该语音增强方法输入的带噪语音信号的采样率为8kHZ,精度为16位。
首先,对在时域中的带噪语音信号进行分帧,是将带噪语音信号以帧为单位等分成若干带噪信号单元。所述带噪信号单元由采样点组成,本发明中选取了8KHz的采样频率,根据短时谱分析的需要,帧长一般设定成10~35ms之间,本实施方式以32ms分帧,即一帧带噪信号单元设有256个采样点,自然地,任意一帧带噪信号单元具有一定的帧长,本发明中任意帧的帧长为256。
为了防止相邻两帧的带噪信号单元间的块效应,在分帧时要使相邻两帧的带噪信号单元之间有一定的混叠部分,即,本帧数据中有D个数据为前一帧数据的部分数据,其中混叠部分描述如下:
si(n)=di(m,D+n) 0≤n<L,i=1,2
其中si表示输入带噪语音信号,i取1和2分别表示两路信号
d(m,n)=d(m-1,L+n) 0≤n<D
其中,di表示当前帧的256点采样信号,因为任意一帧的长度为256,重叠率为75%,所以重叠部分的采样点个数D=192。相邻帧的带噪信号单元的第一个采样点相隔的距离L=256-192=64。
本发明相邻两帧的带噪信号单元之间可以具有50%~75%的重叠率。本实施方式选取相邻两帧的带噪信号单元之间具有75%的重叠率,即以本帧的前75%(192点)的带噪信号单元和前一帧后75%(192点)的带噪语音信号单元一致。
分帧后的带噪语音信号,先经过一个高通滤波器,作为预加重处理。
由于语音信号中背景噪声在低频部分能量一般较大,所以使用所述高通滤波器可以衰减低频部分的分量,使增强效果更好。其形式如下:
H(z)=1-αz-1
α一般取值在0.75-0.95之间,这里α=0.9,可以取得较好的效果。
由于语音信号是短时平稳的,所以可以对信号进行分帧处理,但分帧又会带来帧信号边界处的不连续造成的频率泄露。所以这里要进行短时傅里叶变换(STFT)。短时傅里叶变换可以理解为对帧信号先加窗再做傅里叶变换。加窗函数的目的就是为了在做短时傅里叶变换时,减少帧信号边界处的不连续造成的频率泄露,从而减少“块效应”。这里使用了一个长度等于帧长256点的汉明窗,它可以有效的降低吉布斯效应的震荡程度。
汉明窗函数定义如下:
win(n)={
0.54-0.46cos(2*π*n/M) 0≤n≤M-1
0 其余n
}
短时傅里叶变换如下
0≤k1≤M-1
其中,M=256,为短时傅利叶变换的计算长度。m表示第m帧信号。这样就将当前帧的带噪语音信号从时域变换到了频率域,得到频域信号。
所述频域信号包括语音信号和噪声信号,该频域信号以帧为单位划分为若干频带,之后操作针对不同频带有不同的策略。
接着对4kHz以下频域信号进行频带划分,本发明针对的频域信号处理均在各个频带中进行,这样既可以减少运算复杂度,又可以针对不同的频带做不同的处理,得到更好的效果。
本发明中的频域信号共划分为23个频带。具体见表1。
表1 23个频带划分
频带数 |
起始频率(Hz) |
截止频率(Hz) |
1 |
62.5 |
93.75 |
2 |
125 |
156.25 |
3 |
187.5 |
218.75 |
4 |
250 |
281.25 |
5 |
312.5 |
343.75 |
6 |
375 |
406.25 |
7 |
437.5 |
468.75 |
8 |
500 |
531.25 |
9 |
562.5 |
593.75 |
10 |
625 |
656.25 |
11 |
687.5 |
718.75 |
12 |
750 |
781.25 |
13 |
812.5 |
906.25 |
14 |
937.5 |
1062.5 |
15 |
1093.75 |
1250 |
16 |
1281.25 |
1468.75 |
17 |
1500 |
1718.75 |
18 |
1750 |
2000 |
19 |
2031.25 |
2312.5 |
20 |
2343.75 |
2687.5 |
21 |
2718.75 |
3125 |
22 |
3156.25 |
3687.5 |
23 |
3718.75 |
3968.75 |
频带能量估计,用如下公式计算每个频带区间的能量并进行平滑:
E(m,k)=|X(m,k)|2 0≤k≤N-1
Y(m,k)=αY(m-1,k)+(1-α)E(m,k) 0≤k≤N-1
其中,Y(m,k)表示经平滑后的每个频带区间的能量;m表示当前帧的序号;k表示当前的子带的序号;α=0.75表示平滑因子;N为选取的频带总数,即23。
经平滑后的每个频带区间的能量包括语音能量和噪声能量。
接着,计算当前帧频域信号的后验信噪比,如下
其中V(k)表示当前估计的噪声信号能量,这个值会在每帧数据处理的最后进行判决更新。对于第一帧,可以使用当前帧的信号能量作为估计的噪声信号能量。
然后基于Ephraim和Malah(伊弗雷-马拉)的先验信噪比估计公式,计算当前帧的先验信噪比估计值
其中,
是前一帧计算得到的增强处理之后的清晰语音SE{|N(k)|
2}为当前帧的噪声能量估计值。
基于Ephraim和Malah的先验信噪比估计值,会出现对噪声的过估计,即对于高信噪比的情况下,得到的信噪比估计值偏高,造成增强后的语音失真,这里采用计权噪声估计方法进行修正。
以之前得到的后验信噪比为判断值,参照如图4的非线性计权曲线,得到计权因子,对先验信噪比估计值进行加权处理。
计权因子计算如下
其中m表示当前帧的序号,k表示当前的子带的序号,SNRpost(m,k)指当前帧的后验信噪比估计值,γ1取1.5左右,γ2取200,θz取20;
本发明中,每个频带的噪声能量的判决与更新采用了基于先验信噪比的语音激活检测(VAD)方法。首先判断当前帧是否是纯噪声信号。
其中γ(m,k)=min[SNRpost(m,k),40],
当VAD(m)<η时,判断当前帧为纯噪声信号,否则为带噪语音信号。
记录当前判断结果,并结合当前帧的前Ns帧结果进行选择。
这里取η=0.02,Ns=100。
如果之VAD判决结果均为噪声,则进行基于改进谱减法的增强算法,进行降噪。
反之,如果VAD判决结果出现语音信号,则进行基于语音生成模型的增强算法。
下面分别介绍两种方法:
首先介绍基于改进谱减法的语音增强算法。
这里基于先验信噪比估计值,采用频谱相减的方法进行增益系数的计算。其具体公式如下。
其中,对于不同频带,a为不同的常数。
这里考虑到,噪声主要集中在较低的频带,因此对于中低频段和高频,取不同的a。
本发明中对于k≤14的频带,即1.1kHz以下的信号,a=8.89
对于14<k≤18的频带,即1.1~2kHz之间的信号,a=6.44
对于k>18的频带,即2kHz以上的信号,a=6.21
接着,对得到的增益系数进行调整,首先以当前帧先验信噪比为判断,小于某一阈值频带的增益系数均乘以某一调整值qmod,这样做可以进一步抑制残余噪声。
接着将所有小于某阀值的增益系数调整到门限值qfloor,这样做可以避免一定的语音失真。
可以表示为如下公式:
其中qmod=0.1,θG=1.2,qfloor=0.01
将当前帧的各频带的带噪语音信号X(m,k),乘以前面得到的相应频带的衰减增益因子,得到的就是该频带的增强后的语音信号。
0≤k≤N-1
其中,N=23为频带总数,
为第k个频带增强后的语音信号估计值。
下面介绍基于语音生成模型的增强算法。
首先获得初始的LPC(Linear Predictive Coding线性预测编码)参数
如果之前帧也采用了语音生成模型增强算法,则使用前一帧最后得到的LPC参数;否则对前一帧最后得到的增强后的语音信号进行LPC分析,得到所需参数。
设语音信号的生成模型可表示为:
其中,s(n)为语音抽样,u(n)为激励信号,g为增益系数,是LPC参数,p为阶数。
则语音信号的p阶线性预测可表示为,
定义预测误差为
在最小均方误差最小的意义下可得到LP正则方程如下。
其中,Фn(i,j)=E{sn(m-j)sn(m-j)}
增益系数g可有以下公式计算得到。
其中, 为短时自相关函数。
接着计算s(n)的功率谱密度函数
构造非因果维纳滤波器,
将当前帧的频域带噪信号乘以维纳滤波器,得到当前帧处理后的语音s(i+1)。
比较s
(i)与s
(i+1),若小于阈值ε,则结束迭代过程。这里取ε=3.2。否则,对s
(i+1)进行LPC分析得到新的参数
之后重复之前的计算增益因子,功率谱函数,维纳滤波器等步骤。其中s
(i)表示前一帧处理后的语音信号,s
(i+1)表示当前帧处理后的语音信号。
经过增强算法处理后,由之前的VAD(m)判断结果,进行噪声能量的更新,公式如下:
其中η为噪声更新判决因子,本发明中取η=0.01。
μ为平滑因子,这里取μ=0.9。
最后的时域变换及输出部分进行的操作有:
第一步:逆快速傅里叶变换(FFT),把频域的语音谱变换到时间域,得到增强后的时域语音信号。
时域的变换用通用的逆离散傅利叶变换(IDFT)实现。
0≤k≤M-1
其中,M=256,为帧长。s为变换到时域后的全频带增强后的语音信号。
第二步:进行去加重处理。
和前面的预加重处理相反,这里将信号通过一个低通滤波器,最大程度的还原原有的信号。滤波器的频响如下;
H(z)=1+αz-1
这里的系数与前面预加重处理相对应,取α=0.9。
第三步:将增强后的语音信号的相邻帧的重叠部分进行相加操作。
具体的重叠部分相加可以用如下的方法来表示。
L=64为相邻的帧信号开始处的距离,M=256,为帧长。s’代表完成相加操作后的最终输出信号。
与相关技术比较,本发明降噪的方法与现有的算法相比,在改进的谱减算法基础上,采用了基于语音生成模型的增强算法,抑制各种类型的背景噪声,提高语音清晰度。系统使用的降噪算法,与现有技术相比,大大提高了对残余噪声的衰减,保证了语音可懂度。经主客观测试,无论对平稳或非平稳噪声,均有较好的效果。
以上所述的仅是本发明的实施方式,在此应当指出,对于本领域的普通技术人员来说,在不脱离本发明创造构思的前提下,还可以做出改进,但这些均属于本发明的保护范围。