2017-08-04 14:02:49 qq_28125719 阅读数 216
  • 云从科技:详解CNN-pFSMN模型以及在语音识别中的应用

    近日,云从科技在语音识别技术上取得重大突破,在全球最大的开源语音识别数据集Librispeech上刷新了世界纪录,错词率(Worderrorrate,WER)降到了2.97%,将Librispeech的WER指标提升了25%,大幅刷新原先记录。本视频课程讲解了:大规模词汇连续语音识别,LVCSR前沿与最新进展,和CNN-pFSMN声学模型。

    969 人正在学习 去看看 CSDN讲师

阅读原文请点击

摘要: 目前深度学习在图像和语音识别等领域应用越来越广泛,比如图像处理类应用、视频归纳、智能客服,以及延伸的服务机器人领域、车载助手等,本文着重介绍深度学习在语音识别中声学模型与语言模型中的应用,如FSMN,LSTM,RNN等网络结构的设计,比传统的结构在效果上有巨大的提升

         过去 3 年,深度学习在各个领域取得较大突破,比如计算机视觉领域的物体识别、场景分类,语音分析等,并且其技术推广和应用的速度超过人们预期,比如 Google 的广告系统已经开始使用深度学习盈利,Twitter 也通过深度学习改善App 图片及视频内容服务体验。那具体何为深度学习呢?深度学习是怎么应用在上述的各个领域呢,下面结合自身在语音识别的若干年经验,谈谈深度学习在语音识别中的具体应用。

 

0. 背景

 

         “深度学习”的概念在上个世纪便被提出,但Hinton、Lecun等人在2006年发表的论文让“深度学习”重新焕发光彩,并使得相关的学术成果在实际应用中表现良好。它的灵感来自对人脑神经的研究,因此也称为深度神经网络“DNN”。这里的“深度”并非指算法有内涵,而是指神经网络层数多,因此也称为多层结构学习算法(这几种命名不完全对等,具体的差别涉及到学派)。实际中的“深度神经网络”算法与大脑神经结构差别极大,因此深度神经网络被称为端到端的机器学习算法或者多层联结算法或许更好些(联结主义流派的说法)。

           基于深度神经网络算法的重大影响工作的出现,是在2012年之后。比如Krizhevsky、Hinton等用深度学习大幅度提高了图片分类的准确率,奠定了图像分类模型“AlexNet”的地位;Dahl等大幅度提升了语音识别的准确率。

            声学模型以及语言模型就像人的左右大脑一样,没有他们,语音识别系统就是一个空壳,毫无作用。

 

1. 深度学习与AM

     1.1 深度学习在AM中的应用与现状

 

         传统基于HMM的hybrid框架,例如:GMM-HMM,CD-DNN-HMM依然是工业界应用的主流技术,并且各种训练算法以及工具都很成熟,例HTK,Kaldi,Sphinx,并且在很多工业界都有应用。

         目前学术研究的重点逐渐转向End-To-End模型训练。其中比较成熟的训练方法是基于CTC准则的训练。文献报告结果显示[21],LSTM-CTC模型识别准确度高于HMM-LSTM模型,识别速度更快。

基于Attention机制的End-To-End模型训练成为研究热点[22],也是Google,Microsoft等目前的研究热点领域。但是目前据文献报告,识别准确度差于LSTM-CTC模型。

         CNN技术重新得到重视[19][20],作为End-To-End中特征提取的重要一环。

 

    1.2 基于FSMN的AM

 

         FSMN[18],是由科大讯飞提出的一种基于DNN改进型网络结构。在DNN的隐藏层中引入延时结构,将t-N~t-1时刻的隐藏层历史信息作为下一层的输入,从而引入了语音序列的历史信息,同时避免了RNN训练BPTT带来的问题,如:梯度消逝,计算复杂度高等。

 

图1 FSMN结构

         这种结构的设计是来源于Oppenheim的数字信号处理的部分[23],用无限长的脉冲响应滤波器(IIR)来模拟近似高阶的有限脉冲响应滤波器(FIR)。因为RNN中的Recurrent层可以看作一阶的IIR,它可以精确的被高阶的FIR来近似模拟。在这种全连接的结构的基础上再加上一些记忆单元,就如在FIR中延时单元一样,这样可以在前向计算的时候比纯粹的RNN更加高效并稳定。正因为该记忆单元的存在,它可以将更长的上下文信息压缩为一个固定长度的向量,这样可以使模型能够学到更多前后依赖的重要信息。

 

\

图2 Recurrent layer 和 IIR

         FSMN另外一点创新的地方在于引入了Attention机制。核心思想在于模仿人类的思考行为,因为人类在思考问题的时候,一般会先考虑他经历过的,或者听过的事,另外聪明的人类也会根据已有的经验来预测未来将要发生的事,结合这两者,作出的决定将更加正确,更加有实效性。因此在FSMN中,也引入了Lookback以及Lookahead思想,但是两者对当前的作用大小是不同的,因此需要计算二者的系数,这个系数就称为Attention Coefficient。具体公式如下:

 

                 

 

其中,

 

是Attention函数的参数,详细信息可以参考该论文[18],另外Recurrent的计算公式如下:                                                                                                          

 

其中N1和N2分别表示Lookback以及Lookahead的阶数,

表示attention系数,可以很清晰的看出,该层所学习到的内容由历史以及将来组成。

训练的过程,跟大多数NN一样,都是SGD准则,使用mini-batch,同时用GPU加速,过程不在赘述。

实验结果如下表所示:

         

表1 FSMN与DNN,LSTM的对比

其中基线DNN模型是根据论文[24][25]训练得到的,整体依然采用的CD-DNN-HMM框架。在状态对齐的训练过程中,依然采用标准的GMM-HMM框架,MLE准则。预训练依然采用RBM策略。在DNN训练的过程中,依然采用CE准则,BP更新误差,网络结构是6x2048,输入特征是FB,每帧123维,上下窗长为11,DNN1的激活函数是sigmoid,DNN2采用的是ReLU。

         另外LSTM模型是根据论文[25][26][27]训练得到的,其中cell数为2048,projection节点数为512,输入依然是123维的FB特征,延迟5帧输出,BPTT为16,minibatch为64,另外BLSTM是双向的模型,BLSTM比LSTM多了3个hidden层,以及2048个cell,minibatch改为16,其他都一致。

         FSMN模型,其中sFSMN表示scalar FSMN,vFSMN表示vectorized FSMN,sFSMN的hidden层数为6,每层2048个节点,激活函数为ReLU,输入为123维FB特征,上下窗为3,vFSMN中多了lookback以及lookahead参数,试验中设为50。

从实验结果来看,vFSMN的结果最优,比BLSTM绝对好0.3个点,另外训练的速度是BLSTM的3倍。

 

