鉴于传统架构的语音识别方法在其他的回答中已经有了详细的介绍,这里主要介绍end-to-end语音识别架构,主要涉及到RNN神经网络结构以及CTC。

Outline:

1、 语音识别的基本架构

2、 声学模型(Acoustic Model,AM)a) 传统模型

b)CTC模型

c) end-to-end模型

3、 语言模型

4、 解码

----------------------------------------------------

1、 语音识别的基本架构

上式中W表示文字序列,Y表示语音输入。公式1表示语音识别的目标是在给定语音输入的情况下,找到可能性最大的文字序列。根据Baye’ Rule,可以得到公式2,其中分母表示出现这条语音的概率,它相比于求解的文字序列没有参数关系,可以在求解时忽略,进而得到公式3。公式3中第一部分表示给定一个文字序列出现这条音频的概率,它就是语音识别中的声学模型;第二部分表示出现这个文字序列的概率,它就是语音识别中的语言模型。

无论是传统的方法也好,现在火热的深 度神经网络的方法也罢,目前的语音识别架构都没有脱离上面的公式,也就是说都离不开AM和LM。下面分别对这两部分进行介绍

2、 声学模型(Acoustic Model,AM)

声学模型可以理解为是对发声的建模,它能够把语音输入转换成声学表示的输出,更准确的说是给出语音属于某个声学符号的概率。

a) 传统模型

在英文中这个声学符号可以是音节(syllable)或者更小的颗粒度音素(phoneme);在中文中这个声学符号可以是声韵母或者是颗粒度同英文一样小的音素。那么公式3中的声学模型就可以表示为下面的公式4的形式:

其中Q表示发音单位的序列。从公式中可以看到,声学模型最终转换成了一个语音到发音序列的模型和一个发音序列到输出文字序列的字典。这里的发音序列通常是音素,到此为止声学模型是从语音到音素状态的一个描述。为了对不同上下文的音素加以区分,通常使用上下文相关的“三音子”作为建模单元。可以用下图表示:

其中字典部分表示为如下公式5,其意义是把每个文字拆分成若干发音符号的序列。

公式4中的声学部分可以继续分解为如下公式6 :

公式6表示声学建模的颗粒度可以继续分解为更小的状态(state)。通常一个三音子对应有3个状态(静音通常是5个状态),那么声学建模的总数就是

这么多。为了压缩建模单元数量,状态绑定的技术被大量使用,它使得发音类似的状态用一个模型表表示,从而减少了参数量。状态绑定的技术可以使用专家手工编撰的规则,也可以使用数据驱动的方式。具体绑定形式如下图所示:

基于上面的推到,声学模型是一个描述语音和状态之间转换的模型。

此时,引入HMM假设:状态隐变量,语音是观测值,状态之间的跳转符合马尔科夫假设。那么声学模型可以继续表示为如下公式:

其中a表示转移概率,b表示发射概率。用图来表示的话就是下图中的结构 :

如图中所示,观测概率通常用GMM或是DNN来描述。这就是CD-GMM-HMM架构[Mark Gales, 2006]和CD-DNN-HMM架构[George E. Dahl, 2012]的语音识别声学模型。CD-DNN-HMM的架构这里引用文章中的图表示如下:

b) CTC模型

在基于CD-DNN-HMM架构的语音识别声学模型中,训练DNN通常需要帧对齐标签。在GMM中,这个对齐操作是通过EM算法不断迭代完成的,而训练DNN时需要用GMM进行对齐则显得非常别扭。因此一种不需要事先进行帧对齐的方法呼之欲出。

此外对于HMM假设一直受到诟病,等到RNN出现之后,使用RNN来对时序关系进行描述来取代HMM成为当时的热潮。

随着神经网络优化技术的发展和GPU计算能力的不断提升,最终使用RNN和CTC来进行建模实现了end-to-end语音识别的声学模型。

CTC的全称是Connectionist Temporal Classification,中文翻译大概是连接时序分类。它要达到的目标就是直接将语音和相应的文字对应起来,实现时序问题的分类。

用公式来描述的话,CTC的公式推导如下:

其中π表示文字序列,X表示语音输入,y表示RNN的输出。由于很多帧可以输出同样的一个文字,同时很多帧也可以没有任何输出,因此定义了一个多对一的函数,把输出序列中重复的字符合并起来,形成唯一的序列,进而公式表示如下:

起始l表示对应的标注文本,而π是带有冗余的神经网络输出。求解上述公式,需要使用前后向算法,定义前向因子

和后向因子:

那么神经网络的输出和前后向因子的关系可以表示为:

进而得到:

利用上述公式,就可以进行神经网络的训练了,这里仍然可以描述为EM的思想:E-step:使用BPTT算法优化神经网络参数;

M-step:使用神经网络的输出,重新寻找最有的对齐关系。

