一、上下文对音素发音的语谱轨迹的影响

受到上下文的影响,同一个音素的发音语谱轨迹不同

为提高识别准确率,对音素建模时应将这种上下文影响考虑在内

二、基于上下文相关的音素建模

注意,非单音素建模中,每个模型依旧代表一个音素,只是考虑了这个音素的上下文关系而已

(一)双音素diphones

考虑上个音素/下个音素对当前音素的影响

对于ROCK:

两个??分别取决于ROCK的前一个单词的最后一个音素和后一个单词的第一个音素

灰色的边界单元为邻近单词所共享

为语法/词序列中观察到的前后音素的每个组合构建单独的基于双音素的单词模型,

因此,同一个单词对应的单词模型常有多个

有时,根据语法,同一个单词的不同模型的部分可以重叠

由于边界单元为邻近单词所共享,所以不再具有明确识别出的单词级HMM

无法区分哪些双音素是词内,哪些是跨词---单词边界不明确

因此可区分对待词内双音素与跨词双音素---共2xNxN个模型(N为单音素个数)

分别用词内训练数据和跨词训练数据进行训练

(二)三音素triphones

考虑上个音素和下个音素对当前音素的影响

与双音素不同,不存在跨词共享的边界单元

与双音素相同,??与前一个单词和后一个单词相关,同一个单词常对应多个单词模型

有时,根据语法,出现部分重叠

三音素的情况变得更为复杂:

模型数更多,搜索更慢

基于单音素

基于三音素

填料音:背景噪音等,有声填料音:"UM","UH"等

三音素类型:

词内三音素

词首跨词三音素

词尾跨词三音素

单词只有单音素的三音素

(三)多音素nphones

(四)单词vs单音素vs双音素vs三音素vs多音素

1、单词

词汇量大时,为每一个单词建模,导致模型的数量很大,模型很难训练

无法识别训练数据中未出现过的单词---这样的单词实际很多(Zipf定律)

2、单音素

3、双音素

4、三音素---最常用,可通过参数共享控制模型复杂度

三音素数量分布非常接近Zipf定律轨迹

5、多音素

Nphone:

随着N的增大,多音素数量分布轨迹越来越接近Zipf定律,

当N大于3时,相对于收益的增加程度,代价的花费更大,

因此,常使用三音素

三、基于上下文相关的声学模型训练

上下文相关的GMM-HMM声学模型的更多相关文章

  1. 04(1) 基于上下文相关的GMM-HMM声学模型1

    1.上下文对音素发音的语谱轨迹的影响 受到上下文的影响,同一个音素的发音语谱轨迹不同 为提高识别准确率,对音素建模时应将这种上下文影响考虑在内 2.基于上下文相关的音素建模 注意,非单音素建模中,每个 ...

  2. 04(2) 基于上下文相关的GMM-HMM声学模型2之参数共享

    1.三音素建模存在的问题 问题一:很多三音素在训练数据中没有出现(尤其跨词三音素) 问题二:在训练数据中出现过的三音素有相当一部分出现的频次较少 因此,三音素模型训练时存在较严重的数据不足问题 2.参 ...

  3. 上下文相关的GMM-HMM声学模型续:参数共享

    一.三音素建模存在的问题 问题一:很多三音素在训练数据中没有出现(尤其跨词三音素) 问题二:在训练数据中出现过的三音素有相当一部分出现的频次较少 因此,三音素模型训练时存在较严重的数据不足问题 二.参 ...

  4. [源码解析] PyTorch 分布式 Autograd (3) ---- 上下文相关

    [源码解析] PyTorch 分布式 Autograd (3) ---- 上下文相关 0x00 摘要 我们已经知道 dist.autograd 如何发送和接受消息,本文再来看看如何其他支撑部分,就是如 ...

  5. 语音识别传统方法(GMM+HMM+NGRAM)概述

    春节后到现在近两个月了,没有更新博客,主要是因为工作的关注点正从传统语音(语音通信)转向智能语音(语音识别).部门起了个新项目,要用到语音识别(准备基于Kaldi来做).我们之前做的传统音频已基本成熟 ...

  6. kaldi基于GMM的单音素模型 训练部分

    目录 1. gmm-init-mono 模型初始化 2. compile-train-graghs 训练图初始化 3. align-equal-compiled 特征文件均匀分割 4. gmm-acc ...

  7. HMM拓扑与转移模型

        <Topology> <TopologyEntry> <ForPhones> 1 2 3 4 5 6 7 8 </ForPhones> < ...

  8. JavaScript的执行上下文

    在JavaScript的运行过程中,经常会遇到一些"奇怪"的行为,不理解为什么JavaScript会这么工作. 这时候可能就需要了解一下JavaScript执行过程中的相关内容了. ...

  9. Execution Contexts (执行上下文)

    本章我们一起讨论一下ECMAScript的执行上下文及相关可执行代码的各种类型.so...什么是执行上下文?我们来看看定义: 每次当控制器转到ECMAScript可执行代码的时候, 即会进入到一个执行 ...

随机推荐

  1. kbmmw 与extjs 通过JSON Base64 显示图片

    delphi 官网上开始也来越多的介绍delphi与extjs 结合的例子,今天我就把官方的例子翻版一下. 官方使用C++builder 和webbroker 实现. 我使用kbmmw 来实现一下. ...

  2. NOIP 2017 d2t2 70points

    革命之路漫漫 第一次尝试 40points spfa #include <bits/stdc++.h> #define read read() using namespace std; i ...

  3. python中的函数嵌套

    一.函数嵌套 1.只要遇到了()就是函数的调用.如果没有就不是函数的调用 2.函数的执行顺序 遵循空间作用域,遇到调用才执行 def outer(): def inner(): print(" ...

  4. idea运行项目时报Error:java无效的源发行版:1.8

    如果你安装的是JDK1.7,而在file->project structure中设置的是language level是8的话,就会出现这个错误提示:无效的源发行版:8. 解决办法:将语言级别改为 ...

  5. jQuery动态控制下拉列表的被选项[转]

    <form id="form" action="/query!query.action"> <select> <option va ...

  6. 走进JDK(一)------Object

    阅读JDK源码也是一件非常重要的事情,尤其是使用频率最高的一些类,通过源码可以清晰的清楚其内部机制. 如何阅读jdk源码(基于java8)? 首先找到本地电脑中的jdk安装路径,例如我的就是E:\jd ...

  7. Excel2007VBA数组和工作表及单元格的引用

    动态数组使用: https://zhidao.baidu.com/question/1432222709706721499.html 使用Redim动态数组即可. 1 2 3 4 5 6 7 8 Su ...

  8. Oracle数据库使用mybatis的时候,实体类日期为Date类型,mybatis里面定义的是Date类型,插入的时候,时分秒全部是12:00:00问题

    实体类中日期定义的是Date类型的,没毛病: 我在mybatis里面定义的是Date类型的,进行测试的时候发现,数据库插入的日期的时分秒全部都是一样的,都是12:00:00,很郁闷: 后来把mybat ...

  9. IntelliJ IDEA 2017版 spring-boot2.0.2 自动配置Condition

    描述: 编译器修改参数      -Dfile.encoding=GBK     -Dstr.encoding=GBK Condition位置: 某一个类或注解存在的时候,装配,否则不装配 相关代码: ...

  10. 【设计模式】Javascript设计模式——状态模式(行为型)

    注:这个模式是非常聪明的,很有点数学中组合的意思,现在,来看下这个模式是怎么个思想. 问题提出:假如某个操作有三种可能,分别为1,2,3,还可能是组合,比如先执行1,再执行2或者先执行2再执行3或者1 ...