2. 深度学习与LM

     2.1 基于Recurrent Neural Network的LM

 

         在讨论RnnLM之前,不得不提现在依然处于统治地位的Ngram模型,Ngram是基于马尔科夫假设(Markov Assumption):下一个词的出现仅依赖于它前面的一个或几个词。

假设下一个词的出现依赖它前面的一个词,则有:

p(S)=p(w1)p(w2|w1)p(w3|w1,w2)...p(wn|w1,w2,...,wn-1)=p(w1)p(w2|w1)p(w3|w2)...p(wn|wn-1)

假设下一个词的出现依赖它前面的两个词,则有:

p(S)=p(w1)p(w2|w1)p(w3|w1,w2)...p(wn|w1,w2,...,wn-1)=p(w1)p(w2|w1)p(w3|w1,w2)...p(wn|wn-1,wn-2)

        纵观Ngram的历史,主要在机器翻译,语音识别,拼写纠错,自动文摘等方面应用的很广泛,并取得了很好的效果,可是它本身也有一定的缺陷,比如数据稀疏性问题不能很好的解决,折扣平滑不够鲁棒,另外一个是严格的基于N阶的马尔可夫假设,限制了对更长历史的记忆。

RNN模型是将每个词语映射到一个Compact Contiuous Vector Space里,并且使用Recurrent Connections 将过去更长时间的历史连接起来,从而影响现在的输出,这样更贴近实际。

        RNN的结构一般是3层,输入层,隐藏层和输出层,其中输入与输出层的维数是和词典里词的个数是一致的,隐藏层一般根据实际需要,可以设置为512或1024等,有时为了加速,还加入了Class层,即根据输入的词语先预测该词所属的类,然后在预测在该类里面的词的概率大小,这样可以减少矩阵运算。在论文[1][2][3]中还提出了OOS Nodes也是为了减少矩阵运算量,加快迭代。具体结构如下图所示:

                                                                  

图3 RNN 结构

         另外,在RNN训练的过程中用到了BPTT算法[4],因为隐含层经过不断的迭代,保留了N个隐含层的最新数据,根据微分链式法则,误差需要一直传递下去                                                                                                                                        

图4 BPTT 迭代

另外误差准则,论文[5]中提到的有Cross Entropy

                                                             


Variance Regularisation

                                                             


以及Noise Contrastive Estimation

                                                            


         根据论文[5]的结果所示,从ppl以及wer的角度对比以上三种准则的效果如下表所示:

                                                     

表 2三种准则在50-best的rescoring的结果

         其中选用的训练集为Fisher和AMI[8],总共大小14M,Rnn输入层的节点数为33K,隐含层的节点数为512,输出层为22K,选取常用词汇构成,BPTT参数为5,即只往下传递5层,总共迭代10次。

另外与传统的Ngram对比结果如下:

                                                      

表3 与ngram对比的结果

其中3g,4g是用相同的语料,采用通用的工具srilm来训练的,CRNN是基于Class的RNNLM[6][7]工具训练的,FRNN是采用CUED-RNNLM[5]工具训练的,都是基于CE准则。从表格中可以看出,FRNN的效果最好。

 

2.2 基于Long Short Term Memory的LM

 

         从RNN的结构以及训练的过程来看,RNN的确比Ngram看到的历史更长,利用的信息更多,另外在输入层与隐含层之间的矩阵通过训练后,每一列可以表示one-hot对应的词向量,利用词向量的方式,可以减少数据稀疏性的影响,因为Ngram对未出现的词语是用很硬的折扣平滑方式来分配概率的,这样做存在缺陷。

         更加细致的分析RNN的结构时,会发现,对于任意的连续的输入,都结合上一次的历史,进行相同的操作,也就是不管遇到什么样的词(高频的,低频的,处于不同上下文的),都同样的学习相关的历史,而没有选择对它有重要影响的信息进行学习,导致没有区分性与侧重点,这跟我们生活很像,在生活中,我们并不是对待所有的事物,花同样的精力去学习,肯定是有所侧重,只会花更大的精力学习对自己有重要影响的事,即选择性的学习。

         LSTM[9][13]即是在这样的思想的驱动下出现的。它比RNN在结构上了多了几个门的概念,即输入门,输出门,遗忘门,分别控制对应的输入输出,以及决定着是否需要遗忘,结构如下:

                                                            

图5 LSTM 神经元结构图

 

与RNN结构对比,即是将原始hidden层替换为LSTM层,整体结构如下图所示:

                                                           

图6 基于LSTM的RNN的整体结构

 

         由于多了几个门,在训练阶段即多了几个矩阵相乘的运输量,而且是每次迭代都会产生这种运算量,跟上面的RNN训练过程类似,但是在速度上慢了很多。

训练过程中,权重的更新一般是按如下的公式:

                                                              

F是目标方程,一般情况下是根据最大似然准则来设定的,

是学习率,可以在训练的过程中控制学习的速率,从而控制模型收敛的速率。误差反向传播依然用的是BPTT[10][11][12]的算法,以及SGD的策略,与RNN一致。在这里面学习率调节,直接影响着模型的优劣,以及模型是否收敛等,根据论文[9]所示,在训练开始阶段,可以设置大一些,经过几轮迭代,可以根据在验证集上的ppl的变化幅度,来相应的降低学习率[14]。

       NN语言模型一般是用于Lattice Decoding和Rescoring,一般情况下,Lattice结构是由前缀树构成,在Lattice上每个Node的输出都是唯一的,才可以采用NN语言模型解码,另外结合Beam Pruning,以及Acoustic LM look ahead等算法,详细内容可以参考论文[9][15][16][17]

下表是论文[9]中实验用到的数据集:

                                                    

表4 实验用到的数据集

 

与Kneser-Ney-Smothed 5gram模型,以及rnnlm 工具训练出的模型在Dev以及Test上的效果对比如下:

                                                    

表5 各个模型下的ppl的对比

 

其中LSTM 的Hidden层节点数是300,Class层为1000,整个词典大小为200K,从结果中,可以看出,LSTM模型的效果要比RNN[17]好10个点以上。
       最后由于本人水平有限,在理解剖析论文细节时,难免有不恰当之处,望各位专家多多指正。

 

3. 参考文献

[1] J. Park, X. Liu, M.J.F. Gales, and P.C. Woodland, “Improved neural network based language modelling and adaptation”,Proc. Interspeech, 2010.

[2] H. Le, I. Oparin, A. Allauzen, J. Gauvain, and F. Yvon, “Struc-tured output layer neural network language models for speech recognition”, IEEE Trans Audio, Speech, and Language Pro-cessing, vol. 21, no. 1, pp. 197–206, 2013.

[3] X. Liu, Y. Wang, X. Chen, M.J.F. Gales, and P.C. Woodland,“Efficient lattice rescoring using recurrent neural network lan-guage models”, Proc. ICASSP, 2014.

