train_mono.sh

单音素训练脚本:

//初始化,[topo feats] -> [0.mdl tree]
gmm-init-mono
//生成训练图,[0.mdl text l.fst] -> [train.fst]
compile-train-graph
//对标签进行初始化对齐[train.fst feats 0.mdl tree] -> [1.ali]
align-equal-compiled
//统计估计模型所需统计量,[feats 1.ali] -> [1.acc]
gmm-acc-stats-ali
//参数重估,估计新的模型 [1.acc] -> [1.mdl]
gmm-est //迭代训练
for i < iteration
//重新统计所需统计量,[$i.ali] -> [$i.acc]
gmm-acc-stats-ali
//估计新的模型,[$i.acc] -> [$i.mdl]
gmm-est
//重新对齐,[train.fst $i.mdl] ->[$i+1.ali]
gmm-align-compiled
//输出最后的模型
final.mdl = $i.mdl

train_deltas.sh

三音素训练脚本:

//特征处理 [feats] -> [feats]
apply-cmvn | add-deltas
//由生成的单音素模型的对齐结果对三音素参数统计,用于生成决策树[final.ali feats] -> [treeacc]
acc-tree-stats
//三音素绑定,[treeacc] -> [tree]
cluster-phone
compile-questions
build-tree //该步骤完成决策树三音素聚类
//三音素模型初始化,[treeacc tree topo] -> [1.occ 1.mdl] -> [1.mdl]
gmm-init-model | gmm-mixup
//将单音素对其文件中的元素替换为决策树的叶子,[final.mdl 1.mdl final.ali] -> [ali.new]
convert-ali
//生成训练图,[1.mdl text l.fst] -> [train.fst]
compile-train-graph //迭代训练
for i < iteration
//重新对齐,[train.fst $i.mdl] ->[$i+1.ali]
gmm-align-compiled
//重新统计所需统计量,[$i.ali] -> [$i.acc]
gmm-acc-stats-ali
//估计新的模型,[$i.acc] -> [$i.mdl]
gmm-est //该步骤增加混合高斯分量的数目
//输出最后的模型
final.mdl = $i.mdl

train_lda_mllt.sh

lda-mllt训练脚本,非说话人自适应,mllt的作用是减少协方差矩阵对角化的损失:

//生成先验概率,统计计算lda所需统计量,[splice-feats final.ali] -> [lda.acc]
ali-to-post
weight-silence-post
acc-lda
//估计lda矩阵,[lda.acc] -> [lda.mat]
est-lda
//通过对转换后的特征重新统计,用于生成决策树[final.ali feats.*lda.mat] -> [treeacc]
acc-tree-stats
//三音素绑定,[treeacc] -> [tree]
cluster-phone
compile-questions
build-tree //该步骤完成决策树三音素聚类
//三音素模型初始化,[treeacc tree topo] -> [1.occ 1.mdl]
gmm-init-model
//将三音素决策树的叶子替换为转换后模型决策树的叶子,[final.mdl 1.mdl final.ali] -> [ali.new]
convert-ali
//生成训练图,[1.mdl text l.fst] -> [train.fst]
compile-train-graph //迭代训练
for i < iteration
//重新对齐,[train.fst $i.mdl] ->[$i+1.ali]
gmm-align-compiled
//同lda,估计mllt的矩阵
ali-to-post | weight-silence-post | gmm-acc-mllt
est-mllt
//对gmm模型进行变换,[mllt.mat mdl] -> [new.mdl]
gmm-transform-means
//组合变换矩阵,[lda.mat mllt.mat] -> [lda.mat]
compose-transforms
//重新统计所需统计量,[$i.ali] -> [$i.acc]
gmm-acc-stats-ali
//估计新的模型,[$i.acc] -> [$i.mdl]
gmm-est //该步骤增加混合高斯分量的数目
//输出最后的模型
final.mdl = $i.mdl

train_sat.sh

说话人自适应模型,fmllr训练脚本:

//生成先验概率,统计计算fmllr所需统计量,[splice-feats spk2utt] -> [trans]
ali-to-post
weight-silence-post
gmm-est-fmllr
//通过对转换后的特征重新统计,用于生成决策树[final.ali feats.*lda.mat] -> [treeacc]
acc-tree-stats
//三音素绑定,[treeacc] -> [tree]
cluster-phone
compile-questions
build-tree //该步骤完成决策树三音素聚类
//三音素模型初始化,[treeacc tree topo] -> [1.occ 1.mdl]
gmm-init-model
//将三音素决策树的叶子替换为转换后模型决策树的叶子,[final.mdl 1.mdl final.ali] -> [ali.new]
convert-ali
//生成训练图,[1.mdl text l.fst] -> [train.fst]
compile-train-graph //迭代训练
for i < iteration
//重新对齐,[train.fst $i.mdl] ->[$i+1.ali]
gmm-align-compiled
//同lda,估计fmllr的矩阵 -> [fmllr.trans]
ali-to-post | weight-silence-post | gmm-est-fmllr
//组合变换矩阵,[trans.mat fmllr.trans] -> [trans.mat]
compose-transforms
//重新统计所需统计量,[$i.ali] -> [$i.acc]
gmm-acc-stats-ali
//估计新的模型,[$i.acc] -> [$i.mdl]
gmm-est //该步骤增加混合高斯分量的数目
//输出最后的模型
final.mdl = $i.mdl

