基于Bi-GRU+BFE模型的短语音说话人识别*
2023-01-06张二华
姜 珊 张二华 张 晗
(南京理工大学计算机科学与工程学院 南京 210094)
1 引言
说话人识别又称声纹识别,是一种生物身份认证技术。它具有用户接受度高、设备成本低、可扩展性好以及便于移植等优点,可广泛应用于情报侦听、司法鉴定、语音检索、银行业务、证券交易、公安取证、智能声控锁等方面[1~2]。在实际应用中,它通常受环境噪声、语音信道等因素的影响,性能难以提升。目前如何提高鲁棒性和抗干扰能力是其研究重点。
早期的声纹识别方法主要采用模板匹配法,如动态时间规整(Dynamic Time Warping,DTW)、矢量量化(Vector Quantization,VQ)等[1],该方法准确率低,识别效果不理想。20世纪90年代提出的高斯混合模型方法(Gaussian Mixture Model,GMM)[2~3],取得了较好的效果,但对信道环境噪声较敏感,难以满足真实场景下的要求。
目前深度学习方法也开始应用于说话人识别中,通常结合i-vector特征[3~4]与深度学习(CNN或DNN),基于LSTM进行建模[5~6]。该深度模型不仅具有高容错率、抗干扰和灵活的优点,在处理未知数据方面,同样具有良好的效果。但由于该方法训练时间较长、所需训练样本较多、网络复杂度与说话人个数呈正比等诸多因素,往往使网络难以训练和收敛。此外,目前对短语音的说话人识别涉及较少。
本文研究了基于Bi-GRU+BFE模型的说话人识别方法,该方法在短语音说话人识别实验中取得了比GMM[3]和常规深度学习方法更高的识别率,其训练效率也得到一定的提高。
2 深度学习理论
2.1 循环神经网络
循环神经网络(Recurrent Neural Network,RNN)[10],是一种考虑数据前后时序关系的神经网络结构。与传统网络相比,其优势为能够保持信息的前后依赖关系,有效处理序列化数据。循环神经网络的结构如图1。
图1 循环神经网络结构图
图1左侧是RNN的循环结构单元,图中U表示输入层到隐藏层的权重矩阵,V表示隐藏层到输出层的权重矩阵,W是隐藏层与上一层的权重矩阵。图3右侧是RNN循环结构单元按时间序列的展开。RNN的前向传播算法如式(1)。
其中,ot为t时刻的输出,Whh、Wxh、Why为权重矩阵,bh、by为偏置项,ht为t时刻的隐状态,xt为t时刻的输入数据。RNN共享任意时刻的权重参数,每个时刻的状态与前后时刻的状态互相依赖,降低了网络参数的冗余,能够处理不同长度的序列数据。
RNN使用反向传播方法进行训练,当网络层次逐渐加深,雅克比矩阵的运算结果一般会呈指数变化,导致其不能很好地处理长距离依赖的问题。梯度消失、梯度爆炸等模型训练异常现象,是RNN未被广泛应用于实际的重要原因[11,14]。
2.2 长短期记忆模型
长短期记忆网络(Long Short Time Memory,LSTM)解决了RNN存在的长期依赖问题[12~13],图2是LSTM单元结构示意图,LSTM单元由输入门it、遗忘门ft和输出门ot组成。
图2 LSTM单元结构示意图
LSTM的前向计算公式如下:
输入门:
遗忘门:
记忆单元:
输出门:
当前隐藏层输出:
式中·号表示对应元素相乘,W表示网络的权重矩阵,b表示偏移向量,xt表示t时刻的输入。
LSTM是对RNN的改进,消除了RNN的梯度消失或梯度爆炸问题。LSTM单元的三个门有助于记住任意长时间的值,忘记不重要的值。LSTM的门采用点乘法计算和sigmoid函数实现模拟式存储。门值表示门的开关程度,将其设置为[0,1]之间,用于表示给予通过的信息占比,即门值为0时,不予通过任何信息;门值为1时,予以通过所有信息。
门值与该门内的输入数据有关,根据数据自身的重要程度来决定予以通过的信息占比,对输入数据进行加权过滤,并且通过各时刻参数共享的循环神经网络对门值进行调整。
2.3 门控循环单元
类似于长短期记忆网络,合并LSTM中的输入门与遗忘门构成“更新门”ut,与“重置门”rt组合而成一个相对简单的网络结构,即门控循环单元(Gated Recurrent Unit,GRU)[14,17]。GRU结构示意图如图3所示。
图3 GRU单元结构示意图
GRU的前向传播计算如下:
更新门:
重置门:
记忆单元:
当前隐藏层输出:
上述公式中,·号指对应元素相乘,W指网络的权重矩阵,b指偏置向量,xt指t时刻的输入。更新门用来控制隐层状态的更新,即若ut=0,之前的信息都不被写入,重置门可以控制隐状态的遗存。
GRU在结构上比LSTM精简,少一个门结构,训练过程中所需参数值较少,有利于模型的收敛和效率的提高。
3 基于深度学习的说话人识别
3.1 网络模型
3.1.1 Bi-GRU结构
语音信号是一种复杂的时变信号,循环神经网络在处理时序相关数据上表现出强大的优势,而其中的GRU通过将LSTM中的输入门和遗忘门合并为一个更新门,在保持其高效识别率的条件下,又加快了训练效率。音征互载现象表明,当前时刻的语音信号不仅与前一时刻的信号参数相关,也与下一时刻的信号参数有密切的联系[8]。但GRU只是单向地传递了时序信息,仅考虑了前一时刻的信息,未考虑到下一时刻的信息,在处理语音信号上存在缺陷[22]。因此本文选用双向门控循环神经网络(Bidirectional-Gated Recurrent Unit,Bi-GRU)[14]作为声纹识别网络的主要结构,Bi-GRU结合前后语音信息计算声纹特征向量,对于语音的把握更加准确和全面,提高了说话人识别的鲁棒性[19]。
Bi-GRU的结构如图4所示。
图4 Bi-GRU模型结构示意图
图4中,w0,w1,w2,…,wn为一段语音信号经过时序特征提取后的n+1个输入,fw_ht表示t时刻Bi-GRU的正向隐藏层状态,bw_ht表示t时刻Bi-GRU的反向隐藏层状态。网络最后一层通过softmax激活函数得到分类标签的概率分布。
3.1.2 块级特征均衡结构
块级特征均衡(Block-level Feature Equalization,BFE)结构主要由三个网络层构成,分别为:帧级平均层(Average layer)、全连接层(Dense layer)、L2标准化层(L2_normalization layer)[17,21]。
一段连续语音经端点检测之后得到有效语音段,将其进行分帧处理,选取若干连续语音帧组成语音块,通常语音块包含50个~100个语音帧。说话人识别模型的输入特征采用语音块的帧级特征(每个语音块的声纹特征参数的维度为块内帧数×各帧特征维度),输入标签是对应语音块的说话人编号。由于输入特征为帧级别,而输入标签为块级别,两者规格不一致,无法进行深度计算。需要将语音块的帧级特征融合计算得到块级特征,使其最后一层的计算结果与标签值的规格对应,实现端到端的训练方式,如图5。
图5 语音块输入数据说明图
因此,帧级平均层(Average layer)可用于将属于同一语音块的各帧特征求和取平均,转化为块级特征,实现一个语音块对应一个特征向量。由此,网络输出值与输入标签值完全对齐,便于损失函数的计算。采用求和取平均的方法来计算块级特征,是为了避免偶然因素,减小误差,实验也证明了该方法的可靠性。
基于相邻层之间节点的全连接层(Dense layer),可对前一帧级平均层计算得到的特征数据降维去冗余。该层的神经元节点个数通常为前一层神经元节点个数的一半,将计算复杂度缩减二分之一。
L2标准化层(L2_normalization layer)对前一层计算得到的中间特征向量按一定标准进行规范化,使其特征分布更加合理,易于模型的收敛,一定程度上能防止模型的过拟合。由于中间特征向量中一行数据属于一个语音块,因此利用L2范数对其按行进行标准化,计算公式如式(11)。
式中,M为输入网络中训练的一批语音块个数,N为经过前三层网络结构计算得到的语音块级特征参数的维度,x为未泛化的中间特征向量,y为经过L2标准化后的特征向量。
上述两种结构前后拼接组合为Bi-GRU+BFE网络模型,将模型最后一层的输出通过softmax激活函数,得到最终预测结果。该模型中具体各层的设计架构如表1。
3.2 模型训练
由4.1节实验结果,本文采用64维梅尔频率倒谱系数(Mel-Frequency Cepstrum Coefficient,MFCC)[7~8]作为输入到网络模型中的声纹特征。
对每块(多帧)语音提取MFCC特征参数,每帧提取64维,即每个语音块的特征参数的维度为块中帧数×64。实验表明,当每个语音块时长为1s以内,在短语音上的说话人识别实验结果比较理想。由于在分帧过程中设定的帧长为25ms,帧移为10ms,1s的语音可以分为99帧。因此,循环神经网络的输入时间步长(n_steps)设定为99,即将声纹特征每前后共99帧数据作为一个块(batch),则输入网络中一个块的数据维度为99×64。对数据进行批量训练,设定各批量数据的个数为batch_size。
由上可知,每次批量训练中共batch_size×n_steps×n_inputs的张量被输入网络中,训练得到的最后两层数据分别为:维度为batch_size×512的embeddings中间特征值[14,19]和维度为batch_size×N的softmax输出值。N为说话人总数,说话人标签以独热(one-hot)编码的形式进行处理,以张量的形式输入网络[7]。
说话人识别模型的训练步骤如图6。
图6 说话人识别模型的训练步骤
实验采用交叉熵损失函数进行模型训练,具体将softmax输出值采用交叉熵损失函数计算偏差Loss,然后通过梯度下降算法,对Loss和每层的权重求偏导,更新参数,训练模型。
4 实验过程及结果分析
实验选取南京理工大学NJUST603语音库中68个说话人(男女各半)的语音数据,采样频率均为16kHz,采样精度均为16bit。对数据经过端点检测去除无效语音段,每人保留110s时长的有效语音。根据随机划分且不重叠的原则,将数据集按照9∶1∶1的比例分为训练集、验证集及测试集。本文采用准确度(ACC)和损失函数(Loss)作为评价标准[7],计算公式分别如式(12)和式(13)。
式中:n表示说话人总数;TPi、FNi分别表示第i个说话人中正确分类的数目和错误分类的数目。Y表示类别正确的分类,P(Y|X)表示正确分类的概率,Loss表示在指定分类Y的情况下,概率越大,样本与目标值越接近,则损失越小[7]。
4.1 特征参数维度对比实验
选用MFCC作为实验特征参数,传统高斯混合模型(GMM)作为训练模型,从训练集中选30s语音作为训练数据,测试集中选10s语音作为测试数据(单个语音样本时长为1s)。分别选用特征参数维度为24、48和64作为对比实验,实验结果如表2。
表2 特征参数维度对比实验结果
实验结果表明,64维MFCC特征参数表现最佳,因此,本文4.2、4.3及4.4节实验中均选用64维MFCC特征作为输入到模型中的声纹特征参数,并设置训练、验证及测试数据分别为训练集、验证集及测试集中的全部数据。
4.2 不使用BFE结构对比实验
设 置LSTM[12~13]、GRU[14,17]、Bi-LSTM[19]、Bi-GRU[17,19]四种循环神经网络模型作为对比实验,结果如表3所示。
表3 不使用BFE结构模型对比实验结果
由表3对比可知,GRU在说话人识别训练阶段及验证阶段的准确率(ACC)及损失值(Loss)均优于LSTM。双向传播算法利用语音特征中的前后时序关系,有效提升了模型性能(表3中Bi-GRU的验证阶段ACC值相对GRU提升了20.35%,Bi-LSTM的验证阶段ACC值相对LSTM提升了24.13%)。同时表明Bi-GRU较为适用于本任务。
4.3 使用BFE结构对比实验
分别对4.2节中四种循环神经网络模型使用块级特征均衡(BFE)结构,进行对比实验,结果如表4所示。
对比表3中的实验结果,表4中相应的循环神经网络模型使用BFE结构之后,在训练阶段的性能略有提升,而在验证阶段,模型识别准确率(ACC)有明显提高,损失值(Loss)也明显下降。使用BFE结构后模型性能提升具体表现为:LSTM+BFE模型相对LSTM,训练阶段ACC值提升了17.81%,验证阶段ACC值提升了30.14%;GRU+BFE模型相对GRU,训练阶段ACC值提升了1.09%,验证阶段ACC值提升了21.47%;Bi-LSTM+BFE模型相对Bi-LSTM,验证阶段ACC值提升了18.38%;Bi-GRU+BFE模型相对Bi-GRU,验证阶段ACC值提升了10.97%。其中,本文使用的Bi-GRU+BFE模型在验证阶段,识别准确率已提升至98.82%,损失值降至0.1797。
表4 使用BFE结构模型对比实验结果
使用块级特征均衡(BFE)结构主要有两个原因:一是为了避免特征数据的偶然因素,减小误差;二是为了使其特征分布更加合理,易于模型的收敛,提高识别准确率。这使得模型的泛化程度得到了进一步的提升,因此在Bi-GRU网络层之后添加BFE结构有一定优势。
4.4 短语音测试结果
根据以上实验结果,对比传统的GMM概率统计模型[3~4]、在基于深度学习的声纹识别领域中取得优异成绩的残差卷积神经网络(ResCNN)模型[16~18]以 及LSTM+BFE、GRU+BFE、Bi-LSTM+BFE、Bi-GRU+BFE四种改进后的循环神经网络模型,进行短语音说话人识别实验。本实验中所用训练集为时长为90s的有效语音数据,表5展示了以上五种模型训练收敛后,分别在时长为0.5s、1s、2s、5s的有效短语音上的测试结果。
表5 多种模型在短语音上的测试结果
由表5可知,在测试语音时长极短的情况下,Bi-GRU+BFE模型依然表现最佳,对时长为0.5s的测试语音仍能达到90.66%的识别率,相较其他模型有明显提升。图7显示了表5中各模型在短语音上的测试准确率及对比趋势。
图7 Bi-GRU+BFE与其他模型对短语音测试准确率对比图
5 结语
对比几种深度学习网络模型在说话人识别任务上的应用,Bi-GRU+BFE网络模型表现出较好的性能。在对训练模型进行测试过程中,达到了98.82%的准确率和0.1797的损失值,分别为所有参与对比模型的最高准确率及最低损失值。此外,应用传统高斯混合模型、几种深度学习模型及Bi-GRU+BFE模型,针对长度较短的语音(0.5s、1s、2s、5s)进行声纹识别测试。实验结果显示,Bi-GRU+BFE模型在短语音说话人识别中表现最佳,均达到了90%以上的高准确率,尤其对于长度为0.5s的语音,识别率相对其他模型有明显提升。本文在传统声纹识别的基础上,研究了新的说话人识别方法,该方法有效提高了短语音的识别率,为声纹识别的实际应用提供了新的思路。本方法对说话人语音的质量要求较高,当测试集与训练集的差距较大时,如两者的信道不同或测试语音含有较多噪声,识别准确率会有所下降。因此,如何提高说话人识别中跨信道语音及含噪语音的识别率,仍需继续研究。