CTC可以看成是一个分类方法,甚至可以看作是目标函数。在构建end-to-end声学模型的过程中,CTC起到了很好的自动对齐的效果。同传统的基于CD-DNN-HMM的方法相比,对齐效果引用文章[Alex Graves,2006]中的图是这样的效果:

这幅图可以理解:基于帧对齐的方法强制要求切分好的帧对齐到对应的标签上去,而CTC则可以时帧的输出为空,只有少数帧对齐到对应的输出标签上。这样带来的差别就是帧对齐的方法即使输出是正确的,但是在边界区域的切分也很难准确,从而给DNN的训练引入错误。

c) End-to-end模型

由于神经网络强大的建模能力,End-to-end的输出标签也不再需要像传统架构一样的进行细分。例如对于中文,输出不再需要进行细分为状态、音素或者声韵母,直接将汉字作为输出即可;对于英文,考虑到英文单词的数量庞大,可以使用字母作为输出标签。

从这一点出发,我们可以认为神经网络将声学符号到字符串的映射关系也一并建模学习了出来,这部分是在传统的框架中时词典所应承担的任务。针对这个模块,传统框架中有一个专门的建模单元叫做G2P(grapheme-to-phoneme),来处理集外词(out of vocabulary,OOV)。在end-to-end的声学模型中,可以没有词典,没有OOV,也没有G2P。这些全都被建模在一个神经网络中。

另外,在传统的框架结构中,语音需要分帧,加窗,提取特征,包括MFCC、PLP等等。在基于神经网络的声学模型中,通常使用更裸的Fbank特征。在End-to-en的识别中,使用更简单的特征比如FFT点,也是常见的做法。或许在不久的将来,语音的采样点也可以作为输入,这就是更加彻底的End-to-end声学模型。

除此之外,End-to-end的声学模型中已经带有了语言模型的信息,它是通过RNN在输出序列上学习得到的。但这个语言模型仍然比较弱,如果外加一个更大数据量的语言模型,解码的效果会更好。因此,End-to-end现在指声学模型部分,等到不需要语言模型的时候,才是完全的end-to-end。

3、 语言模型(Language Model, LM)

语言模型的作用可以简单理解为消解多音字的问题,在声学模型给出发音序列之后,从候选的文字序列中找出概率最大的字符串序列。

关于语言模型,目前最常见的是N-Gram语言模型和基于RNN的语言模型,基于CNN的语言模型facebook也有paper发出来。想深入了解的,可以参考我的这篇回答:

4、 解码

传统的语音识别解码都是建立在WFST的基础之上,它是将HMM、词典以及语言模型编译成一个网络。解码就是在这个WFST构造的动态网络空间中,找到最优的输出字符序列。搜索通常使用Viterbi算法,另外为了防止搜索空间爆炸,通常会采用剪枝算法,因此搜索得到的结果可能不是最优结果。

在end-to-end的语音识别系统中,最简单的解码方法是beam search。尽管end-to-end的声学模型中已经包含了一个弱语言模型,但是利用额外的语言模型仍然能够提高识别性能,因此将传统的基于WFST的解码方式和Viterbi算法引入到end-to-end的语音识别系统中也是非常自然的。然而由于声学模型中弱语言模型的存在,解码可能不是最优的。文章[yuki Kanda, 2016]提出在解码的时候,需要将这个若语言模型减掉才能得到最优结果。公式推导如下:

其中Pr(s|X)是CTC的声学模型,α是权重系数。语言模型部分推导如下:

其中Pr(s|W)是字符到单词的映射,通常是一对一的。因此上述公式可以表示为如下形式:

其中Pr(W)是传统的语言模型,Pr(s)是字符语言模型,β权重系数。上面的公式表示在CTC的模型解码时,语言模型需要进行减先验的操作,这个先验就是声学训练数据中的字符语言模型。

参考文献:

1、Mark Gales and Steve Young, The Application of Hidden Markov Models in Speech Recognition, 2006

2、George E. Dahl, Dong Yu, Li Deng, and Alex Acero,Context-Dependent Pre-Trained Deep Neural Networks for Large-Vocabulary Speech Recognition,2012

3、Alex Graves,Santiago Fern ́andez,Faustino Gomez,Ju ̈rgen Schmidhuber, Connectionist Temporal Classification: Labelling Unsegmented Sequence Data with Recurrent Neural Networks,2006

4、Alex Graves , Navdeep Jaitly, Towards End-to-End Speech Recognition with Recurrent Neural Networks, 2014

5、Rafal Jozefowicz, Oriol Vinyals, Mike Schuster, Noam Shazeer, Yonghui Wu, Exploring the Limits of Language Modeling, 2016

6、Naoyuki Kanda, Xugang Lu, Hisashi Kawai, Maximum A Posteriori based Decoding for CTC Acoustic Models, 2016

