语音识别初探

本文是对最近学习的语音识别的一个总结,主要参考以下内容:

《解析深度学习——语音识别实践》

http://licstar.net/archives/328 词向量和语言模型

几篇论文,具体见参考文献


语音识别任务是把声音数据转换为文本,研究的主要目标是实现自然语言人机交互。在过去的几年里,语音识别领域的研究成为人们关注的热点,出现了众多新型

语音应用,例如语音搜索、虚拟语音助手(苹果的Siri)等。

语音识别任务的pipline

语音识别任务的输入是声音数据,首先要对原始的声音数据进行一系列的处理(短时傅里叶变换或取倒譜...),变成向量或矩阵的形式,称为特征序列。这个过程

是特征提取,最常用的是mfcc特征序列。这里就不深入学习了,只要知道这是语音识别的第一步。

然后,我们对这些特征序列数据建模。传统的语音识别方案中采用的是混合高斯分布建模。其实不仅仅在语音识别领域,还有很多工程和科学学科领域,高斯分

布是非常流行的。它的流行不仅来自其具有令人满意的计算特性,而且来自大数定理带来的可以近似很多自然出现的实际问题的能力。

混合高斯分布:

一个服从混合高斯分布的连续随机标量x,它的概率密度函数为:


其中          

推广到多变量的多元混合高斯分布,其联合概率密度函数为:


混合高斯分布最明显的特征是它的多模态(M>1,不同于高斯分布的单模态性质M=1。这使得混合高斯分布能够描述很多显示出多模态性质的数据(包括语音数

据),而单高斯分布则不适合。数据中的多模态性质可能来自多种潜在因素,每一个因素决定分布中一个特定的混合成分。

当语音数据经过特征提取,转换为特征序列之后,在忽略时序信息的条件下,混合高斯分布就是非常适合拟合这样的语音特征。也就是说,可以以帧为单位,用混

合高斯模型对语音特征进行建模。

如果考虑把语音顺序信息考虑进去,GMM便不再是一个好的模型,因为它不包含任何顺序信息。

这时,使用一类名叫隐马儿可夫模型(HiddenMarkov Model)来对时序信息进行建模。然而,当给定HMM的一个状态后,若要对属于该状态的语音特征向量

的概率分布进行建模,GMM仍然是一个好的模型。

所以传统的语音识别中,GMM+HMM作为声学模型。

语言模型


 语言模型其实就是看一句话是不是正常人说出来的。它可以用在很多地方,比如机器翻译、语音识别得到若干候选之后,可以利用语言模型挑一个尽量靠谱的结

果。在NLP的其它任务里也都能用到。
  语言模型形式化的描述就是给定一个字符串,看它是自然语言的概率P(w1,w2,,wt)
w1wt依次表示这句话中的各个词。有个很简单的推论是:


P(w1,w2,,wt)=P(w1)×P(w2|w1)×P(w3|w1,w2)××P(wt|w1,w2,,wt1)


  常用的语言模型都是在近似地求P(wt|w1,w2,,wt1)
。比如n-gram模型就是用P(wt|wtn+1,,wt1)近似表示前者。

语言模型经典之作:

训练语言模型的最经典之作,要数Bengio等人在2001年发表在NIPS上的文章《ANeural Probabilistic Language Model》。当然现在看的话,肯定是要看他在2003年投到JMLR上的同名论文了。

  Bengio用了一个三层的神经网络来构建语言模型,同样也是n-gram 模型。

图中最下方的wtn+1,,wt2,wt1就是前n1个词。现在需要根据这已知的n1个词预测下一个词wtC(w)表示词w所对应的词向量,整个模型中使用的是一套唯一的词向量,存在矩阵C(一个|V|×m的矩阵)中。其中|V|表示词表的大小(语料中的总词数),m表示词向量的维度。wC(w)的转化就是从矩阵中取出一行。


  网络的第一层(输入层)是将C(wtn+1),,C(wt2),C(wt1)n1个向量首尾相接拼起来,形成一个(n1)m维的向量,下面记为x

  网络的第二层(隐藏层)就如同普通的神经网络,直接使用d+Hx计算得到。d是一个偏置项。在此之后,使用tanh作为激活函数。


  网络的第三层(输出层)一共有|V|个节点,每个节点yi表示下一个词为 i的未归一化log概率。最后使用softmax激活函数将输出值y归一化成概率。最终,y

的计算公式为:

y=b+Wx+Utanh(d+Hx)

 式子中的U

一个|V|×h的矩阵)是隐藏层到输出层的参数,整个模型的多数计算集中在U和隐藏层的矩阵乘法中。后文的提到的3 个工作,都有对这一环节的简化,提升计算的速度。
  式子中还有一个矩阵W|V|×(n−1)m),这个矩阵包含了从输入层到输出层的直连边。直连边就是从输入层直接到输出层的一个线性变换,好像也是神经网络中的一种常用技巧(没有仔细考察过)。如果不需要直连边的话,将W置为0 就可以了。在最后的实验中,Bengio发现直连边虽然不能提升模型效果,但是可以少一半的迭代次数。同时他也猜想如果没有直连边,可能可以生成更好的词向量。

 现在万事俱备,用随机梯度下降法把这个模型优化出来就可以了。需要注意的是,一般神经网络的输入层只是一个输入值,而在这里,输入层x也是参数(存在C中),也是需要优化的。优化结束之后,词向量有了,语言模型也有了。

