[导读] 语音识别建模对语音识别来说是不可或缺的一部分,因为不同的建模技术通常意味着不同的识别性能,所以这是各个语音识别团队重点优化的方向。也正是因为如此,语音识别的模型也层出不穷,其中语言模型包括了N-gram、RNNLM等,在声学模型里面又涵盖了HMM、DNN、RNN等模型...

语音识别建模对语音识别来说是不可或缺的一部分,因为不同的建模技术通常意味着不同的识别性能,所以这是各个语音识别团队重点优化的方向。也正是因为如此,语音识别的模型也层出不穷,其中语言模型包括了N-gram、RNNLM等,在声学模型里面又涵盖了HMM、DNN、RNN等模型…

简单来说,声学模型的任务就是描述语音的物理变化规律,而语言模型则表达了自然语言包含的语言学知识。本文由搜狗语音交互中心语音技术部负责人陈伟来为大家分享伴随着本轮人工智能浪潮下语音识别建模技术的演进,希望能够帮大家理清主流的识别建模脉络以及背后的思考。

搜狗知音引擎是搜狗公司自主研发的一项专注于自然交互的智能语音技术,该技术集合了语音识别、语义理解、语音交互、以及提供服务等多项功能,不仅能听会说,还能理解会思考,本文将结合知音引擎中语音识别建模技术的使用来为大家讲解。

yysb18040315

 

图1 搜狗智音引擎

基础概念

1语音帧

