马志举,杜庆治,龙 华,邵玉斌
(昆明理工大学信息工程与自动化学院,云南 昆明 650500)
说话人识别也称为声纹识别[1],与指纹识别、人脸识别等身份认证技术相同,都代表不同人之间的个体差异。说话人识别是根据每个人的发音特点,以及每个人的发音器官,包括声带、声道等,在大小和形状上的不同来进行区别不同人的声音。
说话人识别技术按照其所要识别的任务及应用场景主要分为两类:说话人验证(Speaker Verification)及说话人辨认(Speaker Identification)。按照其识别内容可以分为三类:文本相关(text-dependent)、文本无关(text-independent),以及文本提示(text-prompted)。随着社会不断的发展,文本无关的说话人识别也越来越受到重视,本文针对文本无关的说话人辨认进行研究。
传统的说话人识别技术往往对音频提取声学特征,例如梅尔倒谱系数(Mel Frequency Cepstral Coefficient,MFCC)[2-3]、线性预测倒谱系数(Linear Prediction Cepstral Coefficient, LPCC)[3]、伽玛通频率倒谱系数(Gammatone Frequency Coefficient, GFCC)[4]以及融合特征等作为特征信息,将特征输入到模型中,再通过分类器进行判别分类,从而完成说话人识别任务。因此,提取语音中的说话人特征就成为了研究重点,随着深度学习技术的出现,提取特征的方法也可以通过深度学习来自动提取,得到的特征包含更多的身份信息,如dvector[5]、x-vector[6]、j-vector[7]等特征通过不同的网络模型提取得到,识别效果都有一定程度上的提高。
近几年来,随着深度学习技术不断的发展,图像识别技术的不断成熟,不少学者将语音信号转化为语谱图作为网络的输入,用于语音识别[8]、情感识别[9]和说话人识别等多个领域,从而提高了识别率以及识别速度。
文献[10]使用语谱图直接作为网络模型的输入,通过改进模型使得模型更小;文献[11]通过对说话人短时语谱图的线性叠加来获得稳定发音的语谱图,再输入网络中进行训练分类,提高识别率;文献[12]对语谱图进行平移扩充,从而达到增大数据量的目的,有助于深度学习训练,从而提高识别率;文献[13]将语谱图进行拉东变换,然后联合语谱图一同输入卷积神经网络进行分类处理,实验表明,在抗噪方面有一定的提升。
以上论文中都未考虑语谱图中说话人信息的特性,未能有效地对语谱图进行改进,由于语谱图中包含的信息较多,不能有效地针对说话人身份信息进行处理,从而提出改进语谱图的算法。语谱图能表征语音中的大部分特征,包括说话人的基频[14]、共振峰以及发音特点等特征,算法根据语音中每一帧基频进行自适应滤波,保留身份信息较强的基音频率以及各阶次谐波,从而提高了语谱图中说话人身份信息的信噪比。
考虑到实际应用中网络模型大小受限制,因此采用MobileNetv2[15]网络模型作为说话人识别模型。MobileNetv2 网络模型往往应用于图像分类处理中,由于该模型参数量较少,使得该模型可以在终端使用,该模型还具有识别准确率高、训练时间短、识别速度快等优点。将改进后的语谱图输入到MobileNetv2 网络模型中进行分类,从而实现说话人识别任务。
本文针对语谱图进行改进,提高语谱图中说话人身份特征的信噪比,并将MobileNetv2 作为深度学习网络模型,实现说话人识别算法,在减小模型参数量的同时,提高了识别准确率。
语音信号是通过麦克风录制得到的,在这个过程中语音的高频部分会发生快速的衰减,并且录制的语音当中包含静音片段,因此需要对语音信号进行预处理,得到适合提取语谱图的语音信号。语音数据预处理主要可以分为预加重、分帧、加窗以及静音段去除。语音信号预处理流程如图1 所示。
图1 语音信号预处理模块
语音信号是声带振动产生的不同频率正弦波以及各阶次谐波,通过口腔、鼻腔声道激励作用后的信号,最后通过采集并转化为数字信号,在这个过程中语音的高频部分会发生快速的衰减。预加重的作用就是提高信号当中的高频部分,来消除这种衰减带来的影响,在一定程度上放大了语音信号中的高频信息。
预加重的方法是将信号通过数字滤波器来提高高频信息,一般利用一阶FIR 高通滤波器来实现。数字滤波器的传递函数如式(1)所示:
式中:α为预加重系数,取值一般在0.9~1 之间。通过预加重处理后,语音信号中的高频部分被提高并且使得频谱变得更加平坦,有利于提高之后语谱图研究分析的效果。
对于语音信号来说,信号本身是不稳定的,它的特征是随着时间的变化而变化的,在人们说话的时候,每发出一个音节,其对应的语音特征都会与这段语音的其他部分截然不同。但由于语音信号在很短的时间内表现出一定的稳定性,也就是短时平稳特性,因此将语音信号在时间轴上分割为很多短小的片段,这些片段称为帧,一帧的长度通常在10~30 ms 范围内。为了使帧与帧之间过渡平滑,要让相邻两帧之间有一部分重叠,一般取帧长的一半作为重叠的长度。
加窗处理主要解决信号当中的吉布斯现象(Gibbs Phenomenon)以及傅里叶变换后出现的频谱泄露(Spectral Leakage),就是将一帧信号的每一个值乘以不同的权重,实现方法是选择合适的窗函数w(n)与语音信号x(n)进行卷积运算,得到加窗后的语音信号s(n),如式(2)所示:
常用的窗函数有矩形窗、汉明窗和汉宁窗。矩形窗的窗函数如式(3)所示:
汉明窗的窗函数如式(4)所示:
汉宁窗的窗函数如式(5)所示:
式中N为窗函数的长度,大小等于帧长。
选择合适的窗函数可以使语音信号的短时特性表现的更好。通过分析以上三种窗函数,其中矩形窗会使高频成分损失,丢失波形细节,导致能量泄露;汉明窗的主瓣较宽,旁瓣值较小,具有更平滑的低通特性,汉宁窗与汉明窗都是余弦函数,但汉明窗的旁瓣更小。综上所述,选择汉明窗作为窗函数更为合适。
采用语音活性检测(Voice Activity Detection, VAD)的方法将语音中的静音段去除,从而得到纯净的语音信号。语音中通常含有静音段,对于说话人识别而言,静音段属于噪声,将其滤除可以提高语音信号的信噪比,从而达到增强特征的目的。常用的抑制方法有能量阈值法、零交叉率法、最小二乘周期估计法以及基于统计模型的方法。本文采用较为流行的方法WebRTC VAD,该方法能够较好地区分出语音段与静音段。
WebRTC VAD 采用高斯统计模型对语音进行判决,该方法的基本原理是根据人声的频谱范围将输入的频谱分成6 个子带,分别计算这6 个子带的能量;然后使用高斯模型的概率密度函数做运算,得出一个对数似然比函数。对数似然比分为全局和局部,全局是6 个子带加权之和,而局部是指每一个子带,语音在判决时会先判断局部值,当局部判断为静音段时会判断全局,如果有一方通过,就认为是有语音段,最后保留有语音段的内容。图2 为语音信号在静音段去除前后的波形对比。
图2 语音信号VAD 处理前后波形对比
语谱图可以表示该语音在频域以及时域上的特征,语谱图的长和宽分别代表时间和频率,颜色深浅代表能量大小。从语谱图中可以得到不同的信息,包括语音的内容、说话人的基频、共振峰等代表人的个性特征等。对于说话人识别系统来说,增强基频以及各阶次谐波在语谱图中的信息量可以提高信噪比。因此提出对语音信号进行自适应梳状滤波[16],从而改进语谱图特征,算法流程如图3 所示。
图3 改进语谱图流程图
语音信号是由声带振动产生的波形,短时间内振动的频率称为基音频率,基音频率与说话人声带的大小、形状、劲度以及发音习惯等有关,是说话人识别的重要特征之一。计算基音频率的方法有短时自相关函数法[17]、平均幅度差函数法、倒谱法等。
本文采用短时自相关函数法,短时自相关函数法进行基音检测的原理是利用短时自相关函数的性质。
设语音信号预处理后得到的第i帧信号为si(n),每帧帧长为N,实验中取帧长N为512,帧移为160。那么si(n)的短时自相关函数定义为:
式中k为时间的延迟量。每个样本点的延迟量为1fs,fs为语音信号的采样频率。
当si(n)的周期为P时,则Ri(k)的周期也为P,即:
当k= 0 时,短时自相关函数具有最大值,对自相关函数归一化处理得到自相关系数:
人的基音频率范围一般在50~500 Hz,则Pmin取0.02,Pmax取0.2,在Pmin~Pmax之间寻找归一化相关函数ri(k)的最大值,最大值对应的延迟量k就是基音周期,通过式(9)得到基音频率fi。
梳状滤波器可以用来抑制周期性噪声或增强周期性信号分量,语音中表示身份信息的基音频率呈现周期性,因此采用梳状滤波器对语音信号的每一帧进行自适应滤波,加强基音频率以及各阶次谐波,提高信噪比。
陷波滤波器的冲激响应H(z)如式(10)所示:
式中:Q为滤波器阶数;ρ为极点大小,当极点的幅值接近1 时,滤波器的带宽在谐波附近收紧;m为谐波次数;fi为第i帧的基音频率。
对语音信号的每一帧进行离散傅里叶变换,得到Si(k)如式(11)所示:
式中N为傅里叶变换点数,实验中取N为512。
将每一帧的离散傅里叶系数减去滤波后的离散傅里叶系数,其中K为直流增益。
计算能量密度函数Pi(k)为:
对Pi(k)取对数,得到频谱的幅度值如下:
对得到的二维矩阵进行映射,横轴代表时间,纵轴代表频率,得到改进后的语谱图图像,图4 为改进后的语谱图与原始语谱图对比。
图4 改进后的语谱图与原始语谱图对比
深度学习算法伴随着计算机性能的提升,慢慢成为了主流算法,典型的深度学习算法有卷积神经网络(CNN)、循环神经网络(RNN)以及对抗神经网络(GAN)等。卷积神经网络是深度学习最为典型的网络模型,目前已经广泛地应用于计算机视觉、自然语言处理等领域。卷积神经网络的结构可以分为3 层:卷积层、池化层和全连接层。通过卷积运算提取输入数据的特征参数,结合激活函数、降采样、池化等处理得到分类结果。但传统的卷积神经网络内存需求大、运算量大,导致无法在移动设备以及嵌入式设备上运行。随后Google 团队在2017 年提出了MobileNet 网络[18],相比于传统卷积神经网络,在准确率小幅度降低的前提下大大减少了模型参数与运算量。2018 年,Sandler 等人又进一步提出了 MobileNetv2,解决了 MobileNetv1 中 Separable Convolution 存在的输入层Kernel 数量固定的不足,并使得模型更小、准确率更高。
本文将采用MobileNetv2 作为网络模型进行训练分类,如表1 所示。其中t为扩展因子,c为输出特征矩阵的深度,n为重复操作的次数,s为步长,网络模块中除了第一层,其余层的步长s都为1,k为网络分类的类别数。当步长s等于1 时,网络进行shortcut 连接,也就是残差网络中的捷径分支,当网络中进行shortcut 连接时,前后维度必须相同,通过shortcut 可以直接将浅层的信息传递到深层,一方面可以解决退化问题,另一方面也可以看作是特征重用。
表1 网络结构模型
MobileNetv2 网络结构中的特点是倒残差结构块(Inverted Residual block)和线性瓶颈(Linear Bottlenecks)结构,倒残差结构中首先对输入特征矩阵进行1×1 卷积升维,再通过3×3 的深度可分离卷积运算,最后再通过1×1 卷积降维得到输出特征矩阵。当输入特征矩阵深度与输出特征矩阵深度相同时,即步长s等于1 时进行shortcut 连接,其结构流程如图5 所示。
图5 Bottleneck 结构流程图
实验中采用的语音数据来自AISHELL-2 开源语音数据库,AISHELL-2 数据库是希尔贝壳公司录制的中文普通话语音数据库,语音内容涉及唤醒词、语音控制词、智能家居等领域。录音环境为安静室内,1 991 名中国不同地区的人参与录制,每人录制语音数为500 条。
本文从AISHELL-2 数据库中随机选取3 组数据进行实验,分别为A 组、B 组、C 组,每组10 个人,每人随机选取100 条语音,然后生成语谱图,实验中每组语谱图数据都按照7∶3 的比例分为训练集和验证集。考虑到AISHELL-2 数据库中的语音大多数为短语音,经过静音段去除后大部分语音时间都小于1 s,因此将语谱图的时间都设为0.5 s,大小为224×224 像素。其中:A 组语谱图的训练集为2 711 张,验证集为1 155 张;B 组语谱图的训练集为2 616 张,验证集为1 116 张;C 组语谱图的训练集为2 794 张,验证集为1 190 张。
实验中语音信号的采样率为16 000 Hz,帧长为512,帧移为160,傅里叶变换点数为512。模型训练的实验平台以及编程环境如表2 所示。
表2 实验平台及环境配置
MobileNetv2 网络模型中需要预先设置的参数有学习率、训练轮次、分类数、批次大小等。考虑到数据集的大小、计算机硬件条件、网络结构等因素,设置初始学习率为0.001、训练轮次为100 轮、分类数为10、批次大小为32。损失函数采用交叉熵损失函数(Cross Entropy Loss),并使用Adam 优化器进行梯度下降。
为了验证改进语谱图算法的有效性,分别对原始语谱图、梅尔倒谱图以及改进后语谱图进行对照实验,并分别对A、B、C 三组进行对照实验。实验中训练集与验证集个数相同,网络结构不变,只改变特征谱图。首先对数据集中的语音信号进行预处理,得到去除静音段的归一化语音信号;再对语音信号进行提取语谱图、梅尔倒谱图、改进后的语谱图等处理;最后在MobileNetv2 网络模型中训练,并对验证集计算网络模型识别准确率。
通过对小组A、B、C 分别进行实验仿真,模型在验证集中的识别率与迭代次数关系如图6 所示。将纵坐标识别率的区间设定为0.65~0.95。
图6 不同对照组的迭代次数与识别率的关系
从图6 中可以看到,在迭代60 次后识别率趋于平稳,模型收敛。在不同组中得到的识别率也有所不同,但在3 次对照实验中,改进后的语谱图相比原始语谱图以及梅尔倒谱图的识别率都有一定的提升。A、B、C三组实验中改进后语谱图的识别率较原始语谱图分别提高了2.3%、5.2%、3%。由实验结果可知,本文算法取得了良好的效果,验证了本文算法的有效性。
对C 组实验中改进语谱图的结果绘制混淆矩阵,如图7 所示。
图7 改进后语谱图实验结果的混淆矩阵
主对角线上为正确样本个数,其余部分为错分样本个数,主对角线上的颜色越深代表分类准确率越高,从图7 中可以直观地看出该模型的分类准确率较高,表明改进后的语谱图特征适合于说话人识别任务。
本文提出一种改进语谱图特征的方法,根据语音的短时特性对每一帧进行梳状滤波,从而得到说话人特征更加明显的语谱图。在AISHELL-2数据库中进行了3组对照实验,实验结果均表明,经过自适应滤波后得到的语谱图明显可以提高说话人识别的准确率,证明了该方法的有效性。在网络模型的选取中采用MobileNetv2 网络对语谱图进行处理可以大量减少模型参数,并确保准确率没有太大变化,可以应用于工程实践中。在深度学习过程中,网络模型训练往往需要较大的数据样本,对于数据样本较少的情况下,深度学习的训练效果往往较差,如何解决这一问题将会是今后研究的一个重点方向。
注:本文通讯作者为杜庆治。