kaldi HMM-GMM全部训练脚本分解的更多相关文章

  1. kaldi基于GMM的单音素模型 训练部分

    目录 1. gmm-init-mono 模型初始化 2. compile-train-graghs 训练图初始化 3. align-equal-compiled 特征文件均匀分割 4. gmm-acc ...

  2. Kaldi单音素模型 训练部分

    在Kaldi中,单音素GMM的训练用的是Viterbi training,而不是Baum-Welch training.因此就不是用HMM Baum-Welch那几个公式去更新参数,也就不用计算前向概 ...

  3. [转]kaldi基于GMM做分类问题

    转自:http://blog.csdn.net/zjm750617105/article/details/55211992 对于每个类别的GMM有几种思路: 第一是将所有训练数据按类别分开,每类的数据 ...

  4. caffe训练脚本文件时遇到./build/tools/caffe: not found

    原文转载:https://blog.csdn.net/zhongshaoyy/article/details/53502373 cifar10训练步骤如下: (1)打开终端,应用cd切换路径,如 cd ...

  5. caffe运行训练脚本时报错:Unknown bottom blob 'data' (layer 'conv1',bottom index 0)

    报错的两种报错原因: 1.输入数的路径错误,需要将路径进行修改排查目录是否出错 2.训练原数据格式不对 3.train.prototxt文件中并未设置test层,而在solver层则设置了test的迭 ...

  6. Baum-Welch算法(EM算法)对HMM模型的训练

    Baum-Welch算法就是EM算法,所以首先给出EM算法的Q函数 \[\sum_zP(Z|Y,\theta')\log P(Y,Z|\theta)\] 换成HMM里面的记号便于理解 \[Q(\lam ...

  7. lua脚本分解字符串

    --local str = "文字45 文字 789 文们adsd45 文字 wowo 文字 文字 wowo我们 wowo456 wiwo 465我们 456sdf 45 45我们adsd4 ...

  8. Kaldi的关键词搜索(Keyword Search,KWS)

    本文简单地介绍了KWS的原理--为Lattice中每个词生成索引并进行搜索:介绍了如何处理OOV--替补(Proxy,词典内对OOV的替补)关键词技术:介绍了KWS的语料库格式:介绍了KWS在Kald ...

  9. [转]异常声音检测之kaldi DNN 训练

    转自:http://blog.csdn.net/huchad/article/details/52092796 使用kaldi的DNN做音频分类,异常声音检测. HMM/GMM -> HMM/D ...

随机推荐

  1. ArrayList的去重问题

    面试被问及arraylist的去重问题,现将自己想的两种解决方案写在下面 /** * Description: * ClassName:Uniq * Package:com.syd.interview ...

  2. mysql主从延迟复制

    需求描述 正常情况下我们是不会有刻意延迟从库的需求的,因为正常的线上业务自然是延迟越低越好.但是针对测试场景,业务上偶尔需要测试延迟场景下业务是否能正常运行. 解决方案 针对这种场景mysql有一个叫 ...

  3. ThinkPHP5.0图片上传生成缩略图实例代码

    很多朋友遇到这样一个问题,图片上传生成缩略图,很多人在本机(win)测试成功,上传到linux 服务器后错误. 我也遇到同样的问题.网上一查,有无数的人说是服务器临时文件目录权限问题. 几经思考后,发 ...

  4. 5. CSS是什么

    CSS概念 CSS,层叠样式表,也叫做风格样式表.通过CSS我们可以为页面添加一个美丽的外观,获得更加良好的用户体验.不过值得我们注意的是和HTML一样,CSS也不是编程语言,它只是提供一种配置文件, ...

  5. Julia 1.0 中文文档

    欢迎来到Julia 1.0的文档. 请阅读发布博客文章,了解该语言的一般概述以及自Julia v0.6以来的许多更改.请注意,0.7版本与1.0一起发布,以提供1.0版本之前的软件包和代码的升级路径. ...

  6. 使用maven下载cdh版本的大数据jar包

    在pom文件中添加 cloudera 配置文件 <repositories> <repository> <id>cloudera</id> <ur ...

  7. 帆软SQL报异常:多表连接的时候出现错误:未明确定义列

    我刚开始的代码: select dm_veh_jdcgz_mx.DAY_ID ,--日期 dm_veh_jdcgz_mx.GLBM ,--管理部门ID dm_veh_jdcgz_mx.SFZMHM , ...

  8. python remove跟pop的区别

    remove根据值来删除 li=[1,2,3,4] li.pop[0] li.remove['] 或者是a=li[-1]li.remove(a) pop是根据索引来删除

  9. Java学习笔记十八:Java面向对象的三大特性之封装

    Java面向对象的三大特性之封装 一:面向对象的三大特性: 封装 继承 多态   二:封装的概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访 ...

  10. 重庆Uber优步司机奖励政策(12月28日到1月3日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...