转自:http://blog.csdn.net/zjm750617105/article/details/55211992

对于每个类别的GMM有几种思路: 
第一是将所有训练数据按类别分开,每类的数据训练一个GMM模型 
第二是将所有的数据训练一个UBM模型,然后将训练数据按类别分开,用MAP去训练每个类别的GMM(对角UBM的MAP貌似kaldi 没有) 
第三就是将所有的数据训练一个UBM模型,然后不做MAP,直接用训好的UBM所GMM的初始值,然后将所有训练数据按类别分开,训练三个GMM模型(在第一种方法的GMM初始化用训好的UBM)

准备测试集数据,如果训练GMM是用的是原始的MFCC特征的话,也就是不经过add-delta apply-cmvn selected-voiced 等操作的话,那就直接用测试集的MFCC特征的feats.scp文件就好了。 
但是如果你的特征在训GMM的脚本里经过一些处理,那就是按照相同的处理,意思就是在输入模型之前特征的前端处理必须保持一致 
比如:

select-voiced-frames scp:feats.scp scp:vad.scp ark:- | compute-cmvn-stats ark:- ark:- | apply-cmvn --norm-vars=false ark:- scp:feats.scp ark:- | add-deltas --delta-window=3 --delta-order=2 ark:- ark:- | select-voiced-frames ark:- scp:vad.scp ark,t:final_feats.txt
#经过处理之后的特征在final_feats.txt中,可以直接vim打开验证一下维度对不对.

训好三个diag_GMM之后, 可以直接用kaldi的工具进行计算对数似然值:

#这个可以,计算的每一帧的似然值
gmm-global-get-frame-likes final.dubm scp:feats.scp ark,t:F_likes
#对每一帧的似然值取平均,每句话得到一个似然值
gmm-global-get-frame-likes --average=true final.dubm scp:feats.scp ark,t:F_likes
#由于上面测试集的数据是 final_feats.txt,那么我们的脚本就是:
gmm-global-get-frame-likes --average=true final.dubm ark,t:final_feats.txt ark,t:F_likes
#得到的输出文件F_likes,内容格式: uttId score

计算似然值的公式也很简单,很多现有值在GMM的模型里已经算出来了, weights , gconst , invvars, means_invvars直接根据这些结果只进行计算就可以了。

训练得到的diag gmm 模型是 final.dubm ,可以用转化成文本

gmm-global-copy --binary=false final.dubm final_dubm.txt

[转]kaldi基于GMM做分类问题的更多相关文章

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

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

  2. Python爬取《你好李焕英》豆瓣短评并基于SnowNLP做情感分析

    爬取过程在这里: Python爬取你好李焕英豆瓣短评并利用stylecloud制作更酷炫的词云图 本文基于前文爬取生成的douban.txt,基于SnowNLP做情感分析. 依赖库: 豆瓣镜像比较快: ...

  3. 每日一帖示例程序(使用TWebBrowser基于HTML做)

    最近在程序中增加了每日一帖的功能,搜索一下网站的程序,发现大部分是用Memo实现,而我用的是TWebBrowser基于HTML做,故帖出来共享一下. PAS源码: unit Unit1; interf ...

  4. Haproxy基于ACL做访问控制

    author:JevonWei 版权声明:原创作品 haproxy配置文档 https://cbonte.github.io/haproxy-dconv/ 基于ACL做访问控制(四层代理) 网络拓扑 ...

  5. 基于OpenCV做“三维重建”(1)--找到并绘制棋盘

    <OpenCV计算机视觉编程攻略(第3版)>这套书已经出到第3版了,如果你非要我说这本书有多好,我说不出来:只是很多我第一手的例子都是来源于这本书的-相比较OpenCV官方提供的代码,这本 ...

  6. 基于 Redis 做分布式锁

    基于 REDIS 的 SETNX().EXPIRE() 方法做分布式锁 setnx() setnx 的含义就是 SET if Not Exists,其主要有两个参数 setnx(key, value) ...

  7. 基于 K8s 做应用发布的工具那么多, 阿里为啥选择灰姑娘般的 Tekton ?

    作者 | 邓洪超,阿里云容器平台工程师, Kubernetes Operator 第二人,云原生应用标准交付与管理领域知名技术专家   导读:近年来,越来越多专门给 Kubernetes 做应用发布的 ...

  8. Pull Request的过程、基于git做的协同开发、git常见的一些命令、git实现代码的review、git实现版本的管理、gitlab、GitHub上为开源项目贡献代码

    前言: Pull Request的流程 1.fork 首先是找到自己想要pull request的项目, 然后点击fork按钮,此时就会在你的仓库中多出来一个仓库,格式是:自己的账户名/想要pull ...

  9. 使用百度NLP接口对搜狐新闻做分类

    一.简介 本文主要是要利用百度提供的NLP接口对搜狐的新闻做分类,百度对NLP接口有提供免费的额度可以拿来练习,主要是利用了NLP里面有个文章分类的功能,可以顺便测试看看百度NLP分类做的准不准.详细 ...

随机推荐

  1. python 导出数据到excel 中,一个好用的导出数据到excel模块,XlsxWriter

    最近公司有项目需要导出数据到excel,首先想到了,tablib,xlwt,xlrd,xlwings,win32com[还可以操作word],openpyxl,等模块但是 实际操作中tablib 写入 ...

  2. Quartz.Net进阶之六:详述 JobStores

    一.介绍 今天开始学习 JobStore,别的先不说,也不用翻译软件来翻译,直接从字面意思看来理解一下.我第一眼的感觉就是 job 是任务的意思,Store 是商店的意思,连起来就是可以存储 Job ...

  3. Docker 容器连接

    前面我们实现了通过网络端口类访问运行在 diocker 容器内的服务.下面我们来实现通过端口连接到了一个 dokcer 容器. 网络端口映射 我们创建一个python应用的容器. runoob@run ...

  4. rest接口webservice接口利用http请求方式发送数据

    所需依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>h ...

  5. 桌面小部件Wight父类AppWidgetProvider的三个方法

    onUpdate()这个方法会在每次更新App Widget的时候调用,数据更新的逻辑都写在这个方法里边.而且要注意的是:在用户添加小部件的时候,会首先调用这个方法,应该在这个方法里进行初始化操作,比 ...

  6. ZOJ 2507 Let's play a game

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1507 MisereNim博弈.代码如下: //=========== ...

  7. JAVA微信公众号通过openid发送模板消息~

    1,问题产生 在微信公众号开发过程中,我们有时候做不同权限的时候,比如在注册的时候,需要审核,然后我们要想办法让对方知道审核的结果.这时候我们可以通过模板消息来通知. 2,第一步,首先在微信公众号上获 ...

  8. SVG制作可爱小页面

    很久都没有在博客园上发表一些自己学的新东西了,只是在有空的时候逛一逛博客园而已,看来我不是一个真正的程序员,哈哈! 但是今天非常想和大家分享一个小东西,那是前两天在一个网页上看到了这个东西 我好奇中间 ...

  9. bond绑定两张物理网卡为一张逻辑网卡

    问题:cnetos7同时接入两个独立网络,但两个网络的IP网段相同时只能路由到一个网络 解决方法:使用bond绑定两张物理网卡为一张逻辑网卡 1.新建文件bond.conf,内容如下 alias bo ...

  10. jq 下拉框获取选中自定义属性值

    // 下拉框发送改变后 获取选择的信息 <div class="form-group"> <label class="col-sm-3 control- ...