一种基于卷积神经网络的快速说话人识别方法
2020-05-18蔡倩,高勇
蔡 倩,高 勇
(四川大学 电子信息学院,四川 成都 610065)
0 引言
声纹识别(又称说话人识别)属于生物特征识别技术,是一种利用人体固有的生理特征进行个人身份鉴定,对说话人的语音信号进行特征分析和提取,并将目标说话人的语音与集合内说话人进行匹配的过程。
说话人识别系统通常由预处理、特征提取和模式匹配3部分组成。首先,预处理是语音信号处理中不可或缺的环节。发声器官物理特性的差异使得产生的语音信号自身物理特性不一,因此不能直接对原始语音信号进行特征分析,要对其进行预加重、分帧和加窗等预处理操作。其次,特征选取是识别精度的关键。常用的特征参数有:梅尔倒谱系数(Mel-scale Frequency Cepstral-Coefficients,MFCC)[1]、小波系数、线性预测倒谱系数(Linear Prediction Cepstrum Coefficient,LPCC)和i-vector等。MFCC是最常使用的语音特征,提取MFCC用到的Mel三角滤波器组模仿了人的听觉特性,其在低频部分的分辨率高。本文采用Gammatone滤波器组[2]更能够模拟人耳特性,能仿真人耳基底膜的动态响应,从而得到更好的说话人个性特征——基于Gammatone滤波器倒谱系数(Gammatone Frequency Cepstral-Coefficients,GFCC)[3]。由于GFCC不依赖于信号的性质,又利用了听觉模型的研究成果。因此,GFCC和基于声道模型的LPCC相比具有更好的鲁棒性。最后,模式匹配是整个说话人识别系统的核心。在说话人识别领域,高斯混合模型(Gaussian Mixture Model,GMM)是一种经典有效的识别模型。通过不断研究,以GMM为基础的高斯混合模型—通用背景模型(Gaussian Mixture Model-Universal Background Model,GMM-UBM)成为主流方法。近年来,随着深度学习研究技术及成果的不断涌现,神经网络被成功运用于说话人识别中。在之前的研究中[4],吕亮等人对深度神经网络(Deep Neural Networks,DNN)进行了文本无关说话人识别研究。林舒都、邵曦等人[5]利用DNN来提取说话人特征,然后将提取的特征用于说话人模型的建立。在文献[6-8]中,预先训练好的DNN用来提取特征向量,将同一个说话人的特征向量平均化来创建每个说话人的模型,这称为d-vector系统。文献[9]提出的卷积神经网络(Convolutional Neural Networks,CNN)用于语音信号的预处理,没有将CNN用于模式匹配。文献[10-11]提出将语音信号的语谱图作为CNN的输入,这种思想类似于用CNN实现图像的分类。
本文利用CNN同时实现说话人内在特征的提取和说话人模型的匹配,在CNN的框架构成中,网络的输入是GFCC与其差分系数归一化得到的统计特征,全连接层输出作为表征每个说话人的深层次特征向量,最后softmax分类器实现说话人模型的匹配。本文提出的说话人识别系统,在保证高识别率的前提下,降低了识别的复杂度,减少了系统的训练时间和识别时间,大大提高了识别效率。
1 特征参数提取
1.1 预处理
在提取特征参数之前,先将语音信号进行预加重和端点检测等预处理。
预加重目的是对语音的高频部分进行加重处理。发音时,语音受到辐射通道(口腔、鼻腔等)影响,低频段的信号能量大,高频段的语音信号能量明显较小,所以在对语音信号分析前有必要进行高频部分的补偿,传递函数为(a=0.98):
H(Z)=1-aZ-1。
(1)
语音信号端点检测技术的目的是区分出静音段和非静音段。端点检测可以减少计算量,提高计算精度,同时减少噪声对说话人识别的影响。传统的基于短时能量和过零率的端点检测方法对带噪语音的检测性能不够理想。基于谱熵法的端点检测[12]比基于短时能量和过零率的方法有更好的性能。本文采用谱熵端点检测算法除去语音中的静音段,检测过程如图1所示。
图1 谱熵法端点检测过程Fig.1 End point detection process of spectral entropy method
1.2 GFCC及其一阶、二阶差分系数的提取
Gammatone滤波器是一种基于标准耳蜗结构的滤波器,其时域表达式[13]为:
gi(t)=Atn-1e-2πbitcos(2πfi+φi)U(t),
(2)
式中,A,fi为滤波器的增益和中心频率;U(t)为阶跃函数;φi为偏移相位;n为滤波器的阶数;N为滤波器数目;滤波器的衰减因子bi决定了滤波器对脉冲响应的衰减速度,与中心频率fi的对应关系为:
bi=1.019bEBR(fi),
(3)
式中,bEBR(fi)为等效矩形带宽,与中心频率fi的关系为:
(4)
GFCC参数的提取过程如图2所示。
图2 GFCC及其差分系数的提取过程Fig.2 The extraction process of CFCC and its difference coefficient
对得到的GFCC系数进行一阶差分和二阶差分可得到ΔGFCC,ΔΔGFCC。在实验中,每帧语音提取12维的GFCC、12维的ΔGFCC和12维的ΔΔGFCC构成36维的特征参数ΔG:
ΔG=[GFCC,ΔGFCC,ΔΔGFCC]。
(5)
当图2中的Gammatone滤波器为Mel三角滤波器时,提取的是MFCC,ΔMFCC,ΔΔMFCC的组合特征ΔM。
2 卷积神经网络
2.1 网络结构
CNN网络结构如图3所示,包含了一个由卷积层和子采样层构成的特征抽取器。在卷积层中,一个神经元只与部分邻层神经元连接。CNN的一个卷积层通常包含若干个特征平面,每个特征平面由一些矩形排列的神经元组成,同一特征平面的神经元共享权值,共享的权值就是卷积核。卷积核通过训练学习得到合理的权值,能够减少网络各层之间的连接,降低了过拟合的风险。子采样(又称池化)有均值子采样和最大值子采样2种形式。卷积和子采样大大简化了模型复杂度,减少了模型的参数,本文采用的是最大值子采样。
图3 CNN网络结构Fig.3 CNN network structure
系统搭建了一个具有3个卷积层的CNN。输入数据和卷积核做卷积,并通过激活函数(ReLU)得到下一层的输入。卷积表达式如下:
(6)
得到的特征图作为下一个池化层的输入,进行降维处理。降维处理对系统有3个作用:突出显著特征、减少系统的训练参数和增加系统的顽健性。X=(x0,x1,x2,…,xn)是输入向量;H=(h0,h1,h2,…,hL)是中间层的输出向量。
池化层的数学表达式如下:
(7)
式(6)和式(7)中,Vij是前一层输出单元i到隐层单元j的权重;Wij是隐层单元j到前一层输出单元k的权重;θk,bj分别为前一层输出单元和隐藏单元的阈值。
ΔG特征参数经过3个卷积层和池化层后,得到表征语音的深层特征,再经过全连接层获得固定维数的特征向量,最后通过softmax分类器实现分类。
2.2 批量归一化层
对输入的特征参数进行归一化处理[14],将每个样本的特征值归一化成均值为0、方差为1的分布,从而保证训练数据的数值都在同样量级上,使得训练时数值更加稳定。批量归一化层的引入大大加快了CNN模型的训练时间和测试时间。
对数据点xi每一个特征维进行归一化:
(8)
3 实验结果与分析
3.1 实验语料库
本文使用的语料库是SAS语音库[15]。它由106个不同说话人(62个女生,44个男生)的语音组成,语种类别为英语,每个说话人包括300~400条语音(语音长度2~6 s)。语音的格式为WAV格式,采样率为16 kHz,量化位数为16 bit,声道为单声道。
3.2 实验设置
实验随机提取了106个说话人中的40个作为目标说话人,剩余的66个人作为GMM-UBM系统中通用背景模型的训练样本。采用与性别相关的训练方法训练出UBM模型,高斯混合度为64。每个目标说话人提取等量语音数(379条),共计40×379=15 160条。为了观察说话人数对系统性能的影响,分别设置了数量为2,5,8,10,20,30,40人的目标说话人集合,按照4∶1的比例分成训练样本集和测试样本集。本文进行了2组对比实验,一组是基于CNN的文本无关说话人识别算法与GMM-UBM算法的对比实验,对比了2种算法的识别率和效率;另一组实验对比了在DNN,CNN的模型架构下分别提取ΔM,ΔG的识别结果,如表1、表2和表3所示。
表1 不同说话人集合在不同模型下的识别率
Tab.1 Recognition rate of different speaker sets under different models
模型说话人数25810203040GMM-UBM0.970 00.925 00.920 00.913 00.900 00.880 00.795 0CNN0.991 00.989 00.985 00.980 00.970 00.966 00.939 3
表2 在DNN模型下提取ΔM,ΔG的识别率
Tab.2 The recognition rate when extracting ΔMand ΔGunder DNN model
特征参数说话人数25810203040ΔM0.956 70.901 40.866 70.833 20.752 40.708 70.626 0ΔG0.980 00.937 80.893 40.875 70.833 00.772 10.709 0
表3 在CNN模型下提取ΔM,ΔG的识别率
Tab.3 The recognition rate when extracting ΔMand ΔGunder CNN model
特征参数说话人数25810203040ΔM0.985 00.984 00.982 30.977 50.965 00.944 50.926 7ΔG0.991 00.989 00.985 00.980 00.970 00.966 00.939 3
3.3 说话人识别方法对比试验
在系统前端对语音进行预加重、VAD等预处理,按帧长256、帧移80逐帧提取语音的ΔG特征参数,将归一化的ΔG特征参数送入2种网络,得到了不同集合在2种模型下的识别结果,如图4所示。
图4 不同说话人集合在不同模型下的识别率Fig.4 Recognition rate of different speaker sets under different models
从图4可知,CNN模型在不同数量的说话人集合下的识别率均高于GMM-UBM模型,且随着说话人数的增加,CNN模型的识别率变化更加稳定。从2个人的集合到40个人的集合,在GMM-UBM模型下的识别率变化了0.175,在CNN模型下变化了0.051 7。由此可以看出,针对说话人数的变化,CNN模型稳定性更好。
为观察2种模型在训练和识别时长上的差异,表4列出了说话人数为40时2种模型训练时间和测试时间的对比结果。
表4 实验仿真数据结果
Tab.4 Experimental simulation data results
模型训练时间/min识别时间/sGMM-UBM506CNN101
从表4可以看出,CNN模型在保证更高识别率的情况下,同时能减少对语料的训练时间和识别时间,具有更高的识别效率。
3.4 特征参数选取对比实验
在实验中,分别提取了ΔM,ΔG这2种特征参数,得到了不同说话人集合在不同特征参数下的识别结果。
为了进一步证实ΔG特征参数和CNN模型结合效果最佳,表2给出了在DNN模型下2种参数的识别结果。由于DNN结构中神经元之间只是简单的全连接,对输入特征进行深层抽取的能力不如CNN,故总体的识别率都低于CNN模型下的结果。从表3可以看出,针对ΔG,ΔM两种不同的特征输入,CNN模型都能达到较好识别效果,每一组说话人集合的识别率都在0.92以上。
在CNN模型下提取ΔM,ΔG的识别率如图5所示。
图5 在CNN模型下提取ΔM,ΔG的识别率Fig.5 The recognition rate when extracting ΔM and ΔG under CNN model
从图5可以看出,在不同数量的说话人集合下ΔG作为特征参数时相较于ΔM识别率更高,采用ΔG作为特征参数送入卷积神经网络的说话人识别系统整体性能更好。
4 结束语
通过分析人耳听觉模型原理的基础,采用Gammatone滤波器组模拟人耳听觉感知特性,结合倒谱技术进行倒谱提升,构建听觉模型,得到一种基于Gammatone滤波器组的听觉倒谱系数。通过实验总结,基于CNN的说话人识别系统将ΔG作为特征参数能得到更好的识别效果。ΔG与ΔM相比,针对不同数量的说话人都能得到更高的识别率。同时本文采用的CNN系统能实现快速模式匹配,相较于传统的GMM和GMM-UBM系统不仅能提高识别率,同时能明显减少训练时间和识别时间。