kaldi源码分析(一)--kaldi脚本

数据准备

发音词典 L.fst

将之前的词典转换为L.fst 以及 topo文件

utils/prepare_lang.sh --position-dependent-phones false lang/dict “<UNK>” lang/local lang/lang


提取特征

脚本 使用
steps/make_mfcc.sh 根据wav.scp提取特征
steps/compute_cmvn_stats.sh 根据feats.scp计算cmn

声学模型训练

脚本 作用
steps/train_mono.sh 单音素训练 ,一共进行40次迭代,每两次迭代进行一次对齐操作
steps/train_deltas.sh 以单音素模型为输入训练上下文相关的三音素模型
steps/train_lda_mllt.sh 用来进行线性判别分析和最大似然线性转换
steps/train_sat.sh 用来训练发音人自适应,基于特征空间最大似然线性回归
steps/nnets nnet3神经网络
脚本 作用
utils/format_lm.sh 上述的语言工具基于第三方工具,为ARPA-format,脚本的作业是将其转换为fst,方便与之前的字典fst(L.fst)结合,发挥fst的优势。 脚本最后会检测G.fst中是否存在没有单词的空回环,如果存在会报错,因为这会导致后续HLG determinization的出现错误。脚本utils/format_lm.sh解决把ARPA格式的语言模型转换成OpenFST格式类型。
utils/fix_data_dir.sh 该脚本会修复排序错误,并会移除那些被指明需要特征数据或标注,但是却找不到被需要的数据的那些发音

语言模型训练

解码

解码的过程需要对模型进行构图,也就是生成HCLG的过程,模型的构图是按照G L C H 的构图方式进行的,其中

G.fst 表示语言模型

FSA grammar,通过n-gram语言模型得到,将字对应词组

L_disambig.fst The Phonetic Dictionary with Disambiguation Symbols FST

构成一个FST,将发音单元转化为字

C.fst: The Context FST

把triphone 转化成monophone,即在第2步骤中扩展了context,即扩展为triphone,最终输出是CLG.fst

H.fst: The HMM FST

把HMM的state映射到triphone ,即把pdf-id映射到triphone,也就是扩展了HMM,即输入时pdf-id,输出是发音单元

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章