论文部分内容阅读
近年来,语音识别技术突飞猛进。2011年,随着深度学习技术被引入语音识别领域,语音识别技术翻开了新的篇章。随后的几年里,卷积神经网络(convolutional neural network,CNN)、长短时记忆模型(Long Short Term Memory,LSTM)、CNN混合LSTM的建模技术在语音识别工业产品中不停涌现,并持续提升语音识别产品效果。虽然语音识别技术的广泛使用已经让其深入人心,但是语音识别的性能仍然不能令人满意。作为语音识别的核心,解码器的性能直接关系着语音识别的应用与用户体验。如何提高解码器的性能与速度一直是该领域的重要研究课题。随着计算机硬件和软件的快速发展,使得基于加权有限状态转换器(Weighted Finite State Transducers,WFST)的静态网络解码器运用于实际系统成为可能。但是当前的WFST还存在不少问题,WFST的大小和构建语言模型的文本量几乎呈线性关系,WFST是一个有向图,巨大的网络加载到内存中会占用巨大的内存资源,不同的加载方式占用内存大小也有明显的差别。另一方面,当前WFST解码器的速度针对声学模型的特点还有待进一步提高。同时,解码器的精度也可以结合当前比较流行的循环神经网络(Recurrent Neural Networks,RNN)语言模型进一步提高。本文的研究目标是降低WFST的大小,优化WFST的存储结构便于运用于实际系统中,另外加快解码器的解码速度,提高解码器精度。论文的主要内容和创新点如下: 1.针对解码网络占用内存过大的问题,在准确率没有明显降低的情况下降低WFST的大小,并且降低解码网络在内存中占用。降低WFST的大小使用了三种方法:1、对N-gram语言模型进行剪枝,采用基于相对熵的N元剪枝方法,使得剪枝前后模型的相对熵尽量小,剪枝后的模型尽量逼近剪枝前的模型,不同的剪枝力度得到的WFST大小不同,如果剪枝力度太大,解码网络的能变很小,但是精度降低。相反,剪枝力度太小时解码网络大小变化不大。剪枝需要寻找一个平衡点,在尽量不明显降低准确率的情况下尽量降低解码网络的大小;2、优化WFST的结构,基于连接时序分类(Connectionist Temporal Classification,CTC)声学模型的WFST由三部分组成:语言模型、发音词典和音素,这三部分均可表示成WFST的形式。其中语言模型使用方法1的剪枝可以显著降低大小,发音词典是固定的,优化的可能较小,通过设计音素的WFST形式,去除音素的WFST中的冗余部分,能使最终的解码网络降低30%-40%,由于是等效变换,解码器的精度不受影响;3、改变WFST在内存中的存储结构,常用的网络在内存加载方式是链式结构,将链式结构改为连续结构,内存占用降低50%以上。 2.针对解码器解码速度慢的问题,提出两种加快解码速度的方法:跳帧和剪枝。这两种方法均是针对声学模型的损失函数CTC,计算后验概率的时候只在某一帧或者连续的某几帧出现标签(Label)的“尖峰”,其他帧为另外引入的一个标签,基于CTC的声学模型计算出的后验概率有大约80%的语音帧会标记为。针对这个特点跳帧的策略是:帧不参与解码,只参与声学模型的后验概率计算,这样只有大约20%的语音帧参加解码,能显著加快解码速度。另外一个加速方法剪枝的策略是:所有帧均参与解码,但是当解码是帧的时候,只有少量令牌加入到解码器中,其他令牌被剪掉,其他语音帧保持不变,这样整个搜索空间大大减小。实验表明这两种方法均能在不明显降低解码器的精度的前提下显著加快解码,尤其是第1种方法准确率略有提高。 3.针对解码精度的问题,使用N-gram结合RNN语言模型进行二次解码,提高语音识别准确率。由于N-gram对语句中长距依存描述能力较弱和数据稀疏的问题,而RNN语言模型能较好缓解这两个问题,所以结合N-gram和RNN用于二次解码是个很好的选择。由于RNN训练速度较慢,尤其当词表和文本规模较大的时候,RNN训练有明显的瓶颈,本文探索了不同的RNN优化方法和加速方法,使得RNN的训练速度有较大的提高。其次,由于RNN相比于N-gram而言计算较慢,无法直接运用于一次解码,所以先利用N-gram一次解码缩小搜索空间,再利用RNN结合N-gram进行二次解码。实验表明二次解码能提高解码精度。另外,由于RNN能利用通用网络进行某一领域的自适应,本文还探索了RNN自适应对识别性能的提高。