作者:james
 
1.    背景介绍

         近些年来,随着Siri的走红,类似Siri、搜狗语音助手这样利用语音实现控制,语义理解的系统开始大量涌现。而语音识别系统作为这类系统的入口,很大程度上决定了这类应用的质量。没有一个好的语音识别系统做支撑,再好的助手也只能干瞪眼。

         与此同时,随着微信的发展,越来越多的用户反馈,在多种场合下不方便收听语音,需要将语音转换成文字。许多微信公众号也表示需要将语音识别成文字,以便进一步的处理。在此形势下,提高我司现有语音识别系统的准确率成为了迫切的任务。

        之前主流的语音识别系统都是采用HMM-GMM技术。近些年来,随着深度神经网络(Deep neural network)技术的的发展,越来越多的系统采用HMM-DNN技术。这项技术把描述特征发射概率的模型从混合高斯模型(GMM)替换为深度神经网络(DNN),从而使系统的错误率下降了20%~30%。

2.    相关产品

        当前市场上的采用DNN技术的主要竞品有讯飞的相关产品,包括讯飞语音输入法和讯飞口讯等产品、以及某互联网公司的输入法等。

        科大讯飞是当前语音行业的领航者,在语音行业有十几年的历史,在Siri推出前就已经推出了讯飞语音输入法等产品,在数据积累方面具有其他公司无法比拟的优势。而行业内另一家互联网公司则是声称国内最早将DNN技术应用到语音识别产品中的公司。
 
3.    技术介绍

3.1      深度神经网络

        为了描述神经网络,我们先介绍最简单的神经网络,该神经网络只由一个神经元构成,如图1所示。
 

1 神经元

       1所示的神经元接受3个输入,x1,x2,x3,和一个偏置+1, 其输出为

其中Wi xi在输入中的权重。函数f(x)被称作激活函数。

图2. 神经网络


       神经网络将许多个单一的神经元连接在一起,如图2所示。神经网络最左边的一层叫做输入层,最右的一层叫做输出层。中间节点组成的一层叫做隐藏层.
 
3.2      深度神经网络在声学模型中的应用


        深度神经网络则是层数较多的神经网络。虽然神经网络很早之前就已经提出,但因为计算量的问题,神经网络的层数一直无法提升。近年来随着神经网络理论的进一步发展和计算能力的不断提高,特别是GPU的出现,才使得深度神经网络得以发挥其威力。

图3. 使用DNN作为声学模型[1]



        图3说明了DNN是如何替代GMM应用到声学模型中的。图3中上半部分是HMM的结构,HMM的结构和转移概率是HMM-GMM模型训练的结果。图3中间部分是描述了一个DNN,这个DNN模型来决定HMM的发射概率。通常情况下这个DNN模型的层数不会小于5层,每层大概数千个神经元组成。图3中的下半部分是DNN模型的输入,需要注意的是DNN模型的输入是多帧特征,而不是GMM模型中一帧。在识别语音的过程中,一小段语音都会被提取成上图中所对应的Observation,并根据HMM中的状态计算发射概率(也就是跟不同的发音比较相似度),选择发射概率最大路径作为最终的结果。

图4. DNN声学模型的训练流程


       图4说明了DNN声学模型的训练流程。在训练DNN模型之前,我们首先训练出一个HMM-GMM模型来做强制对齐(forced alignment)。强制对齐的结果作为DNN训练的样本提交GPU上训练DNN模型,这个过程包含了两部分,首先是基于GPU的Pretrain,使神经网络有一个好的起点。然后使用BP算法对神经网络进行Fine Tuning,得到最终的模型。
 
3.3      DNN训练与识别系统的工程优化


        DNN网络具有数据巨大的参数需要学习,每一层网络都有数百万的参数,而下一层网络的输入又是上一层网络的输出,通常情况下训练一个3.2节中所述的声学模型需要近两千个CPU内核运行近一个月。此外,由于声学模型所用到的DNN较为特殊:每一层的一个神经元都依赖上一层的所有神经元,因此,如果把模型不同层次切分到不同的服务器上分别进行训练的话,会带来巨大的网络开销,使系统实际上不可用,因此我们在训练DNN的过程中使用了GPU,并通过不断的优化,使得训练速度相比单台服务器有近两千倍的速度提高,从而使DNN模型的训练成为现实。


        此外,为了使DNN模型可以应用到线上的服务中,我们对DNN在CPU上的计算也做了优化,在几乎不影响准确率的情况下,将计算速度提升了将近10倍。


4.    实验结果


        通过DNN模型的应用,我们语音识别系统的字错误率下降了40%左右,根据第三方的测试已经超过百度,并有望追上讯飞。
 
参考文献


[1] Dahl G E, Yu D, Deng L, et al. Context-dependent pre-trained deep neural networks for large-vocabulary speech recognition[J]. Audio, Speech, and Language Processing, IEEE Transactions on, 2012, 20(1): 30-42.