微信语音技术原理_语音识别的技术原理是什么?相关推荐

  1. 语音识别技术_语音识别原理_语音识别技术原理_企业服务汇

    编者按:对于需要引入语音机器人的企业来说,机器人的语音识别能力是企业需要关注的重点,企业怎么去判断语音机器人的语音识别技术水平?本文从语音识别技术的发展和语音识别能力判断进行介绍. ➤语音识别技术的发 ...

  2. 语音性别识别_语音识别识别性别_语音文字识别 - 云+社区 - 腾讯云

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 一句话识别,错误码,产品简介,产品优势,应用场景,计费概述,购买方式,欠费说明,功 ...

  3. 语音识别的原理_语音识别原理_语音识别原理框图 - 云+社区 - 腾讯云

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 深入浅出地介绍了基于hmm的语音识别的原理,不注重公式的细节推导而是着重阐述公式背 ...

  4. 语音支持英语_语音识别英语_英语语音评分 - 云+社区 - 腾讯云

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 实时语音识别支持词时间戳功能 新功能发布 实时语音识别支持 格式 新功能 ...

  5. asr语音转写_语音识别(ASR)--语音转文字

    语音识别(Automatic Speech Recognition)是以语音为研究对象,通过语音信号处理和模式识别让机器自动识别和理解人类口述的语.语音识别技术就是让机器通过识别和理解过程把语音信号转 ...

  6. 求!微信语音是怎么转发给别人的原理

    最近有客户在咨询要开发一个与168社群管理工具差不多的APP软件,可以实现微信语音转发给别人的功能,可是查了很多的资料,都说是用wxpyp 这个插件来开发的,可以看了wxpyp这个开发的插件都好几年没 ...

  7. 智能网联技术 英文_智能网联技术是什么?有什么好推荐学习地方?

    展开全部 智能bai网联汽车是指搭载du先进的车载传感zhi器.控制器.执行器等装置,并融dao合现内代通信与网络技术,实现车与容车.路.人.云等智能信息交换.共享. 具备复杂环境感知.智能决策.协同 ...

  8. 微信语音麦克风静音_微信聊天打字慢?教你一分钟打出200个字,父母老人都需要...

    微信已经成为了我们每天必备的工具,男女老少都在使用微信. 对于我们的父母来说,使用微信聊天打字就很慢,甚至不会打字. 今天就来教大家一分钟打出200个字的绝招,父母老人都需要. 一.语音输入功能 1. ...

  9. 区块链是大数据生态圈技术之一_区块链技术再发力,携手智能制造构建产业生态圈...

    原标题:区块链技术再发力,携手智能制造构建产业生态圈 大数据时代的逐渐逼近,使得传统行业面临巨大的挑战.区块链技术是大数据时代备受关注的新星,在越来越多的领域进行试点应用,区块链技术也是大数据时代日益 ...

最新文章

  1. POJ 3667 Hotel(线段树)
  2. 【pyqt5学习】——containers相关控件(tab widget、scroll area、stack widget、tool box、MDI area、dock widget)
  3. 结构型模式——桥接模式
  4. servlet3.1
  5. cms系统和管理员系统区别_如何成为懒惰的系统管理员
  6. 深度探秘大数据新应用,2018 中国大数据技术大会(BDTC)强势来袭!
  7. Hadoop启动脚本概览
  8. CentOS6.7系统优化加强牢固脚本
  9. 汽车汽配行业DMS渠道商系统精准掌握渠道库存,提升市场响应能力
  10. 一:springCloud服务发现者,服务消费者(方志朋《史上最简单的 SpringCloud 教程》专栏读后感)
  11. 地理加权回归学习记录
  12. 进军欧罗巴:中国区块链企业何以敲开欧洲市场的大门
  13. 下拉管家解析各搜索引擎及APP端下拉推荐词的实现规则
  14. 苹果退款_苹果退款流程最新苹果内购退款流程和教程
  15. IPv6 内网穿透(一)
  16. 洋洋背古诗(2021)
  17. 访问网上计算机要输入密码,教大家访问电脑显示输入网络密码怎么办
  18. Py之pycocotools:pycocotools库的简介、安装、使用方法之详细攻略续篇
  19. OLTP vs OLAP 区别和联系
  20. 概要设计和详细设计说明书的区别

热门文章

  1. java毕业生设计中医药科普网站计算机源码+系统+mysql+调试部署+lw
  2. 计算机拆卸注意事项,拆卸笔记本电脑的注意事项
  3. 基金理财——如何卖出基金
  4. 杭州哪里可以打印征信报告
  5. 虚幻引擎(10)-切换控制权
  6. Centos安装MotionPro
  7. 2022SDUT知到/智慧树----C语言第四章测试题解
  8. 计算机系求职信英语作文,计算机专业求职信英文
  9. 【MySQL】之重置数据库主键 ID
  10. GTX1660Ti加ubuntu18.04安装NVIDIA470显卡驱动安装CUDA11.4加torch 1.8.0