1. 前置知识:

    1. 语音识别:

      1. 系统主要有四部分组成:信号处理和特征提取、声学模型、语言模型(Language Model, LM)和解码器(Decoder)。
      2. 信号处理和特征提取部分以音频信号为输入,通过消除噪音、信道失真等对语音进行增强,将语音信号从时域转化到频域,并为后面的声学模型提取合适的特征。
      3. 声学模型将声学和发音学的知识进行整合,以特征提取模块提取的特征为输入,生成声学模型得分。
      4. 语言模型估计通过重训练语料学习词之间的相互概率,来估计假设词序列的可能性,也即语言模型得分。
      5. 解码器对给定的特征向量序列和若干假设词序列计算声学模型得分和语言模型得分,将总体输出分数最高的词序列作为识别结果。
    2. 声学模型部分需要解决的问题:
      1. 特征向量序列的可变长:在学术上通常有动态时间规划(DTW)和隐马尔科夫(HMM)方法来解决。
      2. 音频信号的丰富变化性:是由说话人的各种复杂特性或者说话风格与语速、环境噪声、信道干扰、方言差异等因素引起的。
      3. 声学模型需要足够的鲁棒性来处理以上的情况。
    3. 语音识别系统整体流程:

    4. 语音识别原理:
  2. 声学模型的任务就是描述语音的物理变化规律,而语言模型则表达了自然语言包含的语言学知识。
  3. 语音帧:
    1. 考虑到语音的短时平稳特性,语音信号在前端信号处理时要进行加窗分帧的操作,识别特征都按帧来提取。
    2. 语音帧的划分:注意是有重叠部分的

  4. 分帧后的语音信号逐帧提取语音特征用于声学模型建模。
  5. 传统的特征类型包括mfcc和fbank等,提取好的特征送至解码器,在声学模型、语言模型以及发音词典的共同指导下,找到最为匹配的词序列作为识别结果输出
  6. 声学模型主要描述发音模型下特征的似然概率;语言模型主要描述词间的连接概率;发音词典主要是完成词和音之间的转换,其中声学模型建模单元一般选择三音素模型
  7. 声学建模演进总结:
    1. 深度神经网络超强的特征学习能力大大简化了特征抽取的过程,降低了建模对于专家经验的依赖,因此建模流程逐步从之前复杂多步的流程转向了简单的端到端的建模流程,
    2. 由此带来的影响是建模单元逐步从状态、三音素模型向音节、字等较大单元演进
    3. 模型结构从经典的GMM-HMM向DNN+CTC(DNN泛指深度神经网络)转变,演进的中间态是DNN-HMM的混合模型结构。
  8. 传统的声学模型:GMM-HMM:
    1. 隐马尔可夫模型:

      1. 隐马尔可夫模型的参数通过Baum-Welch算法(在HMM上EM算法的推广)进行估计。(Baum-Welch算法:如果样本数据没有标签,则训练数据只包含观测序列O,但对应的状态I未知,则此时的隐马尔科夫模型是一个含有隐变量的概率模型)
      2. 隐马尔科夫模型主要有三部分组成:
        1. 每个状态的观察概率分布,采用GMM模型来描述状态的观察概率分布。
        2. 马尔可夫链的初始概率
        3. 转移概率矩阵:描述马尔可夫链状态间的跳转概率
        4. 隐马尔可夫模型能够描述语音信号中不平稳但有规律可学习的空间变量。具体的来说,隐马尔可夫模型具有顺序排列的马尔可夫状态,使得模型能够分段的处理短时平稳的语音特征,并以此来逼近全局非平稳的语音特征序列。
        5. 在马尔科夫链的基础上进行了扩展,用一个观测的概率分布于马尔可夫链上的每个状态进行对应,引入双重随机性,使得马尔可夫链不能被直接观察,故称为隐马尔可夫模型。
      3. HMM建模框架:

    2. GMM模型只要混合的高斯分布数目足够多,GMM可以拟合任意精度的概率分布。
    3. 补充EM算法:EM的基本思想是先将参数的初设估计值加入到似然函数中,然后对似然函数进行极大化(一般是求导,令其等于0),得到新的参数估计值,一直重复,直到收敛。
    4. 流程:
      1. 得到混合高斯模型的形式后,使用最大期望值算法EM估计GMM的一系列参数(可以使其在训练数据上生成语音观察特征的概率最大化)
      2. HMM模型对时序信息进行建模,在给定HMM的一个状态后,GMM对属于该状态的语音特征向量的概率分布进行建模。
  9. 加入深度学习模型:

    1. CD-DNN-HMM:

      1. DNN模型展现出了明显超越GMM模型的性能,替代了GMM进行HMM状态建模。

      2. 为了获得更好的性能提升,引入了上下文信息(也即前后特征帧信息),所以被称为CD-DNN-HMM(Context-Dependent DNN-HMM)模型。

      3. DNN模型是有一个有很多隐层的多层感知机

      4. 在语音识别上应用的DNN模型一般采用softmax将模型输出向量进行归一化

      5. 相比于GMM模型,DNN模型具有一些明显的优势:

        1. DNN是一种判别模型,自身便带有区分性,可以更好区分标注类别;

        2. DNN在大数据上有非常优异的表现,伴随着数据量的不断增加,GMM模型在2000小时左右便会出现性能的饱和,而DNN模型在数据量增加到1万小时以上时还能有性能的提升;

        3. DNN模型有更强的对环境噪声的鲁棒性,通过加噪训练等方式,DNN模型在复杂环境下的识别性能甚至可以超过使用语音增强算法处理的GMM模型。

        4. DNN-HMM建模框架中,输入特征使用了在当前帧左右拼帧的方式来实现模型对时序信号长时相关性的建模,模型输出则保持了GMM-HMM经常使用的trihone共享状态(senone)

      6. DNN-HMM混合建模框架:

    2. 语音的协同发音现象说明声学模型需要考虑到语音帧之间的长时相关性,尽管上文中DNN-HMM通过拼帧的方式对上下文信息进行了建模,但是毕竟拼接的帧数有限,建模能力不强,因此引入了RNN(循环神经网络)增强了长时建模的能力,RNN隐层的输入除了接收前一个隐层的输出之外,还接收前一时刻的隐层输出作为当前输入,通过RNN的隐层的循环反馈,保留了长时的历史信息,大大增强了模型的记忆能力,语音的时序特性通过RNN也得到了很好的描述。但是RNN的简单结构在模型训练进行BPTT(Backpropagation Through Time)时很容易引起梯度消失/爆炸等问题,因此在RNN的基础上引入了LSTM(长短时记忆模型),LSTM是一种特殊的RNN,通过Cell以及三个门控神经元的特殊结构对长时信息进行建模,解决了RNN出现的梯度问题,实践也证明了LSTM的长时建模能力优于普通RNN。
    3. 上述的建模技术在模型训练时需要满足一个条件,就是训练数据中每一帧都要预先确定对应的标注,即对应DNN输出状态的序号,训练特征序列和标注特征序列必须是等长的,而为了得到标注,需要使用已有模型对训练数据序列和标注序列进行强制对齐,但是基于大数据训练时标注的准备比较耗费时间,同时对齐使用的模型精度往往存在偏差,训练中使用的标注会存在错误。
    4. 因此引入了CTC(Connectionist Temporal Classification)准则:解决了标注序列与特征序列不等长的问题,通过前向后向算法自动学习语音特征中的模型边界,这种准则与用于时序建模的神经网络(如LSTM)的结合可以直接用于端到端的模型建模CTC准则引入了blank类别,用于吸收发音单元内部的混淆性,更加突出模型与其他模型之间的差异性,因此CTC具有非常明显的尖峰效果
    5. FFDNN建模流程:

  10. 高效地使用数据:数据筛选层面:使用无监督、弱监督、半监督的数据进行训练,同时更高效的挑选数据进行标注,知音引擎已经在使用主动学习的方法进行数据的筛选。

