• [转]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

  • 相关阅读:
    mysql,windows自动备份设置
    彻底搞清楚javascript中的require、import和export
    Spring Boot 打包报错Failed to execute goal org.apache.maven.plugins:mavenresourcesplugin:3.2.0
    Spring AOP 切点切面
    12.5M 30M 90M DEM免费下载!【转】
    JS 中的数组遍历方式效率比较[转]
    cesium加载CAD模型(.dwg)
    Cesium发布下一代3D Tiles规范预览
    cesium点击面高亮事件[转]
    MySQL 5.7及8.0版本数据库的root密码遗忘的解决办法
  • 原文地址:https://www.cnblogs.com/welen/p/7567371.html
Copyright © 2020-2023  润新知