kaldi数据整理与特征提取

一、基本数据

data/train目录下

二、语言数据

data/dict目录下

utils/prepare_lang.sh:对data/dict 文件进行处理,得到data/lang , 生成以下文件内容:

data/lang目录下

备注:发音词典应尽可能覆盖训练语料,且基于已有的音素表,可更改或扩充发音词典,以适用于不同的领域或场景。

三、kaldi中的文件存储格式

ark与scp的读写

备注:同时写ark和scp时ark需放在scp前面,scp不能单独写入。

常用数据表单:

句子音频表单:wav.scp

声学特征表单:feats.scp

谱特征归一化表单:cmvn.scp

VAD信息表单:vad.scp

说话人映射表单:utt2spk、spk2utt

标注文本表单:text

其中wav.scp、text、utt2spk需自己准备。

四、声学特征提取

常用的声学特征有FBANK、MFCC、PLP等, MFCC特征各纬度之间具有较弱的相关性,适合GMM的训练,FBANK相比MFCC保留了更原始的声学特征,多用于DNN的训练。

MFCC特征提取流程

预加重:语音中有频谱倾斜现象,即低频具有较高能量,需加重高频语音能量,是高频信息凸显出来。

    x'[t] = x[t] −ax[t −1]         

x[t]表示音频数据的第t个采样点,a通常取值(0.95, 0.99)

分帧:一般每帧帧长为20ms或25ms,假设采样率是16 kHz,帧长为25ms,则一帧有16000 * 0.025 = 400个采样点。为确保声学特征参数的平滑性,一般采用重叠取帧的方式,即相邻帧之间存在重叠部分(帧移一般为10ms)。

加窗:特征提取时,每次取出窗长为25ms的语音,进行离散傅立叶变换计算出一帧,接着步移10ms继续计算下一帧,相当于加了矩形窗。二棱角分明的矩形窗容易造成频谱泄露,可以选择使用海明窗(Hamming Window)、汉宁窗(Hanning Window)等。加窗计算方式为:

 x'[n] = w[n]x[n]

x[n]是所取窗口(窗长为N,即N个采样点)之内的第n个采样点,w[n]是对应权重,不同加窗方式权重不一样。本质上加窗计算也是卷积。

不同窗函数形状

离散傅立叶变换(DFT):    从每一段加窗后的音频中分别提取出频域信息。DFT的一个实现方法是快速傅立叶变换(FFT),可将事件复杂度从O()降为O(),但是需要保证窗长N是2的指数。如果原窗长为400,一般在音频信号末尾补零扩展为512。

语谱图:语音信号经过短时傅立叶变换(STFT)后得到的频谱为对称谱,取正频率轴的频谱曲线,并且将每一帧的频谱值按时间顺序拼接起来。

频谱与语谱图

梅尔刻度(Mel Scale): 人耳对不同频率的感知程度不一样,频率越高敏感度越低,因此人耳的频域感知是非线性的,用梅尔刻度进行刻画。反映了人耳线性感知的梅尔频率Mef(f)与普通频率f之间的关系。

Mel(f) = 1127ln(1 + f/700)

梅尔滤波器组(Mel Filter Bank): 计算方式与加窗类似,越往高频,滤波器窗口越大,窗口扩大的量级与梅尔刻度一致。滤波器的个数就是梅尔频段的总数目,通常为几十。

三角滤波器组的工作方式

FBANK特征:梅尔频谱的能量数值取对数得到FBANK特征,对数计算增强了特征的鲁棒性。用于DNN训练时,FBANK的维度就是梅尔滤波器的个数,常取20~40之间。

MFCC特征:FBANK中含有基频的谐波(相当于频谱中的毛刺),不利于整体轮廓(包络)的显现,并且各维度之间具有较高的相关性,不适宜GMM学习。MFCC的目的是消除与音素判别关系不大的谐波,保留包络信息。对FBANK特征每帧进行离散傅立叶变换(IDFT)可以将包络与谐波分开,等价于对每帧FBANK进行离散余弦变换(DCT),生成结果记为倒谱。

差分:语音是时序信号,故声学特征的帧与帧之间并不是孤立的,是连续变化的,前后的变化往往包含一些声音线索,动态特征可以显示特征随时间变化的程度,常采用一阶差分、二阶差分,一阶差分计算方式:

d[t] = (c[t+1]-c[t-1] ) /  2

c[t]表示第t帧MFCC特征,二阶差分则是一阶差分的差分。通常用来训练GMM的声学特征共39维: 12 MFCCs + Energy(13 维)+  12 ∆ MFCCs + ∆ Energy(13 维)+  12 ∆2 MFCCs + ∆2 Energy(13 维)

备注:对数计算好处包含一定程度上增加非线性,平滑数据、缩小数据范围,防止溢出、将乘变为加,计算方便、与softmax合用便于梯度计算和传递等。

CQCC特征:能实现在低频率范围具有较高的频率分辨率,在高频率范围有较高的时间分辨率,可应用于声纹识别。

总结:语谱图、FBank、MFCC和PLP都采用短时傅立叶变换(STFT),具有规律的线性分辨率,而CQCC则具有几何级的分辨率。FBANK和MFCC都采用Mel滤波器组,而PLP则利用Bark滤波器组模拟人耳听觉特性。通过不同提取方法得到的声学特征所表征的语言特点是不同的,FBank保留更多的原始特征,MFCC去相关性较好,而PLP抗噪性更强。


参考地址:https://mp.weixin.qq.com/s/wowvIK5sspVR7ogF-3keYA

你可能感兴趣的:(kaldi数据整理与特征提取)