数据准备
发音词典 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,输出是发音单元