在基于GMM-HMM的传统语音识别里,比音素(phone)更小的单位是状态(state)。一般每个音素由三个状态组成,特殊的是静音(SIL)由五个状态组成。这里所说的状态就是指HMM里的隐藏的状态,而每帧数据就是指HMM里的观测值。每个状态可以用一个GMM模型表示(这个GMM模型的参数是通过训练得到的)。在识别时把每帧数据对应的特征值放进每个状态的GMM里算概率,概率最大的那个就是这帧对应的状态。再从状态得到音素(HMM负责),从音素得到词(字典模型负责),从词得到句子(语言模型负责),最终完成识别。可以从一个状态转到另一个状态,即状态之间存在转移(transition)。Transition是kaldi里一个非常重要的概念,相关的有transition-state、transition-index、transition-id等,初一看云里雾里不太好理解,其实它们都是根据topo图(/s5/data/lang/topo)得到的。今天就基于yesno的例子对它们做一个讲解。

先看yesno中的topo图(见下图),它有三个音素:SIL、yes、no (yes和no均作为一个音素处理),id 分别为1、2、3. SIL有5个状态,id为0—4 ,5为结束态。yes/no分别有三个状态,id为0—2 ,3为结束态。

SIL中状态0—3 分别有4条状态转移路径(或者叫转移弧),以状态0为例,可以自环(self-loop)到0,也可以转移到1或者2或者3. 状态4有2条状态转移路径,可以自环(self-loop)到4,也可以转移到结束态5. Yes/no中状态0—1均有2条状态转移路径。所以这个topo图中共有30条(4*4+2(SIL)+ 3*2(yes)+3*2(no)= 30)状态转移路径。

再来看transition中相关的几个概念:

Phone:音素,前文已提过,id是从1开始的整数。在yesno中共三个音素(SIL、yes、no),id分别为1、2、3。

HMM-state:HMM里隐藏的状态。每个音素的HMM-state都是从0开始的整数。在yesno中SIL的HMM-state分别为0、1、2、3、4,yes/no的HMM-state分别为0、1、2。

pdf-id:每个state相对应的GMM概率密度函数(pdf: probability density function)的id,这个值是全局唯一从0开始的整数。pdf-id分为forward-pdf-id和self-loop-pdf-id两种,值一样,即pdf-id = forward-pdf-id = self-loop-pdf-id。在yesno中SIL有5个状态,pdf-id分别为0、1、2、3、4、5,yes有3个状态,pdf-id分别为5、6、7,no有3个状态,pdf-id分别为8、9、10。

transition-state:表示一个转移状态,用(phone,HMM-state,forward-pdf-id , self-loop-pdf-id)表示。这个概念相对抽象些。

transition-index:表示一个状态的转移路径的index,在每个状态内从0开始的整数。在yesno中SIL的状态0有4个转移路径,其transition-index分别为0、1、2、3。其他状态类似。

transition-id: 所有状态转移路径的id,全局唯一从1开始的整数,跟(transition-state, transition-index)一一对应。在yesno中SIL的状态0有4个转移路径,其transition-id分别为1、2、3、4,SIL的状态1有4个转移路径,其transition-id分别为5、6、7、8,SIL的状态2有4个转移路径,其transition-id分别为9、10、11、12,SIL的状态3有4个转移路径,其transition-id分别为13、14、15、16,SIL的状态4有2个转移路径,其transition-id分别为17、18;yes的状态0有2个转移路径,其transition-id分别为19、20,yes的状态1有2个转移路径,其transition-id分别为21、22,yes的状态2有2个转移路径,其transition-id分别为23、24;no的状态0有2个转移路径,其transition-id分别为25、26,no的状态1有2个转移路径,其transition-id分别为27、28,no的状20有2个转移路径,其transition-id分别为29、30,所以yesno中transition-id范围是1—30.

下表列出了yesno中这些变量的具体值,它们会被存起来,有一一对应的关系,知道一个值后就可以知道相对应的其他值。比如常用的通过transition-id得到pdf-id。

以上通过对例子yesno的讲解就可以很好的理解跟transition相关的概念了。

