前端处理涉及的内容比较多,除了前面提到的还包括多说话人分离、说话人移动过程中的声音采集、不同的麦克风阵列结构、各种噪声和房间模型如何更好的建模等。 语音识别技术的研究进展 有了前端处理以后,反馈回来的信息会加到训练语音识别模型,语音识别主要是建立一个声学参数到发音单元的映射模型或者叫判别模型,现在的方法从传统的GMM-HMM模型到DNN-HMM混合模型,再到最新的端到端的CTC相关的。语音信号经过特征提取得到声学特征,再通过声学特征训练得到声学模型,声学模型结合语言模型以及发音辞典构建声码器以后,最终识别出文本。 GMM用来对每个状态进行建模,HMM描述每个状态之间的转移概率,这样就构建了一个音素或三因子的HMM模型建模单元,GMM训练速度相对较快,而且GMM声学模型可以做得比较小,可以移植到嵌入式平台上,其缺点是GMM没有利用真的上下文信息,同时GMM不能学习深层的非线性特征变换,建模能力有限。 随着深度神经网络的兴起,深度神经网络也应用到了语音识别里面声学建模,主要是替换了GMM-HMM模型里的GMM模型,上端仍然是HMM模型加状态转移,在GMM模型里面可能有500至1万个状态,这个状态可以通过DNN模型预测出每个的概率,输出的就是一个三因子,我们两者结合起来构建基于DNN-HMM的声学模型。 DNN能利用的上下文系统在输入端进行扩帧,同时又非线性变换可以学习到,但DNN不能利用历史信息捕捉当前的任务,因为扩帧是有限的,不可能无限扩下去,所以他输入的历史信息还是有限的。因此自然而然的有了基于RNN的混合声学模型,将DNN模块替换成RNN模块,RNN能够有效的对历史信息进行建模,并且能够将更多的历史信息保存下来,可于将来的预测。但是在RNN训练过程中会存在梯度消失和梯度膨胀的问题,梯度膨胀可以在训练过程中加一些约束来实现,当梯度超过一定值以后设定一个固定值,但是梯度消失很难去把握,因此有很多方法解决这种问题,比较简单的一个方法是将里面的RNN单元变成长短时记忆模型LSTM,这样长短时记忆模型能够将记忆消失问题给很好的解决,但这样会使计算量显著增加,这也是在构建声学模型中需要考虑的问题。CNN用于声学模型的建模有一个比较老的方法,在DNN的前端加两层的CNN变换,这样只对参数做了一定的非线性变换,变化完以后输入DNN和LSTM里面,但是随着非常深的CNN在图象识别里面成功应用,这些也被运用到了声学模型中,比如说谷歌、微软、IBM均在2016年发表成果证明非常深的CNN模型已经超越其他深度神经网络的模型,其词错率是最低的。 CTC本身是一个训练准则并不算声学模型,开奖,在DNN输出中,每个phone他占用的帧数可能有十帧二十帧,因为它不是一个尖峰,但CTC会把它变成一个尖峰,CTC可以将每一帧变成一个senones或者对应一个因数,但每个因数只需几帧就可以了,在解码的时候可以把一些blank帧给去掉,这样可以显著的增加解码速度。减少解码帧有两种方法,一种是通过减帧、跳帧的方法,另一种在解码过程中有一个beam,特别是遇到beam的时候把并值减少,我们的实验结果跳帧会比较好。 在NLP中应用较多的Attention端对端的声学模型能够从RNN历史信息中挑选出比较重要的信息对词学进行建模,目前的准确率比较低,这应该是一种趋势,至少在NLP中证明了它是比较成功的。 在声学模型中还有TDNN和chain模型,在声学模型中帧及运算过程中会有一些重叠,它有效的去除了信息冗余,嵌入模型也是一个训练准则,采用单状态模型,融入了MMI区分信息链准则,在训练过程中可以实现跳帧,这也加快了解码速度。总结起来现在的语音识别模型更新特别快,最重要的核心内容就是数据,如果数据量足够大的话,做出一个好的结果还是比较容易的,而且我们现在语音识别核心模块主要是在一些解码模块上调优上,这相当于是一种艺术。 语音合成技术的研究进展 语音合成是建立文本参数到声学参数的影射模型,目前的方法有拼接合成、参数合成还有端对端的语音合成。 (责任编辑:本港台直播) |