一、语音识别基本介绍

(一)统计语音识别的基本等式

X------声学特征向量序列,观测值

W------单词序列

W*------给定观测值下,概率最大的单词序列

应用贝叶斯理论等价于

进而得出统计语音识别的框架

(二)统计语音识别的框架

运用声学模型、语言模型、词典得出给定观测值下概率最大的单词序列

(三)评价指标

运用单词错误率评价语音识别的好坏

单词错误率=(替换错+删除错+插入错)/单词总数

识别准确率=1-单词错误率

二、基于HMM的孤立词识别

(一)整体流程

假设所有单词出现的先验概率相同

训练阶段:

为每个单词收集训练记录集合

为每个单词的每条训练记录计算特征向量序列,形成HMM的观测序列集合

为每个单词训练HMM模型

识别阶段:

为测试记录计算特征向量序列

应用前向算法/维特比近似,根据每一个单词的HMM模型计算该特征向量序列的概率

选出概率最大的HMM模型对应的单词

(二)细节问题

1、HMM拓扑结构

对于SR,

the Bakis topology

states may be skipped

2、状态数

常3到5个

3、高斯分量数

通常不少于4个

4、状态输出密度函数的参数的初始化

开始时,假设每个状态对应于一个单高斯(后会通过高斯分裂获得GMM),

对于Bakis拓扑结构的HMM,一个很好的初始化方式是"flat"初始化:

计算每个单词的训练记录的所有特征向量的均值及协方差,

用这个均值和协方差初始化这个单词所有状态对应的高斯,

通过迭代进行参数更新至收敛;

*高斯分裂计算GMM,

通过迭代进行参数更新至收敛,

若未达到需要的高斯分量数,转至*.

三、基于HMM的连续词识别

(一)non-emitting states/null states

单词的最后一个状态只能自转,无法转移到下一个单词

为简化连接,引入non-emitting states/null states无发射状态概念

无发射状态不生成观测值---无需对其状态输出分布进行高斯建模

无发射状态不允许自转

(二)包含无发射状态的HMM

不允许在词内转入或转出无发射状态

在时刻t转入无发射状态的概率等于该词的观测序列在时刻t结束的概率

(三)用无发射状态连接词级HMM

离开词1的概率等于进入词2的概率

一些情况下,会保留无发射状态作为连接单词的状态

这时,从这个无发射状态进入词2的概率为1.0---唯一被允许的转出概率

(四)带有无发射状态的HMM的3个问题

1、前向后向概率的计算

前向概率:

任何时刻的任何状态的前向概率收到了前一时刻的发射状态和当前时刻的无发射状态的贡献

注:

无发射状态没有时间的概念,因为没有观测值与其对齐

为了计算简便,这儿将无发射状态与当前时刻相联系

后向概率:

2、维特比解码

无发射状态影响了维特比解码,

这在词序列的实际识别算法中至关重要

3、参数估计

Sijk---第j个单词HMM的第k个状态的第i个实例

(五)词间停顿

silence

optional silence

(六)剪枝

为降低计算复杂度

前向剪枝

后向剪枝

四、子词单元

(一)基于单词建模的识别

需要为每个要识别的单词训练模型---不灵活,单词量大时,参数量巨大

只能为能获得训练数据的单词来训练模型---无法识别声学模型训练数据中未出现过的单词

Zipf定律:在自然语言的语料库里,一个单词出现的次数与它在频率表里的排名成反比。

因此,常见的单词的数量少,少见的单词的数量多---少见词更重要,常携带的信息更多

(二)最常见的子词单元---音素

相较于单词来说,稀有音素数量少得多,保证了所有音素模型都能有足够的数据用于训练

只要知道其发音,可以为未在声学模型训练数据中出现过的单词进行建模

每个模型的平均训练数据量:

词级<音素级

随着训练数据和词汇量的增加,音素级会比词级大得越来越多

(三)音素集的选择

经验:

除单音外,若复合音频繁出现且可以从单音平滑过渡到另一个单音,可将其认为是一个子词单元

常diphthongs双连音,triphthongs三连音

(四)基于音素的识别