到此为止,就可以看懂语音识别的pipline


从概率角度理解语音识别

从概率角度理解语音识别任务的话,语音识别可以说是在尝试找到一个从语音到文本的最优的映射函数,使得错词率(WER)最小。

语音输入O,文本输出WW=F(O),找到F使得错词率(WER)最小


贝叶斯决策:比较不同词序列的后验概率,选择能够最大化后验概率P(W|O)的词序列作为语音识别系统的输出结果。

P(O|W),对应声学模型,用来评价语音观测样本值O和词序列W对应模型之间的匹配程度。

P(W),对应语言模型,用于表示在人类使用的自然语言中词序列W本身可能出现的概率。



声学模型的变迁

在深度学习的浪潮兴起之后DNN也应用在了语音识别领域中,主要是声学模型部分。


DNN+HMM作为声学模型


很快DNN+HMM+LM的模式被DN+LM的模式取代,利用深度神经网络实现端到端的语音识别系统。比较经典的论文:

[5] "DeepSpeech:Scaling up end-to-end speech recognition" & "Deepspeech 2: End-to-end speech recognition in english and mandarin."arXiv preprint arXiv:1512.02595 (2015). [pdf](Baidu Speech Recognition System) :star::star::star::star:

主要专注于提高嘈杂环境(例如,餐馆、汽车和公共交通)下的英语语音识别的准确率。DeepSpeech可以在嘈杂环境下实现接近80%的准确率,而其他商业版语音识别API最高识别率在65%左右。跟顶级的学术型语音识别模型(基于流行的数据集Hub500建模)相比也高出9个百分点。

Deep Speech的基础是某种递归神经网络(RNN),采用了端到端的深度学习模型。结构如图所示。


共五层,前三层是简单的DNN结构,第四层是双向RNN,第五层的输入是RNN的前向和后向单元,后面跟着softmax分类。网络输入是context特征,输出是char

训练准则是CTC,解码需要结合ngram语言模型。

DeepSpeech的成功主要得益于庞大的语音数据训练集。首先百度收集了9600个人长达7000小时语音数据,这些语音大多发生在安静的环境下。然后再将这些语音文件与包含有背景噪音的文件合成到一起,最后形成约10万小时的训练集。这些背景噪音包括了饭店、电视、自助餐厅以及汽车内、火车内等场景。另一方面,DeepSpeech的成功很大程度上要取决于规模庞大的基于GPU的深度学习基础设施。在论文中也有大量篇幅描述了优化模型训练的方法。

语音识别的最新进展:

[7]Anonline sequence-to-sequence model for noisy speech recognition

谷歌提出在线序列到序列语音识别系统。


[8]AttentionIs All You Need

attention机制.通常来说,主流序列传导模型大多基于RNNCNNGoogle此次推出的翻译框架—Transformer则完全舍弃了RNN/CNN结构,从自然语言本身的特性出发,实现了完全基于注意力机制的Transformer机器翻译网络架构。

