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. tomcat解析

    tomat是一个servlet容器,来处理http请求.在平时的使用中我们都会再浏览器中输入http地址来访问服务资源,比如格式http://host[":"port][abs_p ...

  2. iOS之利用runtime,避免可变数组和可变字典为nil或者数组越界导致的崩溃

    NSArray.NSMutableArray.NSDictionary.NSMutableDictionary.是我们的在iOS开发中非常常用的类.当然,在享受这些类的便利的同时,它们也给我们带来一些 ...

  3. jquery 插件学习

    练习jquery上的一个插件编写 1.标准的3个基本内容,根目录里面创建2个文件夹(存放css和js)和1个html页面文件: 2.测试的主html页面代码 <!DOCTYPE html> ...

  4. go语言学习(一):数组/切片

    学习区块链之后,发现还要学习加密,接触到的视频是:Go的crypto包,所以开始接触Go.因为和solidity有些相似,但是比solidity简单一些,就开始放松的心态去学习.每天翻着go菜鸟教程, ...

  5. 一分钟完成pip安装

    很多实用Python的小伙伴都需要使用pip安装相应的包,对于初学者而已,检查遇到pip安装不成功的情况,如以下典型错误: Traceback (most recent call last): Fil ...

  6. Python学习手册之__main__ 模块,常用第三方模块和打包发布

    在上一篇文章中,我们介绍了 Python 的 元组拆包.三元运算符和对 Python 的 else 语句进行了深入讲解,现在我们介绍 Python 的 __main__ 模块.常用第三方模块和打包发布 ...

  7. JZ2440开发板:修改ARM芯片时钟(学习笔记)

    想要修改ARM芯片的时钟,需要去查询芯片手册和原理图,获取相关的信息(见下方图片) 首先来看时钟的结构图 根据结构图可以看出,时钟源有两种选择:1. XTIpll和XTOpll所连接的晶振 2. EX ...

  8. C# 调用腾讯云接口获取视频基本信息

    做项目需要上传视频,获取时长,上传教程很多,获取信息很少,官方只有一条请求地址. 找了好久,都没有说这个请求地址怎么用.最后发现需要调用腾讯云SDK 官方地址:https://github.com/Q ...

  9. 数据结构之栈和队列及其Java实现

    栈和队列是数据结构中非常常见和基础的线性表,在某些场合栈和队列使用很多,因此本篇主要介绍栈和队列,并用Java实现基本的栈和队列,同时用栈和队列相互实现. 栈:栈是一种基于“后进先出”策略的线性表.在 ...

  10. JavaScript---通过正则表达式验证表单输入

    验证输入的name只能是数字或字母或下划线 js <script type="text/javascript"> function submitOn(){ var f ...