AIBigKaldi(四)| Kaldi的特征提取(源码解析)

本文来自公众号“AI大道理”。

这里既有AI,又有生活大道理,无数渺小的思考填满了一生。


准备好了数据,接下来就可以特征提取了。
最常用到的语音特征就是梅尔倒谱系数(Mel-scaleFrequency Cepstral Coefficients,简称MFCC)。
以最简单的YesNo为例。​

1 run.sh

特征提取步骤:

MFCC提取过程包括预处理、快速傅里叶变换、Mei滤波器组、对数运算、离散余弦变换、动态特征提取等步骤。

Kaldi在进行MFCC特征提取后使用了谱归一化CMVN使得模型的输入特征趋近正态分布。

run.sh:

其中:

2 特征提取 

2.1 make_mfcc.sh

功能:

生成mfcc目录存放.scp和.ark特征文件;

生成 exp/make_mfcc目录存放特征提取log文件;

生成data/train_yesno, data/test_yesno里面的cmvn.scp、 feats.scp文件。

make_mfcc.sh会用到conf/mfcc.conf

其中采样频率在这里设置,这里为8KHZ。


命令行解析:


源码(部分):


源码解析:
利用Kaldi的compute-mfcc-feats工具计算梅尔倒谱频率特征,然后利用copy-feats工具的参数—compress=true 压缩处理存储为两个文件类型ark和scp。

调用命令行工具compute-mfcc-feats,提取特征,创建feats.ark和feats.scp文件。

用法为:
compute-mfcc-feats [options...] <wav-rspecifier><feats-wspecifier>。
 

来龙去脉:

3 倒谱均值方差归一化

2.2 compute_cmvn_stats.sh

CMCN(Cepstral Mean and Variance Normalization):倒谱均值方差归一化。
功能:

提取声学特征以后,将声学特征从一个空间转变成另一个空间,使得在这个空间下更特征参数更符合某种概率分布,压缩了特征参数值域的动态范围,减少了训练和测试环境的不匹配等。

(这不是必须的,当你在单一环境中进行语音识别时,CMN甚至会恶化你的结果,CMN会倾向于将附加噪声当成信号。)

源头:

CMN(Cepstral Mean Normalisation):倒谱均值归一化。

在语音识别中,我们希望移除通道效应(声道的冲击响应,传播路径,房间环境等等)。

由于任何通道卷积特性的扭曲特性,在倒谱域下都可以变为叠加信号,经过倒谱均值归一化后就消除了通道的影响。

步骤:

  • 计算倒谱;

  • 从每一帧中减去平均值;

  • 相对于减去均值,可以选择性的除以方差来进行CMVN。

CMVN可以恢复特征在时域上的多样性,而这种多样性通常会由于噪声的影响而减弱,这同样可以被视为一种一种减少特征变异性的方法。

通过对MFCC系数的静态量进行归一化,也就是进行CMN或者CMVN可以提高语音识别器的鲁棒性。

命令行解析:

4 数据检查

2.3  fix_data_dir.sh

功能:

该脚本会修复排序错误,并移除那些被指明需要特征数据或标注,但却找不到相应数据的那些发音。

命令行解析:

5 总结

提取了MFCC特征,并进行倒谱均值方差归一化,数据检查无误后就可以进行模型训练了。

首先进行的是单音素模型训练,然后进行三音子模型训练。

下期预告

AIBigKaldi(五)|  Kaldi的单音子模型训练

往期精选

AIBigKaldi(三)|  Kaldi的数据准备

AIBigKaldi(二)|  Kaldi的I/O机制

AIBigKaldi(一)|  Kaldi目录结构

AI大语音(十四)——区分性训练
AI大语音(十三)——DNN-HMM
AI大语音(十二)——WFST解码器(下)
AI大语音(十一)——WFST解码器(上)

AI大语音(十)——N-gram语言模型
AI大语音(九)——基于GMM-HMM的连续语音识别系统
AI大语音(八)——GMM-HMM声学模型
AI大语音(七)——基于GMM的0-9语音识别系统
AI大语音(六)——混合高斯模型(GMM)
AI大语音(五)——隐马尔科夫模型(HMM)
AI大语音(四)——MFCC特征提取
AI大语音(三)——傅里叶变换家族
AI大语音(二)——语音预处理
AI大语音(一)——语音识别基础

 ——————

浅谈则止,细致入微AI大道理

扫描下方“AI大道理”,选择“关注”公众号

—————————————————————

—————————————————————

投稿吧   | 留言吧

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值