1.语音对话系统(spoken language system)
通常我们说到语音识别技术的时候,指的是整个语音对话系统,如图所示,语音对话系统通常包括四个主要组成部分的一个或多个:语音识别系统将语音转化为文本、语义理解系统提取用户说话的语义信息、文字转语音系统将内容转化为语音、对话管理系统连接其他三个系统并完成与实际应用场景的沟通。所有这些部分对建立一个成功的语音对话系统都是很关键的。
这次我们主要聊聊其中语音识别部分的技术发展脉络。
2.语音识别系统(Automatic Speech Recognition,ASR)
语音识别系统的典型组成包括五部分:前端处理、声学特征、声学模型(AM)、语言模型(LM)和解码搜索。其中最核心也是最有挑战的部分就是声学模型和语言模型。
- 前端处理:对原始语音进行处理,部分消除噪声和不同说话人带来的影响,使处理后的信号更能反映语音的本质特征。最常用的前端处理有端点检测和语音增强。端点检测是指在语音信号中将语音和非语音信号时段区分开来,准确地确定出语音信号的起始点。经过端点检测后,后续处理就可以只对语音信号进行,这对提高模型的精确度和识别正确率有重要作用。语音增强的主要任务就是消除环境噪声对语音的影响。目前通用的方法是采用维纳滤波,该方法在噪声较大的情况下效果好于其它滤波器。
- 声学特征:声学特征的提取既是一个信息大幅度压缩的过程,也是一个信号解卷过程,目的是使模式划分器能更好地划分。典型特征有LPC(线性预测系数)、CEP(倒谱系数)、Mel(Mel刻度)、MFCC(Mel倒谱系数)。
- 声学模型(AM):主要实现语音到音节概率的计算。以前序提取的特征为输入,通过将声学和发声学的知识进行整合、建模,生成声学模型分数。主要模型有HMM声学建模、
- 语言模型(LM):语言模型是针对某种语言建立的概率模型,目的是建立一个能够描述给定词序列在语言中的出现的概率的分布,主要实现音节到字概率的计算,分为规则模型和统计模型两种,通常用交叉熵和复杂度(Perplexity)来衡量模型的性能。从训练语料中学习词语之间的相互关系,估计词语序列的关联性概率,生成语言模型分数。主要模型有N-Gram、DNN模型、上下文相关模型、词间相关模型、分段模型或语法分析。语言模型的性能,很大程度上取决于语料的质量和体量。和特定任务匹配的大语料,永远是最重要的。但是实际应用中,这样的语料往往可遇不可求。
- 解码搜索:寻找一个词模型序列以描述输入语音信号,从而得到词解码序列。搜索所依据的是对公式中的声学模型打分和语言模型打分。在实际使用中,往往要依据经验给语言模型加上一个高权重,并设置一个长词惩罚分数。主要方法有时齐Viterbi- Beam算法、N-best搜索和多遍搜索、
3.典型声学模型方法概览
3.1 混合高斯模型
- 原理:用混合高斯模型(GMM)对语音特征进行建模,拟合语音特征。
- 应用:过去很多年,GMM被广泛应用于说话人识别、语音特征降噪与语音识别中。知道大概在2010年至2011年间,深度神经网络取得了更加准确的识别效果。
1)说话人识别中,可用GMM直接对所有说话人的语音特征分布建模,得到通用背景模型;
2)语音特征降噪或噪声跟踪中,可采用类似的做法,用GMM拟合一个先验分布;
3)在语音识别中,GMM被整合在HMM中,用来拟合基于状态的输出分布。
- 优点:在概率分布角度建模来说,GMM具有较强的拟合任意复杂的、多种形式的分布能力。通常来说,只要混合的高斯分布数目足够多,GMM可以拟合任意精度的概率分布,并且它通过EM算法很容易拟合数据。
- 缺点:
1)因为不包含顺序信息,对时间维度的数据处理能力弱,不适合对时序信息建模。
2)GMM不能有效地对呈非线性或近似非线性的数据进行建模,举例来说,若对一系列呈球面的点阵建模,如果选择合适的模型,只需要很少的参数,但对GMM来说,却需要非常多的对角高斯分布或相当多的全协方差高斯分布。
3.2 隐马尔科夫模型
- 原理:隐马尔科夫模型是关于时序的概率模型,描述由一个隐藏的马尔科夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程。语音识别中很重要的一个问题就是对时序进行建模,这也是为什么HMM在其中得到广泛的引用。
- 应用:由于其对时间序列信息建模能力强,广泛用于解决语音时序建模问题。
- 优点:对语音中的时序信息建模非常便利,可解释性很强,通用性强。
- 缺点:对转移概率和观测概率估计学习时计算量较大,尤其是维数增多时易出现维数灾难问题,但随着DNN技术的发展和GPU计算能力的增强,计算能力已不再是HMM应用的瓶颈,HMM的能力将会得到充分的释放。
- 扩展阅读:《隐马尔科夫模型(HMM)| 一个不可被忽视的统计学习模型 | 机器语音》
3.3 GMM-HMM混合模型
- 原理:GMM-HMM框架,其中GMM(高斯混合模型)用来对语音的观察概率进行建模,HMM(隐马尔可夫模型)则对语音的时序进行建模,详细的框架如下图所示。
- 应用:GMM-HMM声学模型在一段时间内统治了语音识别领域,但随着深度学习的发展,GMM已被DNN、RNN等模型替代。
- 优点:GMM训练速度快,声学模型较小,容易移植到嵌入式平台。
- 缺点:GMM没有利用帧的上下文信息,GMM不能学习深层非线性特征变换。
- 扩展阅读:《GMM-HMM模型 vs. DNN-HMM模型 vs. DNN-CTC模型 | 语言模型之战 | 老炮儿聊机器语音 | 4th》
3.4 DNN-HMM模型:CNN HMM、RNN HMM、LSTM HMM……
- 原理:将DNN(深度神经网络)的输出层概率用于替换之前GMM-HMM中使用GMM计算的输出概率,很多研究者使用了FFDNN、CNN、RNN、LSTM等多种网络结构对输出概率进行建模,由此产生了FFDNN-HMM、CNN-HMM、RNN-HMM、LSTM-HMM等诸多DNN-HMM声学模型,并取得了很好的效果。DNN-HMM的通用架构如下图所示。
- 应用:目前已成为语音识别最为主流的方法,广泛应用于各种语音识别场景之中。其中又属LSTM HMM、CNN HMM的一系列变种模型效果更好。
- 优点:深度神经网络以对非线性复杂特征的自动化、高精度拟合能力而著称,因此用于用于语音特征的自动表示具有目前最高水平(state-of-art)的优势。
- 缺点:1)FFDNN-HMM方法:不能利用历史信息来辅助当前任务;2)RNN HMM方法:RNN随着层数的增加,会导致梯度爆炸或者梯度消失;
- 扩展阅读:《GMM-HMM模型 vs. DNN-HMM模型 vs. DNN-CTC模型 | 语言模型之战 | 老炮儿聊机器语音 | 4th》
4. 语言模型
4.1 N- Gram统计语言模型
- 原理:它采用了n元依赖假设,即当前词的概率,只依赖于前n-1个词。即:
不考虑平滑,模型概率估计使用最大似然概率:
这种估计理解起来比较简单,即当前历史词下出现当前词,占当前历史词下出现所有可能词的比重。然而这种估计方法,会遇到我们上述提到的参数空间过大的问题。语料中不可能覆盖Vn个估计场景,肯定会有很多零点,如果使用最大似然,最后很多句子的概率都会是0,这会导致Ngram基本不可用。
- 应用:Ngram模型是最常用的建模技术,采用了马尔科夫假设,目前广泛地应用于工业界。
- 优点:Ngram刚出现时具有划时代意义,把语言问题成功的转化为数学建模问题,变得可以计算了,通过统计学习的方式为语言处理领域指引了发展的方向。
- 缺点:
1)传统的Ngram建模技术,对长距离的依赖处理的欠佳。如工业界常用的四元模型,即当前词的概率,只依赖三个历史词。因此,更远距离的历史词在建模中,没有对当前词概率产生影响。
2)Ngram模型建模的参数空间过于庞大。同样以四元模型为例,词典大小为V,参数空间就是V4。实际应用中V大小为几万到几百万,可想而知,参数空间有多大。在这样的参数规模下,多大的数据显得都有些稀疏。
- 拓展阅读:《N-Gram模型 vs. RNN | 语言模型之战 | 老炮儿聊机器语音 | 3th》
4.2 DNN模型:递归神经网络RNN语言模型、CNN、LSTM等
- 原理:用DNN网络,如RNN、CNN和LSTM等模型对给定词序列在语言中的出现的概率的分布进行拟合描述。
- 应用:DNN模型正在逐渐替代Ngram模型作为语言建模的主流方法。
- 优点:DNN模型一定程度上解决了参数空间大,长距离依赖的问题。而且对于相似的词,概率估计上自带一定程度的平滑,从另一个角度解决了数据稀疏的问题。。lstm、cnn在语言模型上也有研究陆续在跟进。此外,在输入层,引入语义特征,也会带来性能的提升。
- 缺点:神经网络语言模型的缺点是训练时间长,实际应用中查询速度较慢,需要结合硬件做加速。
- 拓展阅读:《N-Gram模型 vs. RNN | 语言模型之战 | 老炮儿聊机器语音 | 3th》
5.序列到序列(端到端)处理的模型,声音模型与语言模型的融合模型
5.1 DNN CTC模型(端到端模型):CNN CTC、RNN CTC、LSTM CTC……
- 原理:CTC算法全称叫:Connectionist temporal classification。从字面上理解它是用来解决时序类数据的分类问题。与传统的声学模型训练相比,采用CTC作为损失函数的声学模型训练,是一种完全端到端的声学模型训练,不需要预先对数据做对齐,只需要一个输入序列和一个输出序列即可以训练。这样就不需要对数据对齐和一一标注,并且CTC直接输出序列预测的概率,不需要外部的后处理。
CTC引入了blank(该帧没有预测值),每个预测的分类对应的一整段语音中的一个spike(尖峰),其他不是尖峰的位置认为是blank。对于一段语音,CTC最后的输出是spike(尖峰)的序列,并不关心每一个音素持续了多长时间。
- 应用:CTC框架已经颠覆了传统的HMM框架,是端到端声学模型的主流方法。目前,基于 CTC 的识别系统已经在多个公司语音产品上广泛应用,已经成为了工业界主流语音识别系统。
- 优点:既然CTC的方法是关心一个输入序列到一个输出序列的结果,那么它只会关心预测输出的序列是否和真实的序列是否接近(相同),而不会关心预测输出序列中每个结果在时间点上是否和输入的序列正好对齐。
- 缺点:这个模型目前在做语音识别的时候效果还有一些不太稳定。相关研究属于比较前沿的工作,模型的训练和使用方法相关资料比较有限。
- 扩展阅读:《GMM-HMM模型 vs. DNN-HMM模型 vs. DNN-CTC模型 | 语言模型之战 | 老炮儿聊机器语音 | 4th》
5.2 注意力模型Attention(端到端模型)
- 原理:Attention是一种权重向量或矩阵,其往往用在Encoder-Decoder架构中,其权重越大,表示的context对输出越重要。计算方式有很多亚种,但是核心都是通过神经网络学习而得到对应的权重。通常其权重aij和Decoder中的第i-1个隐藏状态,Encoder中的第j个隐藏状态相关。
- 应用:从2014年Attention mode在机器翻译或起来以后,attention model逐渐在语音识别领域中应用,并大放异彩。
- 优点:
在 2017 年,Google 上线了 GNMT(Google Neural Machine Translation)系统,该系统基于 Attention 技术实现了端对端的深层神经网络建模,大幅提升了机器翻译的性能。最近两年大家对 attention 机制的 seq2seq 语音识别模型的研究也取得了大幅的进展,在刚结束的 ICASSP 2018 国际学术会议,谷歌公司已经在基于 attention 机制的 seq2seq 英语语音识别任务上,取得了超过其它语音识别模型的性能的表现。
对于基于注意力机制的 seq2seq 框架中,语音识别任务被定义为不定长的语音序列到不定长的文本序列的 seq2seq 的转换,同时结合注意力机制,可以通过单个模型,直接学习到语音序列到文本序列的转换过程,其实现了声学信息和语言信息联合学习的功能。因此,其相较于 CTC 模型,对语言模型的依赖更小,甚至可以不需要语言模型。
- 缺点:这个模型目前在做语音识别的时候效果非常不稳定。相关研究属于比较前沿的工作,模型的训练和使用方法相关资料比较有限。
文末彩蛋:大神俞栋对未来的展望
我们一起来看看腾讯 AI Lab 副主任、西雅图人工智能研究室负责人俞栋在第一届全球机器智能峰会(GMIS 2017)发表的主题为《语音识别领域的前沿研究》的演讲,其中对机器语音的现状与未来做了透彻的剖析。
参考资料
- 《解析深度学习:语音识别实践》
- 百科词条:语音识别,https://baike.baidu.com/item/语音识别/10927133?fr=aladdin
- 语音识别中的CTC算法的基本原理解释:https://blog.csdn.net/QcloudCommunity/article/details/80323441
- 滴滴披露语音识别新进展:基于Attention显著提升中文识别率:https://cloud.tencent.com/developer/news/226168
- 大牛讲堂 | 语音专题第二讲,语言模型技术:https://www.leiphone.com/news/201609/Nl14feo83UoL7Sc4.html