在基于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. cocopods新建或者更新远端库主要操作步骤

    1.搭建远程仓库(私有或者公有项目): 2.使用sourceTree拉去远程仓库: 3.打开拉去的项目仓库Finder,构建pod lib项目:pod lib create AFNetworking( ...

  2. Spring Cloud 之 Hystrix.

    一.概述  在微服务架构中,我们将系统拆分成了很多服务单元,各单元的应用间通过服务注册与订阅的方式互相依赖.由于每个单元都在不同的进程中运行,依赖通过远程调用的方式执行,这样就有可能因为网络原因或是依 ...

  3. 華氏溫度轉化為攝氏溫度的簡單JavaScript代碼

    今天,跟著W3School學到了"JavaScript函數",代碼都挺簡單的,在運算符調用函數的地方寫了一個小程序.原碼程序是這樣的: <!DOCTYPE html> ...

  4. 简单学习之json格式说明

    json格式说明: 1.对象是一个无序的“‘名称/值’对”集合. (1)一个对象以“{”(左括号)开始,“}”(右括号)结束. (2)每个“名称”后跟一个“:”(冒号): (3)“‘名称/值’ 对”之 ...

  5. 剑指offer第二版-6.从尾到头打印链表

    描述:输入一个链表的头节点,从尾到头打印每个节点的值. 思路:从尾到头打印,即为“先进后出”,则可以使用栈来处理:考虑递归的本质也是一个栈结构,可递归输出. 考点:对链表.栈.递归的理解. packa ...

  6. Bzoj 2839 集合计数 题解

    2839: 集合计数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 495  Solved: 271[Submit][Status][Discuss] ...

  7. android布局几点随想

    1. 正式布局界面时,先在纸上画出整个布局,并考虑用什么布局比较适合: 2. 布局界面先做出框架,并用不同的背景颜色标记出来,确保大的布局框架式正确的: 3. 接着在每个大的布局框架内布局小的布局: ...

  8. MyBatis从入门到精通:第一章数据库创建文件

    /*创建数据库mybatis,并指定编码方式为utf8,字符比较规则为utf8_general_ci*/ CREATE DATABASE mybatis DEFAULT CHARACTER SET u ...

  9. 说说WPF的依赖属性

    首先,我们先来大概了解一下依赖属性 什么是依赖属性:依赖属性自己没有值,通过依赖别人(如Binding)来获得值. 依赖属性为什么会出现:控件常用字段有限,包装太多属性会占用过高内存,造成浪费.所以用 ...

  10. Scrum 使用絮叨

    关于Scrum 的一些絮叨 Scrum 的推行的基础在于全员参与,全员协作,包含Dev, QA(quality assurance) ,BA(Business analyst)以及Supporter ...