欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~
作者:侯艺馨
前言
总结目前语音识别的发展现状,dnn、rnn/lstm和cnn算是语音识别中几个比较主流的方向。2012年,微软邓力和俞栋老师将前馈神经网络FFDNN(Feed Forward Deep Neural Network)引入到声学模型建模中,将FFDNN的输出层概率用于替换之前GMM-HMM中使用GMM计算的输出概率,引领了DNN-HMM混合系统的风潮。长短时记忆网络(LSTM,LongShort Term Memory)可以说是目前语音识别应用最广泛的一种结构,这种网络能够对语音的长时相关性进行建模,从而提高识别正确率。双向LSTM网络可以获得更好的性能,但同时也存在训练复杂度高、解码时延高的问题,尤其在工业界的实时识别系统中很难应用。
回顾近一年语音识别的发展,deep cnn绝对称得上是比较火的关键词,很多公司都在这方面投入了大量研究。其实 CNN 被用在语音识别中由来已久,在 12、13 年的时候 Ossama Abdel-Hamid 就将 CNN 引入了语音识别中。那时候的卷积层和 pooling 层是交替出现的,并且卷积核的规模是比较大的,CNN 的层数也并不多, 主要是用来对特征进行加工和处理,使其能更好的被用于 DNN 的分类。随着CNN在图像领域的发光发热,VGGNet,GoogleNet和ResNet的应用,为CNN在语音识别提供了更多思路,比如多层卷积之后再接 pooling 层,减小卷积核的尺寸可以使得我们能够训练更深的、效果更好的 CNN 模型。
1 语音识别为什么要用CNN
通常情况下,语音识别都是基于时频分析后的语音谱完成的,而其中语音时频谱是具有结构特点的。要想提高语音识别率,就是需要克服语音信号所面临各种各样的多样性,包括说话人的多样性(说话人自身、以及说话人间),环境的多样性等。一个卷积神经网络提供在时间和空间上的平移不变性卷积,将卷积神经网络的思想应用到语音识别的声学建模中,则可以利用卷积的不变性来克服语音信号本身的多样性。从这个角度来看,则可以认为是将整个语音信号分析得到的时频谱当作一张图像一样来处理,采用图像中广泛应用的深层卷积网络对其进行识别。
从实用性上考虑,CNN也比较容易实现大规模并行化运算。虽然在CNN卷积运算中涉及到很多小矩阵操作,运算很慢。不过对CNN的加速运算相对比较成熟,如Chellapilla等人提出一种技术可以把所有这些小矩阵转换成一个大矩阵的乘积。一些通用框架如Tensorflow,caffe等也提供CNN的并行化加速,为CNN在语音识别中的尝试提供了可能。
下面将由“浅”入“深”的介绍一下cnn在语音识别中的应用。
2 CLDNN
提到CNN在语音识别中的应用,就不得不提CLDNN(CONVOLUTIONAL, LONG SHORT-TERM MEMORY,FULLY CONNECTED DEEP NEURAL NETWORKS)[1],在CLDNN中有两层CNN的应用,算是浅层CNN应用的代表。CNN 和 LSTM 在语音识别任务中可以获得比DNN更好的性能提升,对建模能力来说,CNN擅长减小频域变化,LSTM可以提供长时记忆,所以在时域上有着广泛应用,而DNN适合将特征映射到独立空间。而在CLDNN中,作者将CNN,LSTM和DNN串起来融合到一个网络中,获得比单独网络更好的性能。
CLDNN网络的通用结构是输入层是时域相关的特征,连接几层CNN来减小频域变化,CNN的输出灌入几层LSTM来减小时域变化,LSTM最后一层的输出输入到全连接DNN层,目的是将特征空间映射到更容易分类的输出层。之前也有将CNN LSTM和DNN融合在一起的尝试,不过一般是三个网络分别训练,最后再通过融合层融合在一起,而CLDNN是将三个网络同时训练。实验证明,如果LSTM输入更好的特征其性能将得到提高,受到启发,作者用CNN来减小频域上的变化使LSTM输入自适应性更强的特征,加入DNN增加隐层和输出层之间的深度获得更强的预测能力。
2.1 CLDNN网络结构
网络结构图如图1,假设中心帧为,考