[4] D.E. Rumelhart, G.E. Hinton, and R.J. Williams, Learningrepresentations by back-propagating errors, MIT Press, Cam-bridge, MA, USA, 1988.

[5] T. Mikolov, S. Kombrink, L. Burget, J.H. Cernocky, and S.Khudanpur, “Cued-rnnlm—an open-source toolkit for efficient traning and evaluation of recurrent neural network language models”, Proc. ICASSP, 2011.

[6] T. Mikolov, S. Kombrink, A. Deoras, L. Burget, and J. Cer-nocky, “Recurrent neural network language modeling toolkit”,Proc. ASRU Workshop, 2011.

[7] X. Chen, Y. Wang, X. Liu, M.J.F. Gales, and P.C. Woodland,“Efficient training of recurrent neural network language mod-els using spliced sentence bunch”, Proc. Interspeech, 2014.

[8] I. McCowan, J. Carletta, W. Kraaij, S. Ashby, S. Bourban, M.Flynn, M. Guillemot, T. Hain, J. Kadlec, V. Karaiskos, M. Kro-nenthal, G. Lathoud, M. Lincoln, A. Lisowska, W. Post, D.Reidsma, and P. Wellner, “The AMI meeting corpus: A pre-announcement,” Machine learning for multimodal interaction,pp. 28–39. Springer, 2006.

[9] Martin Sundermeyer, Ralf Schl ̈uter, Hermann Ney,“rwthlm – The RWTH Aachen University Neural Network Language Modeling Toolkit”, Proc. ICASSP, 2016.

[10] Rumelhart, D. E., Hinton, G. E., Williams, R. J., “Learning In-ternal Representations by Error Propagation”, in: McClelland,J. L., Rumelhart, D. E., PDP Research Group, The, “Parallel Dis-tributed Processing”, The MIT Press, 1986, pp. 318–362.

[11] Werbos, Paul J., “Backpropagation Through Time: What It Doesand How to Do It”, Proceedings of the IEEE 1990, Vol. 78, No. 10,pp.1550–1560

[12] Williams, R. J., Zipser, D., “Gradient-Based Learning Algorithmsfor Recurrent Networks and Their Computational Complexity”,in: Chauvain, Y., Rumelhart, D. E., “Backpropagation: The-ory, Architectures, and Applications”, Psychology Press, 1995,pp. 433–486

[13] Graves, A., Mohamed, G., Hinton, G., “Speech Recognition with Deep Recurrent Neural Networks”, Proc. of ICASSP 2013, pp.6645–6649

[14] Hinton, G., “Neural Networks for Machine Learning”, Online Course at coursera.org, Lecture 6, 2012

[15] Auli, M., Galley, M., Quirk, C., and Zweig, G., “Joint Lan-guage and Translation Modeling with Recurrent Neural Net-works”, Proc. of EMNLP 2013, pp. 1044–1054

[16] Sundermeyer, M., T ̈uske, Z., Schl ̈uter, R., and Ney, H., “Lattice Decoding and Rescoring with Long-Span Neural Network Lan-guage Models”, Interspeech 2014, accepted for publication

[17] Mikolov, T., Deoras, A., Kombrink, S., Burget, L., and Cˇernock ́y,J. H., “Empirical Evaluation and Combination of Advanced Lan-guage Modeling Techniques”, Proc. of Interspeech 2011, pp. 605–608

[18] Shiliang Zhang, Cong Liu, Hui Jiang, Si Wei, Lirong Dai, Yu Hu,” Feedforward Sequential Memory Networks: A New Structure to Learn Long-term Dependency”, arXiv:1512.08301v2 [cs.NE] 5 Jan 2016

[19]F. Seide, G. Li, and D. Yu, “Conversational speech transcription using context-dependent deep neural networks,” in Proc. Interspeech,2011.

[20]Kanishka Rao, etc., Flat Start Training of CD-CTC-SMBR LSTM RNN Acoustic Models, ICASSP 2016

[21]Tara Sainath,etc.,Convolutional, Long Short-Term Memory, Fully Connected Deep Neural Networks,ICASSP 2015

[22]Bahdanau, D., Cho, K., and Bengio, Y. Neural machine translation by jointly learning to align and translate. arXiv preprint arXiv:1409.0473, 2014.

[23]Oppenheim, A. V., Schafer, R. W., Buck, J. R., and et al. Discrete-time signal processing, volume 2. Prentice-hall Englewood Cliffs, 1989.

[24]Dahl, G.E., Yu, D., Deng, L., and Acero, A. Contextdependent pre-trained deep neural networks for largevocabulary speech recognition. IEEE Transactions on Audio, Speech, and Language Processing, 20(1):30–42, 2012.

[25] Hochreiter, S. and Schmidhuber, J. Long short-term memory. Neural computation, 9(8):1735–1780, 1997.

[26] Sak, H., Senior, A., and Beaufays, F. Long short-term memory based recurrent neural network architectures for large vocabulary speech recognition. arXiv:1402.1128, 2014.

[27]Sainath, T.N., Mohamed, A., Kingsbury, B., and Ramabhadran, B. Deep convolutional neural networks for LVCSR. In Proceedings of IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), pp. 8614–8618, 2013.

阅读原文请点击

2018-12-24 10:16:11 a493823882 阅读数 2063
  • 云从科技:详解CNN-pFSMN模型以及在语音识别中的应用

    近日,云从科技在语音识别技术上取得重大突破,在全球最大的开源语音识别数据集Librispeech上刷新了世界纪录,错词率(Worderrorrate,WER)降到了2.97%,将Librispeech的WER指标提升了25%,大幅刷新原先记录。本视频课程讲解了:大规模词汇连续语音识别,LVCSR前沿与最新进展,和CNN-pFSMN声学模型。

    969 人正在学习 去看看 CSDN讲师

转自知乎

作者:王赟 Maigo
链接:https://www.zhihu.com/question/35833334/answer/67944671
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

语音识别系统的目的,是把语音转换成文字。具体来说,是输入一段语音信号,要找一个文字序列(由词或字组成),使得它与语音信号的匹配程度最高。这个匹配程度,一般是用概率表示的。用X表示语音信号,W表示文字序列,则要求解的是下面这个问题:
W^* = \arg \max_W P(W|X)

一般认为,语音是由文字产生的(可以理解成人们先想好要说的词,再把它们的音发出来),所以上式中条件概率的顺序就比较别扭了。没关系,我们有贝叶斯公式,可以把条件和结论拧过来:
W^* = \arg \max_W \frac{P(X|W) P(W)}{P(X)} = \arg \max_W P(X|W) P(W)
第二步省略分母是因为我们要优化的是W,而P(X)不含W,是常数。

