发明内容
本发明所要解决的技术问题是提供一种语音信号的MFCC系数提取方法及装置,以解决HTK的MFCC系数提取方法存在的问题。
为了解决上述问题,本发明公开了一种语音信号的MFCC系数提取方法,包括预加重、加窗、快速傅里叶变换、功率谱估计、Mel滤波、非线性变换和离散余弦变换,其中:
在进行Mel滤波时,在HTK方法的基础上增加Mel滤波器组的子带数量,在语音信号的频率范围内进行Mel滤波,得到对应每条子带的Mel滤波输出;
然后,将高频范围内的子带数量进行聚合,得到聚合后相应子带数量的Mel滤波输出;
继续对所述低频范围和聚合后高频范围的Mel滤波输出进行非线性变换和离散余弦变换,最终提取出MFCC系数。
优选的,所述将高频范围内的子带数量进行聚合,得到聚合后相应子带数量的Mel滤波输出,具体包括:将高频范围内多条子带的Mel滤波输出,通过加权平均进行合并,得到聚合后相应子带数量的Mel滤波输出。
优选的,针对16kHz的宽带信号,将Mel滤波器组的子带数量增加到32,其中所述低频范围的子带数量为23,所述高频范围的子带数量为9;然后将高频范围内的9条子带聚合为3条子带。
其中,所述将高频范围内的9条子带通过加权平均聚合为3条子带,具体包括:
其中,EFB(i)表示聚合前的Mel滤波输出,E′FB(i)表示聚合后的Mel滤波输出,i表示子带序号,α、β、γ表示加权系数。
优选的,所述预加重之前还包括:对语音信号的频率范围内的信号都进行语音增强处理。
本发明还提供了一种Mel滤波方法,包括:
在HTK方法的基础上增加Mel滤波器组的子带数量,在16kHz的线性频带上进行Mel滤波,得到对应每条子带的Mel滤波输出;
根据Mel频率与线性频率之间的映射关系,得到每条子带映射到线性频带上的频率范围,进而得出:0-8kHz的低频范围的子带数量密集,8-16kHz的高频范围的子带数量稀疏;
将所述高频范围内的子带数量进行聚合,得到聚合后相应子带数量的Mel滤波输出;
将所述低频范围的Mel滤波输出和所述高频范围聚合后的Mel滤波输出,共同作为16kHz线性频带的Mel滤波输出。
优选的,若设定Mel滤波器组的子带数量为32,则0-8kHz的低频范围的子带数量为23,8-16kHz的高频范围的子带数量为9;所述高频范围内的子带数量聚合为3。
本发明还提供了一种语音信号的MFCC系数提取装置,包括预加重单元、加窗单元、快速傅里叶变换单元、功率谱估计单元、Mel滤波单元、非线性变换单元和离散余弦变换单元,其中:
所述Mel滤波单元用于在进行Mel滤波时,在HTK方法的基础上增加Mel滤波器组的子带数量,在语音信号的频范围内进行Mel滤波,得到对应每条子带的Mel滤波输出;
所述装置还包括:高频聚合单元,用于将高频范围内的子带数量进行聚合,得到聚合后相应子带数量的Mel滤波输出;
所述非线性变换单元和离散余弦变换单元,用于对所述低频范围和聚合后高频范围的Mel滤波输出,进行非线性变换和离散余弦变换,最终提取出MFCC系数。
优选的,所述高频聚合单元通过以下方式将高频范围内的子带数量进行聚合:将高频范围内多条子带的Mel滤波输出,通过加权平均进行合并,得到聚合后相应子带数量的Mel滤波输出。
优选的,针对16kHz的宽带信号,所述Mel滤波单元将Mel滤波器组的子带数量增加到32,其中低频范围的子带数量为23,高频范围的子带数量为9;则所述高频聚合单元将高频范围内的9条子带聚合为3条子带。
其中,所述高频聚合单元通过以下方式将高频范围内的9条子带通过加权平均聚合为3条子带:
其中,EFB(i)表示聚合前的Mel滤波输出,E′FB(i)表示聚合后的Mel滤波输出,i表示子带序号,α、β、γ表示加权系数。
优选的,所述装置还包括:语音增强单元,用于对语音信号的频率范围的信号都进行语音增强处理,然后触发所述预加重单元。
本发明还提供了一种Mel滤波装置,包括:
参数设置单元,用于在HTK方法的基础上增加Mel滤波器组的子带数量;
Mel滤波单元,用于根据所述Mel滤波器组的子带数量,在16kHz的线性频带上进行Mel滤波,得到对应每条子带的Mel滤波输出;
子带映射单元,用于根据Mel频率与线性频率之间的映射关系,得到每条子带映射到线性频带上的频率范围,进而得出:0-8kHz的低频范围的子带数量密集,8-16kHz的高频范围的子带数量稀疏;
高频聚合单元,用于将所述高频范围内的子带数量进行聚合,得到聚合后相应子带数量的Mel滤波输出;
输出单元,用于将所述低频范围的Mel滤波输出和所述高频范围聚合后的Mel滤波输出,共同作为16kHz线性频带的Mel滤波输出。
优选的,若设定Mel滤波器组的子带数量为32,则0-8kHz的低频范围的子带数量为23,8-16kHz的高频范围的子带数量为9;所述高频范围内的子带数量聚合为3。
与现有技术相比,本发明具有以下优点:
本发明在进行Mel滤波时,提高了信号频带上Mel滤波器组的子带数量,这样,信号频带上低频范围的子带数量也相应增加,从而保证了低频信号有足够的频率分辨精度。同时,信号频带上高频范围的子带数量也相应增加,本发明又将高频范围内的子带数量进行聚合,由于子带数目减少,使得每条子带的频率范围增大,因此抗干扰能力大大增加,保证了容易受到噪声干扰的高频参数的鲁棒性,从而优化了提取的MFCC系数。经过实验表明,这种方法提高了语音识别的准确率。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
如前所述,标准的MFCC系数提取过程包括预加重、加窗、FFT变换、功率谱估计、Mel滤波、非线性变换(计算对数Log)和DCT变换,本发明在此基础上提出一种改进的语音信号MFCC系数提取方法,主要对其中的Mel滤波进行了改进。
Mel滤波就是将用线性频率表示的频谱表示为Mel刻度表示的频谱,Mel频率和线性频率之间具有一定的映射关系。在Mel滤波过程中,当Mel滤波器组的子带数量(即维数)确定后,根据所述映射关系,就可以得出每个子带映射到线性频带上的频率范围,从而可以得出线性频带的低频范围的子带数量以及高频范围的子带数量。而且,低频范围的子带数量较多,子带比较密集;而高频范围的子带数量较少,子带比较稀疏。例如,在16kHz的宽带上,Mel滤波器组的子带数量若为26,则根据映射关系可以得出:0-8k的低频范围的子带数量是19,8k 16k的高频范围的子带数量是7。
本发明正是利用上述原理,通过提高Mel滤波器组的子带数量,可以相应增加低频范围和高频范围的子带数量,使得低频的子带数量能够保证低频信号有足够的频率分辨精度;同时,通过对高频的子带数量进行聚合,来减少高频的子带数量,从而增强高频的抗干扰能力。
实施例一:
参照图1,是实施例一所述一种语音信号的MFCC系数提取方法流程图。
S101,在进行Mel滤波时,增加Mel滤波器组的子带数量,在频率范围内进行Mel滤波,得到对应每条子带的Mel滤波输出;
即将Mel滤波器原来的维数(即子带数量)进行扩展,然后对全频带范围内的信号进行滤波。这样,根据Mel频率与线性频率的映射关系,信号频带(即线性频带)上低频范围的子带数量也相应增加,从而保证了低频信号有足够的频率分辨精度。但同时,高频范围的子带数量也相应增加,由于高频信号容易受到噪声干扰,因此每条子带的抗干扰能力会降低,影响识别率,所以还需要继续下面的处理。
S102,将高频范围内的子带数量进行聚合,得到聚合后相应子带数量的Mel滤波输出;但低频范围内的子带数量保持不变;
所述聚合是指将高频较多的子带合并成较少的子带,由于子带数目减少,使得每条子带的频率范围增大,因此抗干扰能力大大增加,从而增强了容易受到噪声干扰的高频参数的鲁棒性。其中,所述鲁棒性即是指稳定性,鲁棒性好就是指算法或者系统在各种可能的环境或者干扰下仍然能够表现出稳定的性能。
可采用的聚合方法有多种,但聚合的目的都是将高频范围内多条子带的Mel滤波输出进行合并,得到聚合后相应子带数量的Mel滤波输出。
本实施例采用一种简单常用的聚合方法是加权平均法,计算公式如下:
其中,EFB表示聚合后的Mel滤波输出,EFB(i)、EFB(i)、......、EFB(k)表示聚合前高频子带的Mel滤波输出,α、β、γ表示加权系数。上述公式(1)即将高频的多条子带i、j、......、k聚合为一条子带,如果聚合后的子带数量为多个,则将得到多个EFB。
当然,本实施例不限定其它的聚合方法。
S103,继续对所述低频范围和聚合后高频范围的Mel滤波输出进行非线性变换和DCT变换,最终提取出MFCC系数。
经过S101和S102得出的低频范围和高频范围的子带数量,与现有技术相比,即能保证低频信号的分辨率,又能保证高频信号的抗干扰能力。这样,经过Mel滤波步骤得出的Mel滤波输出,就可以继续下面的非线性变换和DCT变换。
综上所述,上述方法优化了提取的MFCC系数,进一步提高了语音识别的准确率。
实施例二:
本发明主要应用于频率范围为0-16kHz的宽带信号处理,因为16kHz的宽带信号基本能满足语音识别所需要的特征信息。下面将以16kHz的宽带信号为例进行详细说明。其中,0-8k为低频范围,8k-16k为高频范围。当然,本发明并不限定于0-16kHz的频率范围。
参照图2,是实施例二所述一种语音信号的MFCC系数提取方法流程图。
S201,语音增强处理;
本实施例对16kHz范围内的信号同时进行语音增强处理。语音增强的目的是从有噪声的语音信号中提取尽可能纯净的原始语音,目前常用的增强算法很多,如减谱法或维纳滤波算法等,本实施例不作详细说明。
S202,预加重;
信号在传输过程中,由于衰减原因会产生一定的失真,预加重就是模拟这个衰减曲线事先在发送端对信号进行补偿,这样在接收端就可以得到较理想的波形。
预加重滤波器处理语音增强后的信号SEn:
SEn_pe(n)=SEn(n)-0.9SEn(n-1);
其中SEn_pe(-1)为上一帧的最后一个样本,如果是第一帧,则其值为0。
S203,加窗;
对预加重处理输出的信号进行加窗处理,窗类型为长度Nin=400的Hamming窗函数为:
S204,FFT变换;
通过后面补0将Nin个样本扩展为512个样本。用长度NFFT=512的FFT计算出信号频谱XEn(bin):
XEn(bin)=FFT{sEn_w(n)};
S205,功率谱估计;
相应的功率谱为:
PEn(bin)=|XEn(bin)|2,0≤bin≤NFFT/2;
S206,超维数Mel滤波;
Mel滤波就是将用线性频率表示的频谱表示为Mel刻度表示的频谱,信号有效频带位于fstart与fsamp/2之间,在Mel域分为KFB个子带,每个子带对应一个三角形频率窗,相邻子带有50%重叠。
线性频率和Mel频率的映射关系如下,可参照图3所示:
1≤k≤KFB
在上式中,相关参数取值如下:
fstart=64Hz
fsamp=16kHz
μ=700
Λ=2595
λ=1127
KFB=32
fcentr表示线性频带的中心频率。
Mel滤波器的输出为每个子带的功率谱值PEn(bin)的加权和EFB。
针对16kHz的宽带信号,本实施例采用的Mel滤波器维数扩展为32维,这个维数要超过HTK的26维,但本实施例并不是最终要采用32个子带参数,这将在后面的高频聚合里说明。
当Mel滤波器组的子带数量为32时,由于Mel域的频带是等间隔划分,所以根据线性频率和Mel频率的映射关系,可以将Mel滤波器每个子带的频率范围映射到线性频带上,正好得到0-8k的低频范围(指线性频带上)的子带数量为23,8k 16k的高频范围的子带数量为9。
此处采用32维的原因是,在16kHz采样率下用32维Mel滤波器划分的子带频率范围,与在8kHz采样率下用23维Mel滤波器划分的子带频率范围,在0-8kHz的低频范围内是一致的;而在8kHz采样率下采用23维Mel滤波器是经过检验的一个较好的设置。当然,Mel滤波器组的子带数量也可以扩展为其他数值,可以根据实际需要进行调整,本实施例在此并不仅限于32。例如,如果将Mel滤波器组的子带数量增加为35,根据上述映射关系,相应的低频范围的子带数量则为25,高频范围的子带数量则为10。
针对HTK的子带分布方式,本实施例在0-16k的频率范围上共32条子带,其中低频范围的子带数量由HTK的19条增加到23条,剩余的9条子带在高频范围。与HTK的子带划分相比,本实施例低频的子带数量能够保证低频信号足够的分辨率。
S207,高频聚合;
在信号的高频部分,由于高频信号容易受到噪声的干扰,较多的子带划分影响了参数的鲁棒性,因此需要将较多的子带数量聚合为较少的子带。
本实施例将高频的9个子带聚合成3个子带,聚合方法采用加权平均的方法,如下:
其中,EFB(i)表示聚合前的Mel滤波输出,E′FB(i)表示聚合后的Mel滤波输出,i表示子带序号,α、β、γ表示加权系数,可以取0-1之间的数值。
聚合后KFB=26。
当然,上述将9个子带聚合成3个子带仅作为举例说明,聚合后的子带数量需要根据实际应用来确定。而且,聚合前与聚合后的子带数量并不一定是整除关系,如可以将9个子带聚合为4个子带,聚合方法有多种,其中一种是将每2个子带聚合为1个子带,而聚合的第4个子带是由3个子带聚合而成;或者,每2个子带聚合为1个子带,共聚合为4个子带,最后将剩余的一个子带丢弃。本实施例不一一列举各种聚合方法,总之,可以将任意数量的高频子带聚合为实际需要的子带数量。
S208,非线性变换(计算对数Log);
对Mel滤波器的输出取对数:
SFB(k)=ln(EFB(k)),for 1≤k≤KFB
限制对数滤波器组的输出不能小于-10。
S209,DCT变换。
对非线性变换的输出作离散余弦转换(DCT),得到13个MFCC系数:
0≤i≤12
上述改进的语音信号MFCC系数提取方法,信号处理在16kHz的采样率下进行时,能够优化提取的MFCC系数,从而提高语音识别的准确度。
针对上述方法实施例的说明,本发明还提供了相应的装置实施例。
参照图4,是实施例所述一种语音信号的MFCC系数提取装置结构图。
所述装置主要包括:预加重单元U41、加窗单元U42、快速傅里叶变换单元U43、功率谱估计单元U44、Mel滤波单元U45、高频聚合单元U46、非线性变换单元U47和离散余弦变换单元U48,其中,
所述Mel滤波单元U45用于在进行Mel滤波时,增加Mel滤波器组的子带数量,在频率范围内进行Mel滤波,得到对应每条子带的Mel滤波输出;
高频聚合单元U46用于将高频范围内的子带数量进行聚合,得到聚合后相应子带数量的Mel滤波输出;
所述非线性变换单元U47和离散余弦变换单元U48,用于对所述低频范围和聚合后高频范围的Mel滤波输出,进行非线性变换和离散余弦变换,最终提取出MFCC系数。
其中,所述高频聚合单元U46通过以下方式将高频范围内的子带数量进行聚合:将高频范围内多条子带的Mel滤波输出,通过加权平均进行合并,得到聚合后相应子带数量的Mel滤波输出。
针对16kHz的宽带信号,所述Mel滤波单元U45将Mel滤波器组的子带数量增加到32,其中低频范围的子带数量为23,高频范围的子带数量为9;则所述高频聚合单元U46将高频范围内的9条子带聚合为3条子带。
具体的,所述高频聚合U46单元通过以下方式将高频范围内的9条子带通过加权平均聚合为3条子带:
其中,EFB(i)表示聚合前的Mel滤波输出,E′FB(i)表示聚合后的Mel滤波输出,i表示子带序号,α、β、γ表示加权系数。
优选的,所述装置还可以包括:
语音增强单元,用于对频率范围内的信号都进行语音增强处理,然后触发所述预加重单元U41。
所述装置能够优化提取的MFCC系数,从而提高语音识别的准确度。
参照图5,本发明装置实施例还提供了一种Mel滤波装置的结构图,该装置主要应用于频率范围为0-16kHz的宽带信号处理。
所述Mel滤波装置主要包括:
参数设置单元U51,用于设定Mel滤波器组的子带数量;
Mel滤波单元U52,用于根据所述Mel滤波器组的子带数量,在16kHz的线性频带上进行Mel滤波,得到对应每条子带的Mel滤波输出;
子带映射单元U53,用于根据Mel频率与线性频率之间的映射关系,得到每条子带映射到线性频带上的频率范围,进而得出:0-8kHz的低频范围的子带数量密集,8-16kHz的高频范围的子带数量稀疏;
高频聚合单元U54,用于将所述高频范围内的子带数量进行聚合,得到聚合后相应子带数量的Mel滤波输出;
输出单元U55,用于将所述低频范围的Mel滤波输出和所述高频范围聚合后的Mel滤波输出,共同作为16kHz线性频带的Mel滤波输出。
优选的,若设定Mel滤波器组的子带数量为32,则0-8kHz的低频范围的子带数量为23,8-16kHz的高频范围的子带数量为9;所述高频范围内的子带数量聚合为3。经实验证明,这样的取值能提取出较好的MFCC系数。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本发明所提供的一种语音信号的MFCC系数提取方法、装置及一种Mel滤波方法、装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。