[9]MultichannelEnd-to-end Speech Recognitio

attention-basedencoder-decoder framework 实现了cleanspeech的端到端的语音识别,本文是在其基础上进行扩展,加入了multichannelspeech enhancement,解决了噪音环境下的语音识别。

[10]OneModel To Learn Them All

[11]GAN在语音识别方面的尝试



总结和回顾:

语音识别经历了 GMM+HMM+LM ==DNN+HMM+LM ==DNN+LM的变迁。在实现深度神经网络端到端语音识别系统之后,人们在不断的尝试引入新型网络结

构、attention机制、多任务学习、GAN等技术来进一步提高语音识别特别是嘈杂环境下语音识别的准确率。

参考文献


[1]"Deep neural networks for acoustic modeling in speechrecognition: The shared views of four research groups."Hinton, Geoffrey, et al. IEEE Signal Processing Magazine 29.6 (2012):82-97. [pdf](Breakthrough in speech recognition):star::star::star::star:


深度神经网络替换传统的声学模型。


[2]"Speech recognition with deep recurrent neuralnetworks." Graves, Alex, Abdel-rahman Mohamed, andGeoffrey Hinton. 2013 IEEE international conference on acoustics,speech and signal processing. IEEE, 2013. [pdf](RNN):star::star::star:


[3] "TowardsEnd-To-End Speech Recognition with Recurrent Neural Networks."Graves, Alex, and Navdeep Jaitly. ICML. Vol. 14. 2014. [pdf]:star::star::star:

利用RNN实现端到端的语音识别。

[4] "Fastand accurate recurrent neural network acoustic models for speechrecognition."Sak, Haşim, et al. arXiv preprintarXiv:1507.06947 (2015). [pdf](Google Speech Recognition System) :star::star::star:

[5] "DeepSpeech:Scaling up end-to-end speech recognition" & "Deepspeech 2: End-to-end speech recognition in english and mandarin."arXiv preprint arXiv:1512.02595 (2015). [pdf](Baidu Speech Recognition System) :star::star::star::star:

[6] "AchievingHuman Parity in Conversational Speech Recognition." W.Xiong, J. Droppo, X. Huang, F. Seide, M. Seltzer, A. Stolcke, D. Yu,G. Zweig. arXiv preprint arXiv:1610.05256 (2016). [pdf](State-of-the-art in speech recognition, Microsoft):star::star::star::star:

[7] "Anonline sequence-to-sequence model for noisy speech recognition."

[8] "ANeural Probabilistic Language Model ."

[9]MultichannelEnd-to-end Speech Recognition

[10]OneModel To Learn Them All

