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

转自: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

时间: 2024-10-20 06:36:16

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

Ambari系列(四):基于Ambari做二次开发(DIY)

前言 Ambari能够搭建.管理Hadoop集群,这是一件很酷的事情,让集群管理变的easy,但是有可能也有自己的一些需求,如果我想基于Ambari做二次开发DIY,修改一下界面,增加一些功能,添加一个模块等等,这些都是没问题,首先Ambari是基于ASF协议,其次,开发也很方便,唯一不足的是官网基于此的开发文档不多. 我主要介绍下,怎么基于Ambari做二次开发,搭建开发环境,最后编译部署打包. 开发环境搭建 在windows下安装nodejs python的编译运行环境比较复杂,主要是nod

asp.net使用MVC4框架基于NPOI做导出数据到Excel表

NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目. 使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写.NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office的情况下对Word/Excel文档进行读写操作.使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写.NPOI是构建在POI 3.x版本

机器学习四 -- 基于概率论的分类方法:朴素贝叶斯

基于概率的分类方法:朴素贝叶斯 贝叶斯决策理论 朴素贝叶斯是贝叶斯决策理论的一部分,所以在讲解朴素贝叶斯之前我们先快速简单了解一下贝叶斯决策理论知识. 贝叶斯决策理论的核心思想:选择具有最高概率的决策.比如我们毕业选择就业方向,选择C++方向的概率为0.3,选择Java的概率为0.2,选择机器学习的概率为0.5.那么我们就把这样的一位毕业生就业方向归类为机器学习方向. 条件概率 什么是条件概率?事件A在另一个事件B已知发生条件下的发生概率,记为P(A|B),读作“在B条件下A的概率”. 例子1:

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

<OpenCV计算机视觉编程攻略(第3版)>这套书已经出到第3版了,如果你非要我说这本书有多好,我说不出来:只是很多我第一手的例子都是来源于这本书的-相比较OpenCV官方提供的代码,这本书的例子提供了更好的帮助.所以说这里我还将继续这个工作,将来我自己出书的时候这种模式也是可选的.      这里我要做的是第11章,关于3维重建的相关内容.[读书,做例子,多么轻松的学生岁月--] 例子11.2.1 获得图片的角点并且绘制出来. // GOCVHelper.cpp : 定义控制台应用程序的入口

基于bootstrap-treeview做的一个漂亮的无限分类树层级联动菜单

2017年12月11日09:59:15 因为工作需要把原来的bootstrap-treeview做了一些小改动,方便后台开发人员使用 最终效果,看起来还行,但是其实不是特别友好对用户来说,但是对开发者人员来说足够了 "after_html": "<span class=\"button_z\"><button type=\"button\" class=\"btn btn btn-info btn-xs\&q

第四章:基于概率论的分类方法: 朴素贝叶斯

本章内容□使用概率分布进行分类□学习朴素贝叶斯分类器□解析RSS源数据口使用朴素贝叶斯来分析不同地区的态度 前两章我们要求分类器做出艰难决策,给出“该数据实例属于哪一类”这类问题的明确答案.不过,分类器有时会产生错误结果,这时可以要求分类器给出一个最优的类别猜测结果,同时给出这个猜测的概率估计值.       概率论是许多机器学习算法的基础,所以深刻理解这一主题就显得十分重要.第3章在计算特征值取某个值的概率时涉及了一些概率知识,在那里我们先统计特征在数据集中取某个特定值的次数,然后除以数据集的

基于概率论的分类方法:朴素贝叶斯算法实践学习

      关于本文说明,本人原博客地址位于http://blog.csdn.net/qq_37608890,本文来自笔者于2017年12月12日 13:03:46所撰写内容(http://blog.csdn.net/qq_37608890/article/details/78738552).             本文根据最近学习机器学习书籍 网络文章的情况,特将一些学习思路做了归纳整理,详情如下.如有不当之处,请各位大拿多多指点,在此谢过.          通过前两篇文章,我们对于k-近

机器学习实战读书笔记(四)基于概率论的分类方法:朴素贝叶斯

4.1 基于贝叶斯决策理论的分类方法 朴素贝叶斯 优点:在数据较少的情况下仍然有效,可以处理多类别问题 缺点:对于输入数据的准备方式较为敏感 适用数据类型:标称型数据 贝叶斯决策理论的核心思想:选择具有最高概率的决策. 4.2 条件概率 4.3 使用条件概率来分类 4.4 使用朴素贝叶斯进行文档分类 朴素贝叶斯的一般过程: 1.收集数据 2.准备数据 3.分析数据 4.训练算法 5.测试算法 6.使用算法 朴素贝叶斯分类器中的另一个假设是,每个特征同等重要. 4.5 使用Python进行文本分类

02. 基本分类(1):基于决策树的分类

分类技术 主要的分类技术 ? 基于决策树的方法 ? 基于规则的方法 ? 基于实例的方法 ? 贝叶斯信念网络 ? 神经网络 ? 支持向量机 分类的两个主要过程 训练/学习过程 预测/应用过程 决策树归纳 构建决策树的主要算法 - Hunt  (最早的决策树归纳算法之一) - CART  (较为复杂,只适用于小规模数据的拟合) - ID3   (无法处理数值属性,需要将数值属性进行离散化预处理) - C4.5  (ID3的升级版本,基本算法同ID3,可以处理数值属性) - SLIQ,SPRINT(主