语音识别算法原理文档整理(三) - Go语言中文社区

语音识别算法原理文档整理(三)


语音识别系统kaldi

相关原理介绍

Kaldi是一个非常强大的语音识别工具库,主要由Daniel Povey开发和维护。目前支持GMM-HMM、SGMM-HMM、DNN-HMM等多种语音识别的模型的训练和预测。其中DNN-HMM中的神经网络还可以由配置文件自定义,DNN、CNN、TDNN、LSTM以及Bidirectional-LSTM等神经网络结构均可支持。
目前在Github上这个项目依旧非常活跃,可以在
https://github.com/kaldi-asr/kaldi 下载代码,以及在http://kaldi-asr.org/ 查看它的文档

EM算法

EM是一种解决存在隐含变量优化问题的有效方法。其方法是不断地建立 的下界(E步),然后优化下界(M步)。有公式证明了ℓ(θ(t)) ≤ ℓ(θ(t+1)),也就是说极大似然估计单调增加。
推导过程网址:
http://blog.csdn.net/yzheately/article/details/51164441
实例:
在这里插入图片描述
这是一个抛硬币的例子,H表示正面向上,T表示反面向上,参数θ表示正面朝上的概率。硬币有两个,A和B,硬币是有偏的。本次实验总共做了5组,每组随机选一个硬币,连续抛10次。如果知道每次抛的是哪个硬币,那么计算参数θ就非常简单了,如上图所示。
如果不知道每次抛的是哪个硬币呢?那么,我们就需要用EM算法,基本步骤为:
1、给θA和θB一个初始值;
2、(E-step)估计每组实验是硬币A的概率(本组实验是硬币B的概率=1-本组实验是硬币A的概率)。分别计算每组实验中,选择A硬币且正面朝上次数的期望值,选择B硬币且正面朝上次数的期望值;
3、(M-step)利用第三步求得的期望值重新计算θA和θB;
4、当迭代到一定次数,或者算法收敛到一定精度,结束算法,否则,回到第2步。

在这里插入图片描述
稍微解释一下上图的计算过程。初始值θA=0.6,θB=0.5。
图中的0.45是怎么得来的呢?由两个硬币的初始值0.6和0.5,容易得出投掷出5正5反的概率是
pA=C(10,5)(0.65)*(0.45),
pB=C(10,5)
(0.55)*(0.55), pA/(pA+pB)=0.449, 0.45就是0.449近似而来的,表示第一组实验选择的硬币是A的概率为0.45。图中的2.2H,2.2T是怎么得来的呢? 0.449 * 5H = 2.2H ,0.449 * 5T = 2.2T ,表示第一组实验选择A硬币且正面朝上次数的期望值是2.2,0.55 * 5H = 2.8H ,0.55 * 5T = 2.8T 。

pA=C(10,9)(0.65)*(0.45),
pB=C(10,9)
(0.55)*(0.55)
pA/(pA+pB)=0.8
0.8 * 9H = 7.2H ,0.8 * 2T = 0.8T

其他的值依次类推。
参考网址:http://blog.csdn.net/u011300443/article/details/46763743

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/bvngh3247/article/details/80778261
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-01 20:46:54
  • 阅读 ( 1864 )
  • 分类:算法

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