[11]GAN在语音识别方面的尝试







  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1 简介1 1.1 自动语音识别:更好的沟通之桥 1 1.1.1 人类之间的交流 2 1.1.2 人机交流 2 1.2 语音识别系统的基本结构 4 1.3 全书结构 6 1.3.1 第一部分:传统声学模型6 1.3.2 第二部分:深度神经网络6 1.3.3 第三部分:语音识别中的DNN-HMM 混合系统7 1.3.4 第四部分:深度神经网络中的特征表示学习 7 1.3.5 第五部分:高级的深度模型 7 第一部分传统声学模型9 2 混合高斯模型10 2.1 随机变量10 2.2 高斯分布和混合高斯随机变量11 2.3 参数估计13 2.4 采用混合高斯分布对语音特征建模 15 3 隐马尔可夫模型及其变体17 3.1 介绍17 3.2 马尔可夫链19 3.3 序列与模型 20 3.3.1 隐马尔可夫模型的性质21 3.3.2 隐马尔可夫模型的仿真22 3.3.3 隐马尔可夫模型似然度的计算22 3.3.4 计算似然度的高效算法24 3.3.5 前向与后向递归式的证明25 3.4 期望zui大化算法及其在学习HMM 参数中的应用 26 3.4.1 期望zui大化算法介绍 26 3.4.2 使用EM 算法来学习HMM 参数——Baum-Welch 算法 28 3.5 用于解码HMM 状态序列的维特比算法32 3.5.1 动态规划和维特比算法32 3.5.2 用于解码HMM 状态的动态规划算法33 3.6 隐马尔可夫模型和生成语音识别模型的变体35 3.6.1 用于语音识别的GMM-HMM 模型 36 3.6.2 基于轨迹和隐藏动态模型的语音建模和识别37 3.6.3 使用生成模型HMM 及其变体解决语音识别问题 38 第二部分深度神经网络41 4 深度神经网络42 4.1 深度神经网络框架42 4.2 使用误差反向传播来进行参数训练 45 4.2.1 训练准则 45 4.2.2 训练算法46 4.3 实际应用50 4.3.1 数据预处理51 4.3.2 模型初始化52 4.3.3 权重衰减52 4.3.4 丢弃法 53 4.3.5 批量块大小的选择55 4.3.6 取样随机化56 4.3.7 惯性系数 57 4.3.8 学习率和停止准则58 4.3.9 网络结构59 4.3.10 可复现性与可重启性 59 5 高级模型初始化技术61 5.1 受限玻尔兹曼机61 5.1.1 受限玻尔兹曼机的属性63 5.1.2 受限玻尔兹曼机参数学习66 5.2 深度置信网络预训练 69 5.3 降噪自动编码器预训练71 5.4 鉴别性预训练74 5.5 混合预训练75 5.6 采用丢弃法的预训练 75 第三部分语音识别中的深度神经网络–隐马尔可夫混合模型77 6 深度神经网络–隐马尔可夫模型混合系统78 6.1 DNN-HMM 混合系统 78 6.1.1 结构78 6.1.2 用CD-DNN-HMM 解码80 6.1.3 CD-DNN-HMM 训练过程81 6.1.4 上下文窗口的影响83 6.2 CD-DNN-HMM 的关键模块及分析 85 6.2.1 进行比较和分析的数据集和实验85 6.2.2 对单音素或者三音素的状态进行建模 87 6.2.3 越深越好88 6.2.4 利用相邻的语音帧89 6.2.5 预训练 90 6.2.6 训练数据的标注质量的影响 90 6.2.7 调整转移概率 91 6.3 基于KL 距离的隐马尔可夫模型91 7 训练和解码的加速93 7.1 训练加速93 7.1.1 使用多GPU 流水线反向传播94 7.1.2 异步随机梯度下降97 7.1.3 增广拉格朗日算法及乘子方向交替算法100 7.1.4 减小模型规模 101 7.1.5 其他方法102 7.2 加速解码103 7.2.1 并行计算103 7.2.2 稀疏网络105 7.2.3 低秩近似107 7.2.4 用大尺寸DNN 训练小尺寸DNN108 7.2.5 多帧DNN 109 8 深度神经网络序列鉴别性训练111 8.1 序列鉴别性训练准则 111 8.1.1 zui大相互信息 112 8.1.2 增强型MMI 113 8.1.3 zui小音素错误/状态级zui小贝叶斯风险114 8.1.4 统一的公式115 8.2 具体实现中的考量116 8.2.1 词图产生116 8.2.2 词图补偿117 8.2.3 帧平滑 119 8.2.4 学习率调整119 8.2.5 训练准则选择 120 8.2.6 其他考量120 8.3 噪声对比估计 121 8.3.1 将概率密度估计问题转换为二分类设计问题121 8.3.2 拓展到未归一化的模型123 8.3.3 在深度学习网络训练中应用噪声对比估计算法 124 第四部分深度神经网络中的特征表示学习127 9 深度神经网络中的特征表示学习128 9.1 特征和分类器的联合学习128 9.2 特征层级129 9.3 使用随意输入特征的灵活性 133 9.4 特征的鲁棒性 134 9.4.1 对说话人变化的鲁棒性134 9.4.2 对环境变化的鲁棒性 135 9.5 对环境的鲁棒性137 9.5.1 对噪声的鲁棒性138 9.5.2 对语速变化的鲁棒性 140 9.6 缺乏严重信号失真情况下的推广能力141 10 深度神经网络和混合高斯模型的融合144 10.1 在GMM-HMM 系统中使用由DNN 衍生的特征144 10.1.1 使用Tandem 和瓶颈特征的GMM-HMM 模型144 10.1.2 DNN-HMM 混合系统与采用深度特征的GMM-HMM 系统的比较147 10.2 识别结果融合技术149 10.2.1 识别错误票选降低技术(ROVER) 149 10.2.2 分段条件随机场(SCARF) 151 10.2.3 zui小贝叶斯风险词图融合153 10.3 帧级别的声学分数融合153 10.4 多流语音识别 154 11 深度神经网络的自适应技术157 11.1 深度神经网络中的自适应问题157 11.2 线性变换159 11.2.1 线性输入网络.159 11.2.2 线性输出网络 159 11.3 线性隐层网络 161 11.4 保守训练162 11.4.1 L2 正则项163 11.4.2 KL 距离正则项163 11.4.3 减少每个说话人的模型开销 165 11.5 子空间方法167 11.5.1 通过主成分分析构建子空间 167 11.5.2 噪声感知、说话人感知及设备感知训练168 11.5.3 张量172 11.6 DNN 说话人自适应的效果172 11.6.1 基于KL 距离的正则化方法 173 11.6.2 说话人感知训练174 第五部分先进的深度学习模型177 12 深度神经网络中的表征共享和迁移178 12.1 多任务和迁移学习178 12.1.1 多任务学习 178 12.1.2 迁移学习180 12.2 多语言和跨语言语音识别180 12.2.1 基于Tandem 或瓶颈特征的跨语言语音识别181 12.2.2 共享隐层的多语言深度神经网络182 12.2.3 跨语言模型迁移185 12.3 语音识别中深度神经网络的多目标学习188 12.3.1 使用多任务学习的鲁棒语音识别188 12.3.2 使用多任务学习改善音素识别189 12.3.3 同时识别音素和字素(graphemes) 190 12.4 使用视听信息的鲁棒语音识别 190 13 循环神经网络及相关模型192 13.1 介绍192 13.2 基本循环神经网络中的状态-空间公式194 13.3 沿时反向传播学习算法195 13.3.1 zui小化目标函数 196 13.3.2 误差项的递归计算196 13.3.3 循环神经网络权重的更新197 13.4 一种用于学习循环神经网络的原始对偶技术199 13.4.1 循环神经网络学习的难点199 13.4.2 回声状态(Echo-State)性质及其充分条件 199 13.4.3 将循环神经网络的学习转化为带约束的优化问题 200 13.4.4 一种用于学习RNN 的原始对偶方法201 13.5 结合长短时记忆单元(LSTM)的循环神经网络203 13.5.1 动机与应用203 13.5.2 长短时记忆单元的神经元架构204 13.5.3 LSTM-RNN 的训练205 13.6 循环神经网络的对比分析205 13.6.1 信息流方向的对比:自上而下还是自下而上 206 13.6.2 信息表征的对比:集中式还是分布式208 13.6.3 解释能力的对比:隐含层推断还是端到端学习209 13.6.4 参数化方式的对比:吝啬参数集合还是大规模参数矩阵 209 13.6.5 模型学习方法的对比:变分推理还是梯度下降210 13.6.6 识别正确率的比较211 13.7 讨论212 14 计算型网络214 14.1 计算型网络214 14.2 前向计算215 14.3 模型训练 218 14.4 典型的计算节点222 14.4.1 无操作数的计算节点 223 14.4.2 含一个操作数的计算节点223 14.4.3 含两个操作数的计算节点228 14.4.4 用来计算统计量的计算节点类型235 14.5 卷积神经网络 236 14.6 循环连接 239 14.6.1 只在循环中一个接一个地处理样本240 14.6.2 同时处理多个句子242 14.6.3 创建任意的循环神经网络243 15 总结及未来研究方向245 15.1 路线图 245 15.1.1 语音识别中的深度神经网络启蒙245 15.1.2 深度神经网络训练和解码加速248 15.1.3 序列鉴别性训练248 15.1.4 特征处理249 15.1.5 自适应 250 15.1.6 多任务和迁移学习251 15.1.7 卷积神经网络 251 15.1.8 循环神经网络和长短时记忆神经网络251 15.1.9 其他深度模型 252 15.2 技术前沿和未来方向 252 15.2.1 技术前沿简析252 15.2.2 未来方向253

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值