考虑到语音的短时平稳特性,语音信号在前端信号处理时要进行加窗分帧的操作,识别特征都按帧来提取,具体请见图2。(编者注:分帧后的语音信号逐帧提取语音特征用于声学模型建模。

yysb18040301

图2 语音帧的划分

2语音识别系统

语音信号经过前端信号处理、端点检测等处理后,逐帧提取语音特征,传统的特征类型包括MFCC、PLP、FBANK等特征,提取好的特征送至解码器,在声学模型、语言模型以及发音词典的共同指导下,找到最为匹配的词序列作为识别结果输出,整体流程请见图3。识别的公式如图4所示,可见声学模型主要描述发音模型下特征的似然概率;语言模型主要描述词间的连接概率;发音词典主要是完成词和音之间的转换,其中声学模型建模单元一般选择三音素模型,以“搜狗语音为例”:

sil-s+ou1 s-ou1+g ou1-g+ou3 g-ou3+y ou3-y+u3 y-u3+y u3-y+in1 y-in1+sil

yysb18040307

图3 语音识别系统流程

yysb18040308

图4 语音识别原理

需要注意的是,输入特征矢量X代表语音的特征。

主流声学建模技术

近年来,随着深度学习的兴起,使用了接近30年的语音识别声学模型HMM(隐马尔科夫模型)逐渐被DNN(泛指深度神经网络)所替代,模型精度也有了突飞猛进的变化,整体来看声学建模技术从建模单元、模型结构、建模流程等三个维度都有了比较明显的变化,如图5所示:

yysb18040309

图5 声学建模演进总结

其中,深度神经网络超强的特征学习能力大大简化了特征抽取的过程,降低了建模对于专家经验的依赖,因此建模流程逐步从之前复杂多步的流程转向了简单的端到端的建模流程,由此带来的影响是建模单元逐步从状态、三音素模型向音节、字等较大单元演进,模型结构从经典的GMM-HMM向DNN+CTC(DNN泛指深度神经网络)转变,演进的中间态是DNN-HMM的混合模型结构。

1HMM

HMM最早创立于20世纪70年代。80年代得到了传播和发展,成为信号处理的一个重要方向,现已成功地用于语音识别,行为识别,文字识别以及故障诊断等领域。

详细来看,经典的HMM建模框架如下所示:

yysb18040310

图6 HMM建模框架

其中,输出概率使用高斯混合模型GMM建模,如下:

微信图片_20180403092941

yysb18040311

2DNN-HMM

2012年,微软邓力和俞栋老师将前馈神经网络FFDNN (Feed Forward Deep Neural Network) 引入到声学模型建模中,将FFDNN的输出层概率用于替换之前GMM-HMM中使用GMM计算的输出概率,引领了DNN-HMM混合系统的风潮,很多研究者使用了FFDNN、CNN、RNN、LSTM等多种网络结构对输出概率进行建模,并取得了很好的效果,如图7所示。

yysb18040312

图7 DNN-HMM混合建模框架

DNN-HMM建模框架中,输入特征使用了在当前帧左右拼帧的方式来实现模型对时序信号长时相关性的建模,模型输出则保持了GMM-HMM经常使用的trihone共享状态 (senone),中文大词汇量连续语音识别中状态数一般设置在1万左右,如图8所示。

yysb18040313

图8 DNN-HMM建模流程

3FFDNN

FFDNN的模型结构如下所示:

yysb18040314

图9 FFDNN建模流程

4CNN

编者注:实际上,最早CNN只应用于图像识别,直到2012年才被用于语音识别系统。

yysb18040302

图10 CNN建模流程

5RNN及LSTM

语音的协同发音现象说明声学模型需要考虑到语音帧之间的长时相关性,尽管上文中DNN-HMM通过拼帧的方式对上下文信息进行了建模,但是毕竟拼接的帧数有限,建模能力不强,因此引入了RNN(循环神经网络)增强了长时建模的能力,RNN隐层的输入除了接收前一个隐层的输出之外,还接收前一时刻的隐层输出作为当前输入,通过RNN的隐层的循环反馈,保留了长时的历史信息,大大增强了模型的记忆能力,语音的时序特性通过RNN也得到了很好的描述。但是RNN的简单结构在模型训练进行BPTT (Backpropagation Through Time) 时很容易引起梯度消失/爆炸等问题,因此在RNN的基础上引入了LSTM(长短时记忆模型),LSTM是一种特殊的RNN,通过Cell以及三个门控神经元的特殊结构对长时信息进行建模,解决了RNN出现的梯度问题,实践也证明了LSTM的长时建模能力优于普通RNN。

yysb18040303

图11 RNN结构

yysb18040304

图12 RNN到LSTM

6CTC

上述的建模技术在模型训练时需要满足一个条件,就是训练数据中每一帧都要预先确定对应的标注,即对应DNN输出状态的序号,训练特征序列和标注特征序列必须是等长的,而为了得到标注,需要使用已有模型对训练数据序列和标注序列进行强制对齐,但是基于大数据训练时标注的准备比较耗费时间,同时对齐使用的模型精度往往存在偏差,训练中使用的标注会存在错误。因此引入了CTC (Connectionist Temporal Classification) 准则,解决了标注序列与特征序列不等长的问题,通过前向后向算法自动学习语音特征中的模型边界,这种准则与用于时序建模的神经网络(如LSTM)的结合可以直接用于端到端的模型建模,颠覆了语音识别使用接近30年之久的HMM框架。

CTC准则引入了blank类别,用于吸收发音单元内部的混淆性,更加突出模型与其他模型之间的差异性,因此CTC具有非常明显的尖峰效果,图13是使用triphone-lstm-ctc模型对内容为“搜狗语音”的语音进行识别后的输出概率分布,可以看到大部分区域都被blank吸收,识别出的triphone对应着明显尖峰。

yysb18040305

图13 CTC尖峰效果演示

可以预期,基于CTC或者引用CTC概念(如LFMMI)的端到端识别技术将逐渐成为主流,HMM框架将逐渐被替代。
其他建模技术

1语言建模技术

目前RNNLM的技术已经逐步引入到语音识别中来,通过对更长历史信息的建模,RNNLM较传统使用的N-Gram技术对识别性能有了较好的提升,但是考虑到大词汇量语音识别中,如果完全替换N-Gram会带来运算量以及运算时间的大幅增加,因此在知音引擎中,RNNLM用在对N-Gram识别输出的N-Best候选列表的重排序上。

2语音唤醒技术

知音引擎中目前针对固定唤醒词的方式,基于DNN进行端到端的唤醒词建模,具体如下:

yysb18040306

图14 端到端语音唤醒流程

这种方法尽管取得了非常低的误唤醒率,但是缺点也很明显,唤醒词无法自定义,因此知音引擎中,我们使用DNN提取Bottleneck Feature,用于基于HMM的唤醒模型训练,较传统基于MFCC的方式也取得了较好的效果。

关于未来

尽管语音识别建模能力取得了较大的提升,但是远场、噪声、口音、发音习惯(吞音)等问题仍然存在,很赞成吴恩达的说法,由95%的准确率发展到99%,尽管只有4%的差距,但是可能会改变人们的交互方式,将实现很少用到经常使用的转变。

目前语音原始数据获取的成本越来越低,工业界正在使用数万小时的已标注数据进行模型更新,将来十万级的训练数据将成为可能,怎么能高效的使用数据,主要有以下几点的考虑:

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

运算层面:基于异构计算的集群在超大数据上高效的完成模型训练,而运算能力的升级已经从线下训练扩展到了线上测试;

模型层面:超大数据的学习需要更强能力的模型,目前基于多种模型结构的复合结构(如CNN-LSTM-DNN)已经证明了可行性,后续基于Encoder-Attention-Decoder的序列学习框架也已经在和语音识别进行结合。

同时语音识别尽管现在可以达到很高的准确率,但是准确率从95%到99%甚至100%的这个跨越是由量变到质变的过程,也是决定语音交互能否成为主流交互方式的重要一环,但是目前语音识别的一些老问题仍然存在,技术上仍然没有能力完全解决,因此技术之外的产品创新也很重要,可以有效弥补准确率上的缺失。

以知音引擎为例,它针对这个问题提供了语音纠错的解决方案,针对识别中出现的错误可以使用自然语音的方式进行修正,比如用户想说“我叫陈伟”,识别成了“我叫晨炜”,通过语音说出“耳东陈伟大的伟”就会改正识别结果,目前随着多轮产品的迭代,语音修改已经具备了80%的修改成功率,并且已经应用到了知音引擎的语音交互中,同时在搜狗iOS输入法中也集成了语音修改的能力。

编者注:总结语音识别系统的流程,总结语音识别系统的流程,声学建模和语言建模部分是最关键的一环,而目前基于深度学习的建模技术已经将模型性能提升到新的阶段。不过正如陈伟所说,尽管语音识别的准确率已经达到了较高的水准,但依然有很大的提升空间,那么未来还会出现什么样的模型呢?让我们一起期待人工智能特别是深度学习技术新成果的出现。

免责声明:凡注明为其它来源的信息均转自其它平台,目的在于传递更多信息,并不代表本站观点及立场。若有侵权或异议请联系我们处理。

相关推荐