音素的使用只是为了更好地训练模型,识别仍然使用的是单词

单词建模由子词建模组成,单个单词的HMM建模连接起来形成词序列/语法HMM

单词多发音问题

最好使一个单词的备用发音尽可能地少,不要包含非常稀有的发音,它们只会引发困惑

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

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

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

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

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

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

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

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

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

  5. 理解和使用NT驱动程序的执行上下文

    理解Windows NT驱动程序最重要的概念之一就是驱动程序运行时所处的“执行上下文”.理解并小心地应用这个概念可以帮助你构建更快.更高效的驱动程序. NT标准内核模式驱动程序编程的一个重要观念是某个 ...

  6. HMM模型学习笔记(维特比算法)

    维特比算法(Viterbi) 维特比算法  编辑 维特比算法是一种动态规划算法用于寻找最有可能产生观测事件序列的-维特比路径-隐含状态序列,特别是在马尔可夫信息源上下文和隐马尔可夫模型中.术语“维特比 ...

  7. ABP Framework:移除 EF Core Migrations 项目,统一数据上下文

    原文:Unifying DbContexts for EF Core / Removing the EF Core Migrations Project 目录 导读:软件开发的一切都需要平衡 动机 警 ...

  8. Kaldi阅读并更改代码

    Common utilities base/kaldi-common.h 几乎所有Kaldi程序都会include该头文件. 该头文件include了一些其他位于base/目录的头文件,主要提供: 错 ...

  9. Kaldi的BaseLine训练过程

    steps/train_mono.sh --nj "$train_nj" --cmd "$train_cmd" data/train data/lang exp ...

随机推荐

  1. Codeforces Round #437 E. Buy Low Sell High

    题意:买卖股票,给你n个数,你可以选择买进或者卖出或者什么都不做,问你最后获得的最大收益是多少. Examples Input 910 5 4 7 9 12 6 2 10 Output 20 Inpu ...

  2. HDU-1260.Tickets(简单线性DP)

    本题大意:排队排票,每个人只能自己单独购买或者和后面的人一起购买,给出k个人单独购买和合买所花费的时间,让你计算出k个人总共花费的时间,然后再稍作处理就可得到答案,具体格式看题意. 本题思路:简单dp ...

  3. FortiGate路由模式--静态地址线路上网配置

    1.需求:外网接口使用专线,由运营商分配指定的静态地址,内网为192.168.1.0/24网段,实现基本上网功能. 运营商分配ip地址:202.1.1.10,网关地址:202.1.1.9, DNS:2 ...

  4. android studio Error:Execution failed for task ':app:processDebugResources'. > com.android.ide.common.process.ProcessException: Failed to execute aapt

    情况很奇怪 我是更新版本; 问题解决: clean project; 可能是编辑器有地方存有配置数据;

  5. NC nc开发工具java虚拟机参数

        -Dnc.exclude.modules=${FIELD_EX_MODULES} -Dnc.runMode=develop -Dnc.server.location=${FIELD_NC_HO ...

  6. unable to bind listening socket for address '127.0.0.1:9090': Address already in use (98)

    unable to bind listening socket for address '127.0.0.1:9090': Address already in use (98) php-fpm 启动 ...

  7. 服务器被minerd

    cd /opt chmod -x minerd 去/root/.ssh 目录下,清除authorized_keys,KHK75NEOiq 文件 在ssh的配置文件/etc/ssh/sshd_confi ...

  8. 利用python itchat给女朋友定时发信息

    利用itchat给女朋友定时发信息 涉及到的技术有itchat,redis,mysql,最主要的还是mysql咯,当然咯,这么多东西,我就只介绍我代码需要用到的,其他的,如果需要了解的话,就需要看参考 ...

  9. The Python Challenge 0-4

    The Python Challenge 0-4 项目地址:http://www.pythonchallenge.com/ Level-0 提示Hint: try to change the URL ...

  10. elasticsearch搜索引擎环境的搭建

    elasticsearch 搜索引擎 解决了什么问题:在我们数据量很大时,我们使用模糊查询会使索引列的索引消失,这样使用elasticsearch来提高查询效率. 存在什么问题:有时我们查询的词,el ...