声学模型(语音识别中的)--学习笔记相关推荐

  1. mysql中depart_mysql 学习笔记

    1)net stop mysql net start mysql 2)c:\mysql\bin\mysqladmin flush-privileges      3)登陆mysql后,用flush p ...

  2. java中线程总结_java中多线程学习笔记总结

    线程的简单学习笔记: 1.进程与线程的概念 进程:从用户角度看进程是应用程序的一个执行过程. 从操作系统核心角度看进程代表的是操作系统分配的内存和CPU时间片等资源的基本单位,是为正在运行的程序提供的 ...

  3. OpenDaylight中MD-SAL学习笔记

    1 前言 在学习OpenDaylight的过程中,总是遇到AD-SAL( API-Driven SAL)和MD-SAL(Model-Driven SAL)等概念.在努力查找资料学习之后,有了一点学习笔 ...

  4. vs2013配置python_VS2013中Python学习笔记[环境搭建]

    前言 Python是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色 ...

  5. Android中ActivityManager学习笔记

    在之前写过2篇关于ActivityManager的文章,如下所示.都是通过实战去了解里面的信息,现在感觉太繁琐,所以做一个api介绍比较详细.就像之前学习Telephony那样,对整体了解整个Acti ...

  6. 阿龙的学习笔记---哈希表与C++11中unordered_map学习笔记

       散列表(Hash table,也叫哈希表),是根据 关键码值(Key value) 而直接进行访问的数据结构.也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度.这个映射函 ...

  7. python中isleap_Python学习笔记(十三)系统

    使用计算机时,经常需要列出一个文件夹或者目录的内容,创建和删除文件等操作,在 Python 程序中可以做到同样的事, 甚至能做更多的事.Python 在模块 os(操作系统,operating sys ...

  8. JavaScript中正则表达式学习笔记

    一.正则表达式是什么: 处理字符串时,经常需要处理复杂规则的字符串.正则表达式就是用于描述这些规则的工具.换句话说,就是记录文本规则的代码. 二.正则表达式能做什么: 数据有效性验证(测试字符串匹配) ...

  9. python中head_python学习笔记[headfirst]

    1内置函数 (BIF) python中有很多内置函数,再遇到一个需求时候,优先考虑内置函数.内置函数使用的时候不需要导入命名空间 range():生成一个从0到某个数的数字列表 2从文件读取数据 2. ...

  10. python怎么写入到文件中_Python学习笔记之将数据写入到文件中

    原博文 2019-10-29 16:04 − 10-3 访客:编写一个程序,提示用户输入其名字:用户作出响应后,将其名字写入到文件guest.txt 中. 编写Python代码: 1 username ...

最新文章

  1. Tensorflow 全网最全学习资料汇总之框架平台的综合对比【3】
  2. 科大星云诗社动态20220115
  3. Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍
  4. oracle获取登录名,oracle如何获取当前登录的用户名
  5. 树结构-------前缀树
  6. 【Latex】数学公式排版
  7. 【数字信号调制】基于matlab GUI AM+FM+DSB+SSB调制解调【含Matlab源码 1212期】
  8. 三次样条曲线拟合算法c语言,关于三次样条曲线拟合法
  9. sd卡卡槽_一种SD卡卡槽的制作方法
  10. 君不密则失臣,臣不密则失身,机事不密则害成
  11. 可在手机浏览器下载文件的方法
  12. 小程序获取用户头像大图 小程序获取用户头像模糊的问题 小程序自定义转发头像模糊 小程序自定义转发分享大图...
  13. Reference counted Objects (引用计数对象) - 文章翻译
  14. AI人工智能入门(浅析AlphaGo的实现)
  15. 解决VS2010闪退问题
  16. pyinstaller打包执行文件报错NameError: name ‘defaultParams‘ is not defined问题解决方案
  17. Java高并发程序设计(三)——JDK并发包(一)
  18. 分享给你——2017我学到的方法论
  19. 基于SPO语义三元组的疾病知识发现
  20. Window下编译 64位ffmpeg 引入libx264及libmp3lame编码库

热门文章

  1. 超越联系人跟踪应用程序
  2. Spring之IOC~控制反转
  3. 利用python处理excel表格
  4. SampleGrabber开发问题与解决方案
  5. 【倾心整理】高级工程师手写总结,入门到顶级程序员的学习方法
  6. Designing Network Design Spaces,译读
  7. html实现网格布局排版整齐的表格,想要排版布局好看又整齐,用网格排一下就行了吗?...
  8. 工作这些年 (zz)
  9. Android Studio下拉菜单
  10. 不靠体育赛事,咪咕视频还有多大发展空间?