上面这个方程,就是语音识别里最核心的公式。可以这样形象地理解它:我们要找的W,需要使得P(W)P(X|W)都大。P(W)表示一个文字序列本身的概率,也就是这一串词或字本身有多“像话”;P(X|W)表示给定文字后语音信号的概率,即这句话有多大的可能发成这串音。计算这两项的值,就是语言模型声学模型各自的任务。

====================

先说语言模型(language model)。语言模型一般利用链式法则,把一个句子的概率拆解成其中每个词的概率之积。设W是由w_1, w_2, \ldots, w_n组成的,则P(W)可以拆成:
P(W) = P(w_1) P(w_2|w_1) P(w_3|w_1,w_2) \ldots P(w_n|w_1,w_2,\ldots,w_{n-1})
每一项都是在已知之前所有词的条件下,当前词的概率。

不过,当条件太长的时候,概率就不好估计了,所以最常见的做法是认为每个词的概率分布只依赖于历史中最后的若干个词。这样的语言模型称为n-gram模型,在n-gram模型中,每个词的概率分布只依赖于前面n-1个词。例如在bigram(bi-是2的前缀)模型中,P(W)是拆成下面这种形式的:
P(W) = P(w_1) P(w_2|w_1) P(w_3|w_2) \ldots P(w_n|w_{n-1})
n-gram模型中的n越大,需要的训练数据就越多。一般的语音识别系统可以做到trigram(n=3);Google似乎可以做到n=7。

为了利用到历史中比较久远的信息,人们还创造了许多种其它的语言模型,例如基于神经网络的语言模型。由于训练数据量的限制,这些模型单独使用时性能一般并不好,需要跟n-gram模型结合使用。

====================

再说声学模型(acoustic model)。声学模型的任务是计算P(X|W),即给定文字后,发出这段语音的概率。首先第一个问题就是:怎么才能知道每个单词应该发什么音呢?这就需要另一个模块,叫作词典(lexicon),它的作用就是把单词串转换成音素串。词典一般认为是跟声学模型、语言模型并列的模块。词典中会遇到一词多音的问题,但这里就不节外生枝了。

有了词典的帮助,声学模型就知道给定的文字串该依次发哪些音了。不过,为了计算语音与音素串的匹配程度,还需要知道每个音素的起止时间。这是通过动态规划算法来进行的,利用动态规则算法,可以高效地找到音素的分界点,使得每一段语音与音素的匹配程度(用概率表示)之积最大。实际使用的算法称为Viterbi算法,它不仅仅考虑了每一段语音与音素的匹配程度,还考虑了在各个音素之间转换的概率;后者是通过隐马尔可夫模型(HMM)估计出来的。
(实际系统中使用的是比音素更小的单位,不过原理是一样的,也不展开了)

在求音素分界点的过程中,以及在有了分界点后计算P(X|W)时,声学模型都需要知道怎样计算一个音素与一段语音信号的匹配程度。要做这件事,需要找到一种合适的表示语音信号的方法。一般是把语音信号分成许多帧,对于每一帧,通过傅里叶变换等一系列操作,把它转换成一个特征向量。最常用的特征是MFCC,具体提取过程可以参见语音识别技术中提取的声音特征的参数具体指什么? - 频谱分析。从训练数据中,我们可以提取出大量的特征向量,以及它们对应的音素;利用这些数据,就可以训练从特征到音素的分类器。前些年最常用的分类器是高斯混合模型(GMM),它的大致原理是估计出每个音素的特征向量的分布,然后在识别阶段,计算每一帧的特征向量x_t由相应音素s_i产生的概率P(x_t|s_i),把每一帧的概率相乘,就得到P(X|W)。现在,神经网络渐渐火了起来,它可以直接给出P(s_i|x_t),用贝叶斯公式可以转换成P(x_t|s_i),再相乘得到P(X|W)

====================

从上面的叙述来看,求文字串、计算语言模型概率、求音素串、求音素分界点、计算声学模型概率几个步骤似乎是依次进行的。其实不然,因为文字串、音素分界点都有非常多种可能,枚举是不现实的。实际中,这几个步骤同时进行并互相制约,随时砍掉不够优的可能,最终在可接受的时间内求出最优解W^* = \arg \max_W P(W|X)

2016-06-29 23:12:01 zjm750617105 阅读数 24713
  • 云从科技:详解CNN-pFSMN模型以及在语音识别中的应用

    近日,云从科技在语音识别技术上取得重大突破,在全球最大的开源语音识别数据集Librispeech上刷新了世界纪录,错词率(Worderrorrate,WER)降到了2.97%,将Librispeech的WER指标提升了25%,大幅刷新原先记录。本视频课程讲解了:大规模词汇连续语音识别,LVCSR前沿与最新进展,和CNN-pFSMN声学模型。

    969 人正在学习 去看看 CSDN讲师

本文主要受参考自: http://blog.csdn.net/by21010/article/details/51506292  以及: https://www.zhihu.com/question/35833334

最近看essen源码,感觉对于ASR 的一下之前的比较基础的算法很生疏, 在知乎上看到这个链接,感觉讲的比较通俗易懂,拿来再理解一下。

decoder是根据字典, 声学模型和语音模型,将输入的语音特征失量序列转化为字符序列。

声学模型是对声学、语音学、环境的变量、说话人性别、 口音等的差异的知识表示, 而语言模型是对一组字序列构成的知识表示。


声学模型用lstm+ctc训练,得到语音特征到音素的映射;  语言模型用SRILM工具做LM 的训练得到 3-gram and 4-gram, 是词与词、词与句子的映射,  字典是字词对应的音素index集合,是字词 和 音素之间的映射

‘’’

haibing注: 所谓声学模型就是把语音的声学特征分类对应到(解码)音素或字词这样的单元  语言模型接着把字词解码成一个完整的句子

‘’‘


先说语言模型: 

语言模型表示某一字序列发生的概率,一般采用链式法则,把一个句子的概率拆解成器中的每个词的概率之积。设W是由w1, w2,...,wn组成的,则P(W)可以拆成(由条件概率公式和乘法公式):

P(W) = P(w1)P(w2/w1)P(w3/w1,w2)...P(wn/w1,w2,..wn-1),  每一项都是在之前所有词的概率条件下,当前词的概率。

由马尔卡夫模型的思想,最常见的做法就是用N-元文法,即假定某一个字的输出只与前面N-1个字出现的概率有关系, 这种语言模型叫做 n-gram模型(一般n取3, 即t rigram),  这时候我们就可以这么表示:

 P(W) = P(w1)P(w2|w1)P(w3|w1,w2)P(w4| w1,w2,w3)...P(wn/wn-1,wn-2,...,w1)   #条件太长的时候,概率就不好估计了,三元文法只取前两个词

         = P(w1)P(w2|w1)P(w3|w1,w2)P(w4| w2,w3)...P(wn/wn-1,wn-2) 

