【发明内容】
本发明需解决的技术问题是提供一种降噪效果好的语音增加的方法,
根据上述的技术问题,设计了一种语音增强的方法,其包括以下步骤:
(1)、将声音采集装置采集到的带噪语音信号用处理器进行分帧、预加重处理、再经过短时傅里叶变换到频域;
(2)、将变换到频域后的带噪语音信号划分为若干频带,再计算各个频带能量并进行平滑,得到经平滑后的每个频带内的信号能量,所述信号能量包括语音能量和噪音能量,并得到所述噪音能量估计值,噪音能量估计值根据时间回归平均法判决会进行不断地更新;
(3)、通过信号能量及噪音能量估计值,计算各个频带当前帧的后验信噪比,并由前一帧的先验信噪比估计值得到当前帧的先验信噪比估计值;
(4)、根据得到的先验信噪比估计值,以先验信噪比估计值为判断依据,当先验信噪比估计值大于预定值1.5,采用频谱相减的方法计算得到衰减增益因子,当先验信噪比估计值小于或等于预定值1.5,采用一定程度的衰减计算得到衰减增益因子,衰减增益因子计算公式如下:
其中,a,b分别为不同的常数,SNRpost为后验信噪比,SNRprior(k)为当前子带的先验信噪比;
(5)、用得到的衰减增益因子,对划分到各频带的信号频谱进行处理;
(6)、将处理后的频域信号变换到时域、进行去加重处理、相加操作变成最终输出信号。
更优的是,所述步骤(5)中的处理为将当前帧的带噪语音信号乘以相应频带的衰减增益因子。
更优的是,所述步骤(6)包括有:
(61)、通过逆快速傅里叶变换将频域信号变换为时域,得到增强后的时域语音信号;
(62)、通过低通滤波器进行加重处理;
(63)、再将相邻帧的重叠部分进行相加操作,得到最终输出信号。
与相关技术比较,本发明语音增强的方法实现了实时的语音增强系统,输出的是直接降噪后的语音信号,大大提高了对噪音的衰减,保证了语音的可懂度,特别对汽车噪声,街道噪声等一类平稳的加性噪声的衰减效果尤为突出。
【具体实施方式】
下面结合附图和实施例对本发明作进一步说明。
本发明语音增强的方法算法可集成在专用的芯片处理器中,并通过该芯片处理器与相应的声音采集装置的接口数据传输,形成一个实时的语音增强系统。语音信号通过声音采集装置采集,再直接由芯片处理器中的语音增强的方法算法处理,得到信噪比增强后的信号,输出供次级使用。本实施例中声音采集装置可为麦克风传声器,麦克风采集的模拟信号还需转换为数字信号,以供芯片处理器处理。
本发明语音增强的方法,其包括以下步骤:
(1)、将声音采集装置采集到的带噪语音信号用处理器进行分帧、预加重处理、再经过短时傅里叶变换到频域;
(2)、将变换到频域后的带噪语音信号划分为若干频带,再计算各个频带能量并进行平滑,得到经平滑后的每个频带内的信号能量,所述信号能量包括语音能量和噪音能量,并得到所述噪音能量估计值,噪音能量估计值根据时间回归平均法判决会进行不断地更新;
(3)、通过信号能量及噪音能量估计值,计算各个频带当前帧的后验信噪比,并由前一帧的先验信噪比估计值得到当前帧的先验信噪比估计值;
(4)、根据得到的先验信噪比估计值,计算各个频带的衰减增益因子;
(5)、用得到的衰减增益因子,对划分到各频带的信号频谱进行处理,将当前帧的带噪语音信号乘以相应频带的衰减增益因子;
(6)、将处理后的频域信号变换到时域、进行去加重处理、相加操作变成最终输出信号,其具体步骤为:(61)、通过逆快速傅里叶变换将频域信号变换为时域,得到增强后的时域语音信号;(62)、通过低通滤波器进行加重处理;(63)、再将相邻帧的重叠部分进行相加操作,得到最终输出信号。
下面通过具体的实施例再进行介绍,该语音增强的声音采集系统输入的带噪语音信号的采样率为8kHZ,精度为16位。
首先,对在时域中的带噪语音信号进行分帧,是将带噪语音信号以帧为单位等分成若干带噪语音信号单元。该带噪语音信号单元由采样点组成,本发明中选取了8kHz的采样频率,根据短时谱分析的需要,帧长一般设定成10~35ms之间,本实施例以32ms分帧,即一帧带噪语音信号单元设有256个采样点,自然地,任意一帧带噪语音信号单元具有一定的帧长,本发明每一帧的帧长为256。
为了防止相邻两帧的带噪语音信号单元之间的块效应,在分帧时要使相邻两帧的带噪语音信号单元之间有一定的混叠部分,即,本帧数据中有D个数据为前一帧数据的部分数据,其中混叠部分描述如下:
s(n)=d(m,D+n)
0≤n<L
其中s表示输入带噪语音信号
d(m,n)=d(m-1,L+n) 0≤n<D
其中,d表示当前帧的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点的汉明窗,它可以有效的降低吉布斯效应的震荡程度。
汉明窗函数定义如下:
短时傅里叶变换如下:
其中,M=256,为短时傅利叶变换的计算长度。m表示第m帧信号。
这样就将当前帧的带噪语音信号s从时域变换到了频域。
变换到频域后的带噪语音信号包括语音信号和噪声信号,该信号以帧为单位划分为若干频带,之后针对不同频带的语音信号进行不同的策略操作。
下面接着对4kHz以下带噪语音信号进行频带划分,之后的信号处理均在各个频带中进行,这样既可以减少运算复杂度,又可以针对不同的频带做不同的处理,得到更好的效果。
本发明中的信号共划分为23个频带。具体见表1。
表123个频带划分
频带数 |
起始频率(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(m,k)=α(m,k)V(m-1,k)+(1-α(m,k))E(m,k)
其中α(m,k)是平滑系数,其计算公式如下:
γk(λ)为近似的后验信噪比,是由当前一帧的信号能量,与之前10帧噪声能量的算术平均值相比得到。β,λ为系数,本发明中取β=6.2,λ=1.4。
可见,若当前帧是纯语音信号时,近似后验信噪比很大,则α(m,k)→1,V(m,k)≈V(m-1,k),即噪声能量估计值不进行更新;相反的,若当前帧是纯噪声信号时,近似后验信噪比很小,即α(m,k)→0,V(m,k)≈E(m,k),即噪声能量估计值更新为当前帧的噪声能量值。
接着,根据信号能量和噪音能量估计值去计算得到各个频带当前帧的后验信噪比。计算当前帧信号的后验信噪比,如下:
其中,V(k)表示不断更新的噪音能量估计值。本文中,V、V(k)、V(m,k)均表示噪音能量估计值,m表示当前帧的序号,k表示当前的子带的序号。
然后基于Ephraim和Malah的先验信噪比估计公式,计算当前帧的先验信噪比估计值
接下来,对各个频带的衰减增益因子进行计算。基于前面计算得出的先验信噪比估计值,采取不同的策略。对于信噪比大的频带,可认为是语音信号,采用频谱相减的方法得到衰减因子;对于信噪比小的频带,认为是噪声信号,对其进行一定程度的衰减。本发明中选择SNRprior=1.5为判断标准,高于1.5的认为是语音信号,低于1.5可认为是噪声信号。
具体的增益衰减因子计算公式如下:
其中,a,b分别为不同的常数,SNRpost为后验信噪比,SNRprior(k)为当前子带的先验信噪比。
考虑到汽车等噪声主要集中在800Hz以下的较低频带,而街道噪声在频域上分布相对比较平均,因此对于中低频段和高频段,取不同的参数。
本发明中对于k≤14的频带,即800Hz以下的信号,a=6.3,b=4.8。
对于k>18的频带,即2kHz以上的信号,a=6.7,b=3.3
其余情况,即14<k≤18时,取a=5.9,b=3.5
得到衰减增益因子启,将当前帧的各频带的带噪语音信号X(m,k),乘以前面得到的相应频带的衰减增益因子,得到的就是该频带信噪比增强后的语音信号。
其中,N=23为频带总数,
为第k个频带增强后的语音信号估计值。
最后,将处理后的信噪比增强后的语音信号从频域变换到时域、进行加重处理、相加操作变成最终输出信号,其操作为:
第一步:逆快速傅里叶变换(FFT),把频域的语音信号变换到时域,得到增强后的时域语音信号。
时域的变换用通用的逆离散傅利叶变换(IDFT)实现。
其中,M=256,为帧长。s为变换到时域后的全频带增强后的语音信号。
第二步:进行去加重处理。
和前面的预加重处理相反,这里将信号通过一个低通滤波器,最大程度的还原原有的信号。滤波器的频响如下;
H(z)=1+αz-1
这里的系数与前面预加重处理相对应,取α=0.9。
第三步:将预加重处理后的语音信号的相邻帧的重叠部分进行相加操作。
具体的重叠部分相加可以用如下的方法来表示。
L=64为相邻的帧信号开始处的距离,M=256,为帧长。s’代表完成相加操作后的最终输出信号。
与相关技术比较,本发明语音增强的方法实现了实时的语音增强系统,声音采集装置输出的是直接降噪后的语音信号,节约了另外使用相应算法的成本,并大大提高了对噪音的衰减、信噪比得到提高、保证了语音的可懂度,特别对汽车噪声,街道噪声等一类平稳的加性噪声的衰减效果尤为突出。
以上所述的仅是本发明的实施方式,在此应当指出,对于本领域的普通技术人员来说,在不脱离本发明创造构思的前提下,还可以做出改进,但这些均属于本发明的保护范围。