赵婷婷 张二华 唐振民
(南京理工大学计算机科学与工程学院 南京 210094)
人类进行信息交流最自然的方式就是语音。随着时代发展和计算机技术的进步,语音交流不再局限于人与人之间,让计算机能够理解人类语言这一需求日益增长。语音识别就是把人的说话语音变成一种计算机能够理解的命令,然后计算机再将这些命令处理最终显示为我们所需的结果。语音识别系统可以划分为多个独立的模块,这些模块主要有特征提取、语音切分、声学模型,语言模型的构建和训练等,经过这一系列的计算,从而得到最佳识别结果。语音识别早期的研究是对于孤立词的识别,而高斯混合-马尔可夫模型(GMM-HMM)的出现使得孤立词语音识别向连续语音识别发展,在经典的GMM-HMM[1]中,GMM 对语音信号观察概率建模,HMM 则对语音信号时序建模,采用最大期望(EM)算法[2]进行训练。但是GMM-HMM 结构上属于浅层模型,在处理信号中的复杂结构信息时学习能力较弱,且对于大数据量的任务建模能力明显不足,因此当语音信息由标准朗读转向日常交流或者识别大量语音数据时,基于GMM-HMM 的语音识别方法就难以胜任。直至深度学习方法的出现以上问题才得以解决,经过一段时间的研究,卷积神经网络和循环神经网络等在语音识别中取得了显著效果[3],之后深度神经网络就成为语音识别任务中的主流模型。
2006 年,Geoffrey Hinton 提出了“深度置信网络”的概念,并给出了两个重要结论:1)具有多个隐含层的人工神经网络,具有更优秀的特征学习能力;2)通过逐层预训练可以让神经网络中的权值找到接近最优解的初始值,再通过微调对网络进行优化。目前大家所知道的深度学习就是一种包含多个隐含层的多层感知机,让计算机通过自身的各种计算,训练得到一种模式特征,然后在建立模型的过程中加入这一模式特征[5],这一方法被广泛应用于多种领域,其本质就是深层神经网络[6]。深度学习的性能还与数据量成正比,数据量的增加会增强其性能,可以说深度学习也是一种数据依赖性算法[6]。综上所述,深度学习=多层神经网络算法+并行计算+海量训练数据。
循环神经网络(RNN)[8]是20 世纪80 年代末提出的一种神经网络结构模型。RNN 具有循环结构,可以记录上一时刻的信息并用于当前时刻的计算中[9],它的循环处理信息的机制与人类大脑记忆的过程非常类似,符合生物神经元的连接方式。图1展示了RNN网络结构。
图1 RNN网络结构图
图1的左侧展示的是RNN的基本结构,按时间序列展开可以得到右侧的结构。RNN 输出值的计算包括以下步骤:
1)Xt是t时刻的输入;
2)Ht是t 时刻的隐藏状态,即循环神经网络的记忆,它由Xt和Ht-1共同决定。计算公式如式(1):
其中U,W 和β均为网络参数;f 为激活函数,以上公式的计算是循环的。
3)Ot是t 时刻的输出,它是由模型当前时刻的隐藏状态Ht(记忆)决定的,所有时刻的输出概率之和为1。
其中,v和η均为网络参数,Softmax为激活函数。
RNN 的训练中最重要的一步是利用反向传播调参,使损失函数最小化。在理论上,RNN 可以在时间轴上任意展开,也就是,它能记住任意过往的信息,但由于存在梯度消失(若梯度较小,则多层迭代后,梯度很快就会小到对调参几乎没有影响)的问题,那些记忆会随着梯度递减而消散,即输入数据时间序列过长时,RNN 无法进行有效的梯度更新,RNN 的发展受到限制。直至LSTM 等模型的提出,新一代的RNN才得以继续发展。
在传统循环神经网络的基础上,加入一个细胞状态(cell),就能组成一个LSTM[10]单元,我们可以认为正是多了一个内部状态,LSTM 才记忆得更长久。这个单元状态将前一个时间的信息传递给下一个时间的同时,会选择性的记住某些信息,也会选择性的忘记某些信息。为了实现这种信息处理方式,LSTM通过引入巧妙的可控自循环,这种机制我们将其称之为门。根据不同的功能,LSTM 可分为三种门:输入门,遗忘门和输出门,如图2 所示。传统RNN 多采用BPTT 算法,这种算法随着网络层数的增多,会产生梯度消失等问题,而LSTM 通过设计控制门开关,构造了可控记忆神经元,可以产生使梯度能长时间可持续流动的路径,解决了梯度消失这一问题,特别适合处理时序间隔长和延迟非常长的任务。
图2 LSTM单元结构
可以用以下一系列公式来描述一个LSTM 循环体的结构组成:
输入门:
遗忘门:
临时状态记忆单元:
当前时刻的记忆单元:
输出门:
单元t时刻隐含层输出:
LSTM的总体计算流程为当前时刻的输入信息Xt通过输入门it处理,部分信息能够添加到记忆信息流中[11];上一时刻的记忆信息流Ct-1中的信息通过遗忘门ft来控制消除多少;二者相结合,得到单元的状态信息Ct;最终有多少信息可以用于下一网络的更新还要通过输出门ot决定,由单元的状态信息和输出信息得到单元的隐含层输出ht,并传递给下一单元,最后时刻的ot就是整个网络的输出。所有的权重矩阵W,偏置向量b 都是通过训练得到,根据时间反向传播算法就能得到这些参数的梯度值。
LSTM在处理时间序列数据的时候只能实现单向传递,也就是只考虑了过去信息的影响,没有考虑未来信息可能起到的作用。所以当数据的关键信息在后面时,LSTM的识别性能就会降低,无法满足需求,为了解决这一问题,双向长短时记忆网络(BLSTM)应运而生,BLSTM 将方向时序信息的影响也考虑在内,当前输入信息跟前后序列的数据都相关,即“未来”对“现在”也有影响。
BLSTM 的结构如图3 所示,其中LSTM 就是图2中的LSTM单元,图3上半部分就是信息正向传播的网格单元,下半部分就是逆向传播的单元。图3中Xt参数为t 时刻模型的输入参数,ht为正向传输中t时刻模型的输出参数,ht*为逆向传输中t时刻模型的输出参数,之后分别取两个方向最后一层的输出,进行简单的拼接得到最终数据,这些数据包含了上文信息和下文信息。
图3 BLSTM结构
语音识别大致包括语音信号音节切分、声学模型和语言模型等基本单元,框架图如图4 所示。为了更好地进行音节切分和模型的构建,还需要对语音信号进行处理,如:预加重,分帧加窗等,预处理后再进行特征参数的选取和提取。
图4 语音识别系统原理框架图
人耳对不同频率的声音有着不同的感知能力,并不呈现线性正比关系,为了模拟这一特性,人们提出了Mel 频率,用Mel 频率尺度会更符合人耳的听觉特征[12],本实验选取MFCC 作为实验所用特征参数。MFCC 系数的提取分为两个关键步骤:将语音信号转换至梅尔频率然后进行倒谱分析。首先对语音信号进行傅里叶变换得到频谱,再利用Mel滤波器将线性频谱转换为Mel 频谱;人耳对声音的感知用对数关系能更好描述,所以对Mel 频谱进行对数处理后再进行离散余弦变换[13],由此得到的数据就是MFCC。
基本声学单元(简称基元)的选择是声学模型进行构建的前提,选取合适的基元对于识别性能影响很大。声学模型就是提取声学基元所对应的特征向量的序列,构成输入数据,之后声学模型计算该数据属于每个基元的概率,从而推断出当前声学基元最有可能对应的汉字音节。
因为汉语中普遍存在同音字的问题,即一个音对应多个汉字,仅凭音节难以确定究竟对应哪个字,而语言模型就是建立大型语料库,统计语料库中的词出现的概率,还有各种词之间转换的概率,最后把这些信息和声学模型得到的结果综合进行输出[14],从而实现音-字的转换,解决多个汉字对应一个音的问题。
实验所用数据集为南京理工大学NJUST603语音库,语音库参数为说话人423 人(男生210 人,女生213 人),每人朗读散文《师恩难忘》,该文共596个汉字。实验选取切分好的100 个汉字音节作为实验对象,每个汉字随机选取120 个样本作为训练集,15 个样本作为测试集。实验所用的语音数据是单声道WAV 格式,采样频率为16000Hz,采样精度为16bit。
实验首先对语音信号进行分帧、加窗等预处理,帧长和帧移分别为32ms、16ms。在语音识别系统中,一般采取比词小的字词作为建模和识别单元,因为汉字都是单音节,所以实验选取音节作为识别单元。数据预处理之后,对语音信号进行音节切分,得到单个字的起始位置和终止位置;然后提取每个字的MFCC 特征参数作为模型的输入,维度为24维。
3.3.1 GMM_HMM模型
语音信号是慢时变信号,简单的表示方法就是马尔科夫链,而隐马尔科夫模型(HMM)就是基于马尔科夫链发展的[15]。隐马尔科夫模型由两个随机过程组成,一是描述状态和观察值之间的统计对应关系;二是与概率分布相联系的状态转移的统计对应关系[16]。但在语音识别的过程中,无法直接得到所有状态的观察值概率矩阵,而高斯混合模型(GMM)可以通过高阶多维高斯分布描述连续的概率分布,可以通过GMM 对语音信号的观测值进行模拟得到观测状态概率矩阵,再结合HMM 就构成了GMM-HMM模型。
利用GMM-HMM 对处理好的语音数据进行实验,经过对比,选取HMM 状态数为6,高斯混合阶数为3 的模型进行实验所得识别正确率最高,为84.7%。
3.3.2 BLSTM模型
尽管GMM-HMM 声学模型已经较为成熟,但仍然存在一些不足。而双向长短时记忆网络能够弥补这些不足,提高语音识别的准确率。本实验利用TensorFlow实现了BLSTM模型[17],实验使用的语音特征参数是24 维MFCC。由于每个音节的长度不一致,包含的语音帧数不同,所以在模型训练之前,需要统计所有音节的长度,即样本帧数,把所有音节的特征参数按照最长的样本帧数补齐组成一个张量。然后选取合适的损失计算函数和优化算法,在训练数据迭代过程中更新神经网络的参数,得到全局最优解,即训练好的声学模型。最后用训练好的模型对测试样本进行测试,正确率为92.9%。
实验用同一数据集中的语音数据对GMMHMM 模型和BLSTM 模型进行对比识别,结果如表1所示。
表1 GMM-HMM模型和BLSTM模型的识别率结果对比
通过表1,可以看出BLSTM 模型的识别率比GMM-HMM 提高了8.2%,这是因为GMM 模型难以利用同一状态内帧的上下文信息,而BLSTM 考虑了上下文对当前语音识别的影响,所以BLSTM 模型有着更高的识别率。
为了验证BLSTM 模型能够利用输入数据的时间序列特征,对MFCC 参数打乱顺序之后再识别,结果如表2所示。
表2 不同数据BLSTM模型的识别率结果
由表2 可知,对打乱顺序后的每一维MFCC 参数进行识别,对比正常顺序的识别率有明显下降,以此可以验证BLSTM 模型能利用输入数据的时间序列关系。
本文总结对比了基于统计的GMM-HMM 模型和基于深度学习的BLSTM 两种声学模型的优劣,以及对相同数据集的识别效果,实验表明基于BLSTM 的声学模型识别正确率明显高于前者,BLSTM 模型之所以识别率较高是因为该模型能考虑上下文对语音识别的影响。实验也存在一些问题,如数据集规模较小,使得深度模型训练层数增加时,不能得到充分训练;隐藏节点过高时,超出内存无法训练等,这些都是后续研究应该解决的问题,也是之后的研究方向。