对于其中的每一项条件概率都可以用贝叶斯公式求出, 在所有的语料中统计出相邻的字发生的概率,再统计出单个字出现的概率, 代入即可。 

‘’‘

wang yun ( https://www.zhihu.com/people/maigo )注: 

做一下解释, 这个地方的n-gram是根据字符串序列建立的,所以一个n-gram就相当于词组, 必然会有 一些词组没有出现过,但是也存在发生的概率,所以需要算法生成这些生僻词组的概率。

直观的将: n大了之后主要的问题是许多n-gram在训练数据中没有出现过。如果一个n-gram整体没有出现过,但去掉一个词后得到的(n-1)-gram出现过,那么估计出的概率就是0;如果连这个(n-1)-gram都没有出现过,那么概率就无法估计了。常用的解决的办法就是:smoothing(eg: Good-Turing smoothing)和 fall back to lower-order n-grams(采用更小的n-gram)。 见《数学之美》

’‘’

再说声学模型: 

声学模型的任务是计算P(X/W), 即给定文字之后发出这段语音的概率(最后利用贝叶斯,求P(X/W)是使用)。 首先第一问题: 怎么才能知道每个单词发什么音呢? 这就需要另外一个模块,叫做词典,看eesen的源码在数据准备阶段就是先求出词对应音素的dict, 它的作用就是把单词串转化成音素串,然后再求的语言模型和 训练声学模型(用lstm+ctc 训练声学模型).

有了dict的帮助,声学模型就知道给定的文字串该依次发哪些音了。不过为了计算语音跟音素串的匹配程度,还需要知道每个音素的起止时间。 这是利用动归来进行的,可以高效的找到音素的分界点,使得没一段语音与音素的匹配程度(用概率表示)之积最大。实际使用的算法称为viterbi算法,它不仅仅考虑了每一段语音和音素的匹配程度,还考虑了各个音素之间转换的概率(转换概率通过HMM估计) 实际中使用的比音素更小的单位,原理一样(不是很确定,值得是一帧数据(25ms)吗,一帧不到不到一个音素的长度?)

在求音素分界点的过程中,以及在有了分界点后计算P(X|W)时,声学模型都需要知道怎样计算一个音素与一段语音信号的匹配程度。要做这件事,需要找到一种合适的表示语音信号的方法。一般是把语音信号分成许多帧,对于每一帧,通过傅里叶变换等一系列操作,把它转换成一个特征向量。最常用的特征是MFCC,从训练数据中,我们可以提取出大量的特征向量,以及它们对应的音素;利用这些数据,就可以训练从特征到音素的分类器。前些年最常用的分类器是高斯混合模型(GMM),它的大致原理是估计出每个音素的特征向量的分布,然后在识别阶段,计算每一帧的特征向量x_t由相应音素s_i产生的概率P(x_t|s_i),把每一帧的概率相乘,就得到P(X|W)。现在,神经网络渐渐火了起来,它可以直接给出P(s_i|x_t),用贝叶斯公式可以转换成P(x_t|s_i),再相乘得到P(X|W)

整体思路:
具体来说就是输入一段语音信号,要找到一个文字序列(由字或者词组成),是的它与语音信号的匹配程度最高。这个匹配程度,一般都是用概率来表示的,用X表示语音信号,用W表示文字序列,则要解的是下面这个问题:W^* = \arg \max_W P(W|X)
但是一般语音是由文字产生的,已知文字才能发出语音,所以对于上面的条件概率公式我们想要已知结果求该条件下发生概率,这时候自然而然就想到贝叶斯公式:
W^* = \arg \max_W \frac{P(X|W) P(W)}{P(X)} = \arg \max_W P(X|W) P(W) 由于我们要优化W, P(X) 可以看作常数,可以省略分母。

由上边的步骤来看,求文字串、计算语言模型概率、求音素串、求音素分界点、计算声学模型概率几个步骤似乎是依次进行的。其实不然,在实际编码过程中,因为文字串、音素分界点都有非常多种可能,枚举是不现实的。实际中,这几个步骤同时进行并互相制约,随时砍掉不够优的可能,最终在可接受的时间内求出最优解: 
W* = argmaxP(W|X)



2017-02-17 21:52:06 quheDiegooo 阅读数 11226
  • 云从科技:详解CNN-pFSMN模型以及在语音识别中的应用

    近日,云从科技在语音识别技术上取得重大突破,在全球最大的开源语音识别数据集Librispeech上刷新了世界纪录,错词率(Worderrorrate,WER)降到了2.97%,将Librispeech的WER指标提升了25%,大幅刷新原先记录。本视频课程讲解了:大规模词汇连续语音识别,LVCSR前沿与最新进展,和CNN-pFSMN声学模型。

    969 人正在学习 去看看 CSDN讲师

在上一章语音识别过程中提到的P(O|)称做观测最大释然,由声学模型计算可得,本章就主要描述HMM+GMM来计算最大释然的过程。

首先回顾一下:在解码过程中


P(O|)由声学模型训练得到,

P(O|)是W的似然函数,结合之前讲述的声学特征也就是说,在给定的W情况,使得当前的特征向量(MFCC)的概率最大,结合HMM的概念,也就是说在在t时刻给定状态qi 的前提下,求输出O的概率,即p(ot|qi) ,即矩阵B,状态对应的是word,phone或者subphone,在LVCSR中对应的是subphone

在解码阶段,在固定观测向量ot 的前提下,我们需要计算每一个HMM状态可能产生的概率,然后找到最大可能的状态(subphone)序列,所以训练过程就是计算观测似然矩阵B的过程。

理想的方式计算MFCC的时候,可以把输入的帧映射为一些离散的量化符号方便计算,如下图所示


然后这么计算似然是有问题的,因为输入音频是连续的,特征基本变化很大的,很难进行比较好的聚类,因此提出连续空间的概率密度函数(PDF),最常用的计算声学似然的方式是高斯混合模型,即GMM模型(当然SVM,CRF,NN也可以)。

高斯分布也是一种正态分布,函数如下所示


不同的均值,方差下,对应的高斯分布如下所示:


离散情况下,均值,方差计算如下所示:

 


当高斯函数用来当做概率密度函数时,曲线下的面积和应该为1,如下所示,灰色区域面积为0.341



我们可以用单GMM pdf来估测一个特定的HMM状态j,产生一个单一维度的声学特征向量O的概率,(假设

ot 服从正态分布),换句话说,就是用对一维特征来说,一元高斯来代表观测似然函数bj (ot )  ,

假设HMM状态j 对应的均值方式是μj 和σ2j  ,那么计算似然  bj (ot ) 可以通过Gaussian PDF来计算,如下所示:


有了以上公式,我们就可以来进行HMM decoding了

然而如何计算均值和方差呢,按理来说可以通过如下公式进行计算


然而,状态是HMM隐藏状态,我们不知道Ot是由哪个状态产生的,

但是我们可以通过HMM中t时刻在状态i的概率来按比例分配,即把每个Ot分配给每个可能的状态i。

ξ(i) 记做在t时刻状态i产生Ot的概率,

那么通过Baum-Welch 迭代算法进行计算,如下所示:


也叫作HMM前向-后向(Baum-Welch)训练。

以上讨论的是一维特征,在实际中,MFCC是39维特征,因此我们使用了多元高斯模型,

多元高斯分布函数如下所示:


协方差计算公式如下:


则,高斯概率似然函数(o如下所示:


因为对角协方差计算量更小,所以可以简化为对角协方差

可以表述为:在t时刻,状态j产生声学特征向量Ot的似然函数可以表述为对角协方差多元高斯,

上述公式可以简化成如下公式



ξ(i) 记做t时刻,状态i产生Ot的似然对应均值方差为:


以上的前提声学特征符合正态分布,但是实际倒谱特征MFCC不是正态分布,因此我们可以改进为

加权的混合多远高斯模型,即GMM,对应函数公式如下所示:


对应的输出似然函数b j (ot 如下所示:


把ξtm(j)记做t时刻,状态j,在m元 混合模型情况下产生声学特征Ot的概率,公式如下


对应均值方差,同样可以由Baum-Welch 迭代算出来,公式如下:


在实际计算中,一个句子的似然是一串概率相乘,导致概率数值非常低,如.00000001 = 10容易下溢出,而且不方便计算,,所以常常用log来计算,则上述输出似然函数(o)可以改写如下所示


重写可得:


其中C为:


C为常数,可以再decoding之前提前计算出来,节省计算时间

以上就是GMM在训练声学模型中的应用。

接下来会写HMM和GMM结合训练声学模型的实践,敬请期待!









2017-10-20 14:45:35 weixin_34273481 阅读数 52
  • 云从科技:详解CNN-pFSMN模型以及在语音识别中的应用

    近日,云从科技在语音识别技术上取得重大突破,在全球最大的开源语音识别数据集Librispeech上刷新了世界纪录,错词率(Worderrorrate,WER)降到了2.97%,将Librispeech的WER指标提升了25%,大幅刷新原先记录。本视频课程讲解了:大规模词汇连续语音识别,LVCSR前沿与最新进展,和CNN-pFSMN声学模型。

    969 人正在学习 去看看 CSDN讲师

语音识别技术是人机交互技术的重要组成部分,而语音识别中的声学模型是语音识别技术中的核心所在,堪称重中之重。阿里巴巴iDST智能语音交互团队最新的LFR-DFSMN模型相对于之前的LFR-LCBLSTM模型可以达到训练加速3倍、识别加速2倍、识别错误率降低20%和最终模型大小压缩50%的效果,实现了语音识别的迭代速度、识别成本、服务质量的全面提升。

一、语音识别背景介绍  

语音识别技术一直都是人机交互技术的重要组成部分。有了语音识别技术,机器就可以像人类一样听懂说话,进而能够思考、理解和反馈。近几年随着深度学习技术的使用,基于深度神经网络的语音识别系统性能获得了极大的提升,开始走向实用化。基于语音识别的语音输入、语音转写、语音检索和语音翻译等技术得到了广泛的应用。阿里巴巴iDST智能语音交互团队一直以来也致力于语音识别技术的研究,同时注重技术的产品落地,在工业界大规模的问题上将技术真正发扬光大去解决实际的问题。

2016年年初iDST就在工业界第一次上线了基于Latency Controlled-BLSTM-DNN hybrid的语音识别系统,这也是BLSTM模型在工业界第一次进行实时语音识别服务。相对于早期基于DNN的声学模型,以及现在工业界大规模采用的基于LSTM的声学模型,iDST的这种声学模型既保持了BLSTM声学模型的高准确率的优点,又通过Latency Control设计避免了BLSTM声学模型带来的高延时的缺点,可谓是“一举两得(更多阅读请查阅之前的分享博客[1])。2016年底,通过结合Lower Frame Rate技术,iDST智能语音交互团队进一步优化了该声学模型,一举将解码时间加速了三倍以上,通俗点说就是把语音识别服务成本降低了三倍以上,为语音识别技术走入各行各业成为基础设施打下坚实基础。在刚刚结束的云栖大会上,提到了iDST智能语音交互团队关于语音识别声学模型的一个最新的技术进展,即LFR-DFSMN(Lower Frame Rate-Deep Feedforward Sequential Memory Networks)。本文将介绍这一声学模型的研究背景,以及我们的具体实现工作。

二、语音识别声学模型回顾                                                                                            

463dd42c8f99b5f1c088862f0ae1999777b55ae0

图 1. 基于DNN-HMM的语音识别系统框图


目前主流的语音识别系统普遍采用基于深度神经网络和隐马尔可夫(Deep Neural Networks-Hidden Markov Model, DNN-HMM)的声学模型,其模型结构如图 1所示。声学模型的输入是传统的语音波形经过加窗、分帧,然后提取出来的频谱特征,如 PLP, MFCC 和 FBK等。而模型的输出⼀般采用不同粒度的声学建模单元,例如单音素 (mono-phone)、单音素状态、绑定的音素状态 (tri-phone state) 等。从输入到输出之间可以采用不同的神经网络结构,将输入的声学特征映射得到不同输出建模单元的后验概率,然后再结合HMM进行解码得到最终的识别结果。

最早采用的网络结构是前馈全连接神经网路(Feedforward Fully-connected Neural Networks, FNN)。FNN实现固定输入到固定输出的一对一映射,其存在的缺陷是没法有效利用语音信号内在的长时相关性信息。一种改进的方案是采用基于长短时记忆单元(Long-Short Term Memory,LSTM)的循环神经网络(Recurrent Neural Networks,RNN)。LSTM-RNN通过隐层的循环反馈连接,可以将历史信息存储在隐层的节点中,从而可以有效的利用语音信号的长时相关性。进一步的通过使用双向循环神经网络(Bidirectional RNN),可以有效的利用语音信号历史以及未来的信息,更有利于语音的声学建模。基于循环神经网络的语音声学模型相比于前馈全连接神经网络可以获得显著的性能提升。但是循环神经网络相比于前馈全连接神经网络模型更加复杂,往往包含更多的参数,这会导致模型的训练以及测试都需要更多的计算资源。另外基于双向循环神经网络的语音声学模型,会面临很大的时延问题,对于实时的语音识别任务不适用。现有的一些改进的模型例如基于时延可控的双向长短时记忆单元(Latency Controlled LSTM,LCBLSTM )[2-3],以及前馈序列记忆神经网络(Feedforward Sequential Memory Networks,FSMN)[3-5]。去年我们在工业界第一个上线了基于LCBLSTM的语音识别声学模型。配合阿里的大规模计算平台和大数据,采用多机多卡、16bit量化等训练和优化方法进行声学模型建模,取得了相比于FNN模型约17-24%的相对识别错误率下降。

三、FSMN模型的前世今生

1.     FSMN模型

 e1524ba8ff9f220352418b922ff5803f155993ee 

2. FSMN模型结构以及和RNN的对比


FSMN是近期被提出的一种网络结构,通过在FNN的隐层添加一些可学习的记忆模块,从而可以有效的对语音的长时相关性进行建模。FSMN相比于LCBLSTM不仅可以更加方便的控制时延,而且往往也能获得更好的性能,需要的计算资源也更少。但是标准的FSMN很难训练非常深的结构,会由于梯度消失问题导致训练效果不好。而深层结构的模型目前在很多领域被证明具有更强的建模能力。因而针对此我们提出了一种改进的FSMN模型,称之为深层的FSMN(Deep-FSMN, DFSMN)。进一步的我们结合LFR(lower frame rate)技术构建了一种高效的实时语音识别声学模型,相比于去年我们上线的LCBLSTM声学模型可以获得超过20%的相对性能提升,同时可以获得2-3倍的训练以及解码的加速,可以显著的减少我们的系统实际应用时所需要的计算资源。

2.     FSMN到cFSMN的发展历程

最早提出的FSMN的模型[3]结构如图 2(a)所示,其本质上是一个前馈全连接神经网络,通过在隐层旁添加一些记忆模块(memory block)来对周边的上下文信息进行建模,从而使得模型可以对时序信号的长时相关性进行建模。记忆模块采用如图 2(b)所示的抽头延迟结构将当前时刻以及之前 N 个时刻的隐层输出通过一组系数编码得到一个固定的表达。FSMN的提出是受到数字信号处理中滤波器设计理论的启发:任何无限响应冲击(Infinite Impulse Response, IIR)滤波器可以采用高阶的有限冲击响应(Finite Impulse Response, FIR)滤波器进行近似。从滤波器的角度出发,如图 2(c)所示的RNN模型的循环层就可以看作如图 2(d)的一阶IIR滤波器。而FSMN采用的采用如图 2(b)所示的记忆模块可以看作是一个高阶的FIR滤波器。从而FSMN也可以像RNN一样有效的对信号的长时相关性进行建模,同时由于FIR滤波器相比于IIR滤波器更加稳定,因而FSMN相比于RNN训练上会更加简单和稳定。

根据记忆模块编码系数的选择,可以分为:1)标量FSMN(sFSMN);2)矢量FSMN(vFSMN)。sFSMN 和 vFSMN 顾名思义就是分别使用标量和矢量作为记忆模块的编码系数。sFSMN和vFSMN记忆模块的表达分别如下公式:

b4ed4bebbfda36e36d8370610707f7740c327476

以上的FSMN只考虑了历史信息对当前时刻的影响,我们可以称之为单向的FSMN。当我们同时考虑历史信息以及未来信息对当前时刻的影响时,我们可以将单向的FSMN进行扩展得到双向的FSMN。双向的sFSMN和vFSMN记忆模块的编码公式如下:

a3c39b5cd1987d7b6dd6d27955756b1385ad0f0f

这里N1和N2分别代表回看(look-back)的阶数和向前看(look-ahead)的阶数。我们可以通过增大阶数,也可以通过在多个隐层添加记忆模块来增强FSMN对长时相关性的建模能力。

4df9c3503840ad148b28e3afbd0bd2b21f1c07da

图 3. cFSMN结构框图


FSMN相比于FNN,需要将记忆模块的输出作为下一个隐层的额外输入,这样就会引入额外的模型参数。隐层包含的节点越多,则引入的参数越多。研究[4]结合矩阵低秩分解(Low-rank matrix factorization)的思路,提出了一种改进的FSMN结构,称之为简洁的FSMN(Compact FSMN,cFSMN)。如图3所示,是一个第l个隐层包含记忆模块的cFSMN的结构框图。对于cFSMN,通过在网络的隐层后添加一个低维度的线性投影层,并且将记忆模块添加在这些线性投影层上。进一步的,cFSMN对记忆模块的编码公式进行了一些改变,通过将当前时刻的输出显式的添加到记忆模块的表达中,从而只需要将记忆模块的表达作为下一层的输入。这样可以有效的减少模型的参数量,加快网络的训练。具体的,单向和双向的cFSMN记忆模块的公式表达分别如下:

31345763ac5b86423805c57ad69386f9d8d87081

四、LFR-DFSMN声学模型

1.     Deep-FSMN (DFSMN)网络结构

d55827e272b223c6d40bd6e5f52cdfbd42fcfbc2
如图 4是我们进一步提出的Deep-FSMN(DFSMN)的网络结构框图,其中左边第一个方框代表输入层,右边最后一个方框代表输出层。我们通过在cFSMN的记忆模块(红色框框表示)之间添加跳转连接(skip connection),从而使得低层记忆模块的输出会被直接累加到高层记忆模块里。这样在训练过程中,高层记忆模块的梯度会直接赋值给低层的记忆模块,从而可以克服由于网络的深度造成的梯度消失问题,使得可以稳定的训练深层的网络。我们对记忆模块的表达也进行了一些修改,通过借鉴扩张(dilation)卷积[6]的思路,在记忆模块中引入一些步幅(stride)因子,具体的计算公式如下:
951d476659e8c74093c2dab4d21506a2f13a6d7e
对于实时的语音识别系统我们可以通过灵活的设置未来阶数来控制模型的时延,在极端情况下,当我们将每个记忆模块的未来阶数都设置为0,则我们可以实现无时延的一个声学模型。对于一些任务,我们可以忍受一定的时延,我们可以设置小一些的未来阶数。相比于之前的cFSMN,我们提出的DFSMN优势在于,通过跳转连接可以训练很深的网络。对于原来的cFSMN,由于每个隐层已经通过矩阵的低秩分解拆分成了两层的结构,这样对于一个包含4层cFSMN层以及两个DNN层的网络,总共包含的层数将达到13层,从而采用更多的cFSMN层,会使得层数更多而使得训练出现梯度消失问题,导致训练的不稳定性。我们提出的DFSMN通过跳转连接避免了深层网络的梯度消失问题,使得训练深层的网络变得稳定。需要说明的是,这里的跳转连接不仅可以加到相邻层之间,也可以加到不相邻层之间。跳转连接本身可以是线性变换,也可以是非线性变换。具体的实验我们可以实现训练包含数十层的DFSMN网络,并且相比于cFSMN可以获得显著的性能提升。从最初的FSMN到cFSMN不仅可以有效的减少模型的参数,而且可以获得更好的性能[4]。进一步的在cFSMN的基础上,我们提出的DFSMN,可以更加显著的提升模型的性能。如下表是在一个2000小时的英文任务上基于BLSTM,cFSMN,DFSMN的声学模型性能对比。从下表中可以看到,在2000小时这样的任务上,DFSMN模型可以获得比BLSTM声学模型相对14%的错误率降低,显著提高了声学模型的性能。

Model

BLSTM

cFSMN

DFSMN

WER%

10.9

10.8

9.4


2.     基于LFR-DFSMN的语音识别声学模型

80606de5ad682b76cb6414cc3a1e612ef5bcb73b

5. LFR-DFSMN声学模型结构框图

目前的声学模型,输入的是每帧语音信号提取的声学特征,每帧语音的时长通常为10ms,对于每个输入的语音帧信号会有相对应的一个输出目标。最近有研究提出一种低帧率(Low Frame Rate,LFR)[7]建模方案:通过将相邻时刻的语音帧进行绑定作为输入,去预测这些语音帧的目标输出得到的一个平均输出目标。具体实验中可以实现三帧(或更多帧)拼接而不损失模型的性能。从而可以将输入和输出减少到原来的三分之一甚至更多,可以极大的提升语音识别系统服务时声学得分的计算以及解码的效率。我们结合LFR和以上提出的DFSMN,构建了如图 5的基于LFR-DFSMN的语音识别声学模型,经过多组实验我们最终确定了采用一个包含10层cFSMN层+2层DNN的DFSMN作为声学模型,输入输出则采用LFR,将帧率降低到原来的三分之一。识别结果和去年我们上线的最好的LCBLSTM基线比较如下表所示。通过结合LFR技术,我们可以获得三倍的识别加速。从上表中可以看到,在实际工业规模应用上,LFR-DFSMN模型比LFR-LCBLSTM模型可以获得20%的错误率下降,展示了对大规模数据更好的建模特性。

CER%

产品线A

产品线B

LFR-LCBLSTM

18.92

10.21

LFR-DFSMN

15.00(+20.72%)

8.04(21.25%) 


五、基于多机多卡的大数据声学模型训练

实际的语音识别服务通常会面对非常复杂的语音数据,语音识别声学模型一定要尽可能的覆盖各种可能的场景,包括各种对话、各种声道、各种噪音甚至各种口音,这就意味着海量的数据。而如何应用海量数据快速的训练声学模型并上线服务,就直接关系到业务相应速度。我们利用阿里的Max-Compute计算平台和多机多卡并行训练工具,在使用8机16GPU卡、训练数据为5000小时的情况下,关于LFR-DFSMN声学模型和LFR-LCBLSTM的训练速度如下表:

 

处理一个epoch需要的时间

LFR-LCBLSTM

10.8小时

LFR-DFSMN

3.4小时

相比于基线LCBLSTM模型,每个epoch DFSMN可以获得3倍的训练速度提升。在2万小时的数据量上训练LFR-DFSMN,模型收敛一般只需要3-4个epoch,因此在16GPU卡的情况下,我们可以在2天左右完成2万小时数据量的LFR-DFSMN声学模型的训练。

六、解码延时、识别速度和模型大小

设计更为实用化的语音识别系统,我们不仅需要尽可能的提升系统的识别性能,而且需要考虑系统的实时性,这样才能给用户提供更好的体验。此外在实际应用中我们还需要考虑服务成本,因而对于语音识别系统的功耗也有一定的要求。传统的FNN系统,需要使用拼帧技术,解码延迟通常在5-10帧,大约50-100ms。而去年上线的LCBLSTM系统,解决了BLSTM的整句延迟的问题,最终可以将延时控制在20帧左右,大约200ms。对于一些对延时有更高要求的线上任务,还可以在少量损失识别性能的情况下(0.2%-0.3%绝对值左右),将延迟控制在100ms,完全可以满足各类任务的需求。LCBLSTM相比于最好的FNN可以获得超过20%的相对性能提升,但是相同CPU上识别速度变慢(即功耗高),这主要是由模型的复杂度导致。

我们最新的LFR-DFSMN,通过LFR技术可以将识别速度加速3倍以上,进一步的DFSMN相比于LCBLSTM在模型复杂度上可以再降低3倍左右。如下表是我们在一个测试集上统计的不同的模型需要的识别时间,时间越短则表示我们所需要的计算功耗越低:

模型

整个测试集识别所需要的时间

LCBLSTM

956

DFSMN

377

LFR-LCBLSTM

339

LFR-DFSMN

142

关于LFR-DFSMN的解码时延问题,我们可以通过减小记忆模块滤波器的向未来看的阶数来减小时延。具体实验中我们验证了不同的配置,当我们将LFR-DFSMN的延时控制在5-10帧时,大致只损失相对3%的性能。 此外,相对于复杂的LFR-LCBLSTM模型,LFR-DFSMN模型具有模型精简的特点,虽然有10层DFSMN,但整体模型大小只有LFR-LCBLSTM模型的一半,模型大小压缩了50%。


参考文献

  • [1] https://yq.aliyun.com/articles/2308?spm=5176.100244.teamhomeleft.53.ifFpZn
  • [2] Yu Zhang, Guoguo Chen, Dong Yu, and Kaisheng Yao, ng Yao,  long short term memory RNNs for distant speech recognition, in IEEE International Conference of Acoustics,Speech and Signal Processing (ICASSP), 2016, pp. 5755-5759.
  • [3] Xue S, Yan Z. Improving latency-controlled BLSTM acoustic models for online speech recognition[C], Acoustics, Speech and Signal        Processing (ICASSP), 2016 IEEE International Conference on. IEEE. 2017.
  • [4] Zhang S, Liu C, Jiang H, et al. Feedforward sequential memory networks: A new structure to learn long-term dependency[J]. arXiv preprint arXiv:1512.08301, 2015.
  • [5] Zhang S, Jiang H, Xiong S, et al. Compact Feedforward Sequential Memory Networks for Large Vocabulary Continuous Speech         Recognition[C], INTERSPEECH. 2016: 3389-3393.
  • [6] Zhang S, Liu C, Jiang H, et al. Non-recurrent Neural Structure for Long-Term Dependency[J]. IEEE/ACM Transactions on Audio, Speech,  and Language Processing, 2017, 25(4): 871-884.
  • [7] Oord A, Dieleman S, Zen H, et al. Wavenet: A generative model for raw audio[J]. arXiv preprint arXiv:1609.03499, 2016.
  • [8] Pundak G, Sainath T N. Lower Frame Rate Neural Network Acoustic Models[C],INTERSPEECH. 2016: 22-26.

p[[

没有更多推荐了,返回首页