Fbank是需要语音特征参数提取方法之一,因其独特的基于倒谱的提取方式,更加的符合人类的听觉原理,因而也是最为普遍、最有效的语音特征提取算法。基于滤波器组的特征 Fbank(Filter bank), Fbank 特征提取方法就是相当 于 MFCC 去掉最后一步的离散余弦变换(有损变换),跟 MFCC 特征, Fbank 特征保留了更多的原始语音数据。
MFCC语音特征的提取过程,如下图:
需要对语音信号进行预加重、分帧、加窗等等处理,而这些处理的方式均是为了能够最大化语音信号的某些信息,以达到最好特征参数的提取。
语音读取及可视化:
结果:
1.预加重
预加重其实就是将语音信号通过一个高通滤波器,来增强语音信号中的高频部分,并保持在低频到高频的整个频段中,能够使用同样的信噪比求频谱。在本实验中,选取的高通滤波器传递函数为:
预加重系数 a=0.97
式中a的值介于0.9-1.0之间,我们通常取0.97。同时,预加重也是为了消除发生过程中声带和嘴唇的效应,来补偿语音信号受到发音系统所抑制的高频部分,也为了突出高频的共振峰。
结果:
2.分帧
分帧是指在跟定的音频样本文件中,按照某一个固定的时间长度分割,分割后的每一片样本,称之为一帧,这里需要区分时域波形中的帧,分割后的一帧是分析提取Fbank的样本,而时域波形中的帧是时域尺度上对音频的采样而取到的样本。
分帧是先将N个采样点集合成一个观测单位,也就是分割后的帧。通常情况下N的取值为512或256,涵盖的时间约为20-30ms。也可以根据特定的需要进行N值和窗口间隔的调整。为了避免相邻两帧的变化过大,会让两相邻帧之间有一段重叠区域,此重叠区域包含了M个取样点,一般M的值约为N的1/2或1/3。
语音识别中所采用的信号采样频率一般为8kHz或16kHz。以8kHz来说,若帧长度为256个采样点,则对应的时间长度是256/8000×1000=32ms。本次实验中所使用的采样率(Frames Per Second)16kHz,窗长25ms(400个采样点),窗间隔为10ms(160个采样点)。
结果:
3.加窗
在对音频进行分帧之后,需要对每一帧进行加窗,以增加帧左端和右端的连续性,减少频谱泄漏。在提取Fbank的时候,比较常用的窗口函数为Hamming窗。
假设分帧后的信号为 S(n),n=0,1,2…,N-1,其中N为帧的大小,那么进行加窗的处理则为:
W(n)的形式如下:
不同的a值会产生不同的汉明窗,一般情况下a取值0.46。进行值替换后,W(n)则为:
对应的汉明窗时域波形类似下图:
结果:
4.对信号进行离散傅立叶变换 (DFT)
由于信号在时域上的变换通常很难看出信号的特性,所有通常将它转换为频域上的能量分布来观察,不同的能量分布,代表不同语音的特性。所以在进行了加窗处理后,还需要再经过离散傅里叶变换以得到频谱上的能量分布。对分帧加窗后的各帧信号进行快速傅里叶变换得到各帧的频谱。并对语音信号的频谱取模平方得到语音信号的功率谱。设语音信号的DFT为:
能量的分布为:
下图是有频谱到功率谱的转换结果示意图:
结果:
5. 应用梅尔滤波器 (Mel Filterbank)
Fbank考虑到了人类的听觉特征,先将线性频谱映射到基于听觉感知的Mel非线性频谱中,然后转换到倒谱上。 在Mel频域内,人对音调的感知度为线性关系。举例来说,如果两段语音的Mel频率相差两倍,则人耳听起来两者的音调也相差两倍。Mel滤波器的本质其实是一个尺度规则,通常是将能量通过一组Mel尺度的三角形滤波器组,如定义有M个滤波器的滤波器组,采用的滤波器为三角滤波器,中心频率为 f(m),m=1,2…M,M通常取22-26。f(m)之间的间隔随着m值的减小而缩小,随着m值的增大而增宽,如图所示:
从频率到Mel频率的转换公式为:
其中 f 为语音信号的频率,单位赫兹(Hz)。
假如有10个Mel滤波器(在实际应用中通常一组Mel滤波器组有26个滤波器。),首先要选择一个最高频率和最低频率,通常最高频率为8000Hz,最低频率为300Hz。使用从频率转换为Mel频率的公式将300Hz转换为401.25Mels,8000Hz转换为2834.99Mels,由于有10个滤波器,每个滤波器针对两个频率的样点,样点之间会进行重叠处理,因此需要12个点,意味着需要在401.25和2834.99之间再线性间隔出10个附加点,如:
现在使用从Mel频率转换为频率的公式将它们转换回赫兹:
将频率映射到最接近的DFT频率:
于是,我们得到了一个由10个Mel滤波器构成的Mel滤波器组。
网友评论