kaldi HMM-GMM全部训练脚本分解
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全部训练脚本分解的更多相关文章
- kaldi基于GMM的单音素模型 训练部分
目录 1. gmm-init-mono 模型初始化 2. compile-train-graghs 训练图初始化 3. align-equal-compiled 特征文件均匀分割 4. gmm-acc ...
- Kaldi单音素模型 训练部分
在Kaldi中,单音素GMM的训练用的是Viterbi training,而不是Baum-Welch training.因此就不是用HMM Baum-Welch那几个公式去更新参数,也就不用计算前向概 ...
- [转]kaldi基于GMM做分类问题
转自:http://blog.csdn.net/zjm750617105/article/details/55211992 对于每个类别的GMM有几种思路: 第一是将所有训练数据按类别分开,每类的数据 ...
- caffe训练脚本文件时遇到./build/tools/caffe: not found
原文转载:https://blog.csdn.net/zhongshaoyy/article/details/53502373 cifar10训练步骤如下: (1)打开终端,应用cd切换路径,如 cd ...
- caffe运行训练脚本时报错:Unknown bottom blob 'data' (layer 'conv1',bottom index 0)
报错的两种报错原因: 1.输入数的路径错误,需要将路径进行修改排查目录是否出错 2.训练原数据格式不对 3.train.prototxt文件中并未设置test层,而在solver层则设置了test的迭 ...
- Baum-Welch算法(EM算法)对HMM模型的训练
Baum-Welch算法就是EM算法,所以首先给出EM算法的Q函数 \[\sum_zP(Z|Y,\theta')\log P(Y,Z|\theta)\] 换成HMM里面的记号便于理解 \[Q(\lam ...
- lua脚本分解字符串
--local str = "文字45 文字 789 文们adsd45 文字 wowo 文字 文字 wowo我们 wowo456 wiwo 465我们 456sdf 45 45我们adsd4 ...
- Kaldi的关键词搜索(Keyword Search,KWS)
本文简单地介绍了KWS的原理--为Lattice中每个词生成索引并进行搜索:介绍了如何处理OOV--替补(Proxy,词典内对OOV的替补)关键词技术:介绍了KWS的语料库格式:介绍了KWS在Kald ...
- [转]异常声音检测之kaldi DNN 训练
转自:http://blog.csdn.net/huchad/article/details/52092796 使用kaldi的DNN做音频分类,异常声音检测. HMM/GMM -> HMM/D ...
随机推荐
- Mybatis resultMap灵活用法(使用子查询)
### 背景查询广州每个景点的总流量,和每个景点每日流量 #### 数据表 t_广州|唯一标识id|地点place|流量counts|日期date||:---:|:---:|:---:|:---:|| ...
- Java设计模式六大原则-2
Java设计模式六大原则-2 做Java程序开发的每天都在使用JDK,Spring,SpringMvc,Mybatis,Netty,MINA等框架,但很少有人懂得背后的原理.即使打开跟下原码也是一头雾 ...
- Windows10 IIS安装php manager和IIS URL Rewrite 2.0组件的方法
Windows10中自带的Server:Microsoft-IIS///8.5/10上安装.微软脑子秀逗,跳过了9,以为能解决版本识别的问题,没想到弄成10,还是出现了版本识别的问题,真是自己打自己的 ...
- ubuntu8.04下mysql更改用户和密码
1.最近由于系统原因重装了mysql,但是发现安装过程中没有提示设置密码. 2.修改用户名和密码步骤 A.service mysql stop #停止mysql服务 B.sudo vim /et ...
- .net第三方数据库物理卡号同步功能实现
本地数据库用的是Oracle,第三方数据库是SQL Server,连接字符串保存在web.config里面. 第三方数据库为增量,每次读取要记录读取的最大位置.我是保存在本地txt文件里面. //保存 ...
- 大数据学习--day05(嵌套循环、方法、递归)
嵌套循环.方法.递归 图形打印 public static void main(String[]arg) { /** * * * * * * */ // 3 2 1 0 // 1 3 5 for(in ...
- Python(1-8天总结)
day1:变量:把程序运行过程中产生的中间值.暂时存储起来.方便后面的程序调用.变量命名规范:常量:所有字母大写注释:数据类型: 1. int 整数 2. str 字符串. 不会用字符串保存大量的数据 ...
- ruby中的三目操作符和include?操作
三目操作符:口?口:口 问号前面的是布尔型的判断,true的话执行第二个方块的语句,false的话执行第三个方块的语句例如:value =(nil ? 0 : 1)p value=>1 .inc ...
- R语言爬虫:爬取包含所有R包的名称及介绍
第一种方法 library("rvest") page <- read_html("https://cran.rstudio.com/web/packages/av ...
- Nodejs实战 —— 测试 Node 程序
读 <node.js实战2.0>,进行学习记录总结. 当当网购买链接 豆瓣网1.0链接 测试 Node 程序 本章内容 用 Node 的 assert 模块测试 使用其他断言库 使用 No ...