以kaldi中的yesno为例谈谈transition的更多相关文章

  1. [转] kaldi中FST的可视化-以yesno为例

    http://blog.csdn.net/u013677156/article/details/77893661 1.kaldi解码过程 kaldi识别解码一段语音的过程是:首先提取特征,然后过声学模 ...

  2. [WPF自定义控件库]以Button为例谈谈如何模仿Aero2主题

    1. 为什么选择Aero2 除了以外观为卖点的控件库,WPF的控件库都默认使用"素颜"的外观,然后再提供一些主题包.这样做的最大好处是可以和原生控件或其它控件库兼容,而且对于大部分 ...

  3. kaldi中CD-DNN-HMM网络参数更新公式手写推导

    在基于DNN-HMM的语音识别中,DNN的作用跟GMM是一样的,即它是取代GMM的,具体作用是算特征值对每个三音素状态的概率,算出来哪个最大这个特征值就对应哪个状态.只不过以前是用GMM算的,现在用D ...

  4. 最简单的可取消多选效果(以从水果篮中挑选水果为例)【jsDEMO】

    [功能说明] 最简单的可取消多选效果(以从水果篮中挑选水果为例) [html代码说明] <div class="box" id="box"> < ...

  5. OC中两种单例实现方式

    OC中两种单例实现方式 写在前面 前两天探索了一下C++ 的单例,领悟深刻了许多.今天来看看OC中的单例又是怎么回事.查看相关资料,发现在OC中一般有两种实现单例的方式,一种方式是跟C++ 中类似的常 ...

  6. sharepoint中的YesNo字段

    sharepoint中的YesNo字段实际上是一个Boolean字段,性格有点特别,如果IsShow是一个YesNo字段,使用caml查询的时候值为”1“(Yes)”0“(No),Item[IsSho ...

  7. [转]决策树在Kaldi中如何使用

    转自:http://blog.csdn.net/chenhoujiangsir/article/details/51613144 说明:本文是kaldi主页相关内容的翻译(http://kaldi-a ...

  8. UML和模式应用4:初始阶段(6)--迭代方法中如何使用用例

    1.前言 用例是UP和其他众多迭代方法的核心.UP提倡用例驱动开发. 2. 迭代方法中如何使用用例 功能需求首先定义在用例中 用例是迭代计划的重要部分,迭代是通过选择一些用例场景或整个用例来定义的 用 ...

  9. SQL SEVER 2008中的演示样例数据库

    SQL SEVER 2008数据库是什么我就不说了,我在这里分享一下怎样学习SQL SEVER 2008数据库,假设是对数据库或是SQL SEVER 数据库全然陌生或是不熟悉的人来说,建议看看一些视频 ...

随机推荐

  1. 9.秋招复习简单整理之Spring面试AOP和IOC的理解

    1.Spring的AOP理解: OOP面向对象,允许开发者定义纵向的关系,但不适用于定义横向的关系,导致了大量代码的重复,而不利于各个模块的重用. AOP,一般称为面向切面,作为面向对象的一种补充,用 ...

  2. mysql+mybatis存储超大json

    1. 场景描述 因前端界面需存储元素较多,切割后再组装存储的话比较麻烦,就采用大对象直接存储到mysql字段中,根据mysql的介绍可以存放65535个字节,算了算差不多,后来存的时候发现: 一是基本 ...

  3. 【NOIP2018】标题统计-C++

    描述 凯凯刚写了一篇美妙的作文,请问这篇作文的标题中有多少个字符? 注意:标题中可能包含大.小写英文字母.数字字符.空格和换行符.统计标题字符数时,空格和换行符不计算在内. 输入 输入文件名为 tit ...

  4. 【bfs】单向公路-C++

    描述 某地区有许多城镇,但并不是每个城镇都跟其他城镇有公路连接,并且有的公路并不能双向行驶.现在我们把这些城镇间的公路分布及允许的行驶方向告诉你,你需要编程解决通过公路是否可以从一个城镇到达另一个城镇 ...

  5. golang开发:类库篇(四)配置文件解析器goconfig的使用

    为什么要使用goconfig解析配置文件 目前各语言框架对配置文件书写基本都差不多,基本都是首先配置一些基础变量,基本变量里面有环境的配置,然后通过环境变量去获取该环境下的变量.例如,生产环境跟测试环 ...

  6. 浅谈MQTT

    一.什么是MQTT MQTT的全称是“ Message Queuing Telemetry Transport”,即消息队列遥测传输,是一种基于订阅/发布模式的应用层协议,而http是一种基于rest ...

  7. python函数知识四 迭代器、生成器

    15.迭代器:工具 1.可迭代对象: ​ 官方声明,只要具有__iter__方法的就是可迭代对象 list,dict,str,set,tuple -- 可迭代对象,使用灵活 #方法一: list.__ ...

  8. vim /home/yuanyc/.bashrc export LC_ALL=zh_CN.UTF-8

    vim /home/yuanyc/.bashrc export LC_ALL=zh_CN.UTF-8

  9. Baozi Leetcode solution 1036: Escape a Large Maze

    Problem Statement In a 1 million by 1 million grid, the coordinates of each grid square are (x, y) w ...

  10. 吐槽下Excel的十大不规范使用问题

    Excel是个老少咸宜的软件工具,这是不争的事实,无论哪个级别的用户,都能在乐在其中.但问题是太多的人群因为不懂得正确的使用姿势,硬生生地把Excel玩得让人啼笑皆非,同样留给接手者一个难堪无比的烂摊 ...