【kaldi】运行aishell脚本解析

 local/aishell_prepare_dict.sh $data/resource_aishell

生成data/local/dict目录下的内容 extra_questions.txt  lexiconp.txt  lexicon.txt  nonsilence_phones.txt  optional_silence.txt  silence_phones.txt

  • extra_questions.txt:用来构建决策树的问题集,可以是空的,包含多组相同的音素,每一组音素包含相同的重音或者声调;
  • lexiconp.txt是带概率的字典文件,概率值为每个词出现的概率
  • lexicon.txt文件是字典文件
  • silence_phones.txt/nonsilence_phones.txt为静音/非静音音素,每一行代表一组相同的base phone,但可能有不同的声调的音素,如: 
  • optional_silence.txt:包含一个单独的音素用来作为词典中默认的静音音素

 local/aishell_data_prep.sh $data/data_aishell/wav $data/data_aishell/transcript 

为{train,dev,test}数据生成spk2utt,utt2spk,wav.scp,text四个文件。

  • spk2utt: 说话人id 语音文件名(一个说话人对应多个文件名)
  • utt2spk:语音文件名 说话人id
  • wav.scp:语音文件名 语音文件绝对路径
  • text:语音文件名 对应标注

 utils/prepare_lang.sh --position-dependent-phones false data/local/dict  "<SPOKEN_NOISE>" data/local/lang data/lang 

生成data/lang目录下的内容,主要是L.fst

1) --position-dependent-phones false:是否将phone拆成更详细的部分,若选择true,则将在phone后面根据音素所处的位置加上 

2) data/dict: 词典源文件夹  。

3) "<SPOKEN_NOISE>":词典里未包含的事例 .

4) data/local/lang : 临时文件夹

5) data/lang: 目标文件夹。

 local/aishell_train_lms.sh 

生成data/local/lm目录下的内容,训练语言模型data/local/lm/3gram-mincount/lm_unpruned.gz

 utils/format_lm.sh data/lang data/local/lm/3gram-mincount/lm_unpruned.gz  data/local/dict/lexicon.txt data/lang_test 

data/lang_test目录,将语言模型格式化为fst格式文件,即G.fst,文件夹下的其他文件是从data/lang拷贝而来

 for x in train dev test; do
steps/make_mfcc_pitch.sh --cmd "$train_cmd" --nj 10 data/$x exp/make_mfcc/$x $mfccdir || exit 1;
steps/compute_cmvn_stats.sh data/$x exp/make_mfcc/$x $mfccdir || exit 1;
utils/fix_data_dir.sh data/$x || exit 1;
done

1.steps/make_mfcc_pitch.sh:提取mfcc特征,这里加入了pitch(音高)特征。

命令工具 compute-mfcc-feats用来计算MFCC特征,需要两个参数,rspecifier是用来读.wav数据,wspecifier是用来写特征(就是r 和w)。典型的用法是,

将数据写入一个大的"archive"文件,也写到一个"scp"文件以便随机读取.

MFCC的计算由Mfcc类型的对象完成,它有Compute()函数可以根据波形计算特征.一个完整的MFCC计算如下:

1) 计算出一个文件中帧的数目(通常帧长25ms,帧移10ms)

2) 对每一帧提取数据,可选做Dithering(抖动),预加重和去除直流偏移,还可以和加窗函数相乘(此处支持多种选项,如Hanmming 窗).

3)计算该点能量(也可用对数能量 )

4) 做快速傅里叶变换(FFT)并计算功率谱

5)计算每个梅尔滤波器的能量,如23个部分重叠的三角滤波器,其中心在梅尔频域等间距

6) 计算对数能量并做离散余弦变换,根据要求保留系数(如13个)

7) 选做倒谱变换;它仅仅是比例变换,确保系数在合理范围内

上下截止频率根据三角滤波器界定,由选项–low-freq和–high-freq控制,通常分别设置为0Hz和奈奎斯特频率附近,如对16kHz采样的语音设置为–low-freq=20 和 –high-freq=7800

2.steps/compute_cmvn_stats.sh,倒谱均值方差归一化。

在实际情况下,受不同麦克风及音频通道的影响,会导致相同音素的特征差别比较大,通过CMVN可以得到均值为0,方差为1的标准特征。均值方差可以以一段语音为单位计算,但更好的是在一个较大的数据及上进行计算,这样识别效果会更加robustness。Kaldi中计算均值和方差的代码在compute-cmvn-stats.cc, 归一化在apply-cmvn.cc。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值