陈亮 邵玉斌 龙 华 杜庆治 彭 艺 唐维康
(昆明理工大学信息工程与自动化学院,云南昆明 650500)
在广播音频信号中,说话环境复杂且说话人不同,因而对非特定说话人在复杂环境中的语种辨识准确率比较低。如何提取有效的语种特征参数是广播音频语种识别的关键。传统特征参数包括梅尔频率倒谱系数(MFCC)[1-2]、线性预测编码系数(LPC)、线性预测倒谱系数(LPCC)、gammatone 频率倒谱系数(GFCC)[3]等、耳蜗倒谱系数(CFCC)[4]、gammachirp 特征参数(GCFC)[5]。目前,语种识别方法的研究主要集中在如何提取有效的底层声学特征,放入对应的模型或神经网络中进行训练,得到语种识别模型。目前比较常用的是gammatone 频率倒谱系数参数,使用gammatone 滤波器代替梅尔滤波器,更好地模拟了人体耳蜗频率特征,再经过离散余弦变换,去除同一帧的不同特征维度之间的相关性,从而能更好地对特征参数进行建模,达到较好的识别效果。Gammatone 滤波器[6]在语音信号处理方面,包括说话人识别、语种识别、语音情感识别[7]等方面得到广泛的应用。文献[8]提出使用gammatone 滤波器滤波提取GFCC 参数和加上一阶和二阶差分的GFCC-D-A 特征用于语种识别,同时也使用GFCC 参数提取移位差分倒谱(SDC)特征,提高了语种识别的准确率。文献[9]提出使用融合MFCC 和GFCC 的特征参数用于说话人识别,加上一阶差分和二阶差分,取得了比MFCC 和GFCC 更好的说话人识别的识别准确率。文献[3]提出基于gammatone 时域滤波的说话人识别。文献[10]研究了经过gammatone 时域滤波得到的GFCC 参数在说话人识别中的抗噪性能。在基于神经网络相关语种识别算法中,文献[11]提出基于Senone 的深度神经网络语种识别算法。文献[12]提出LID-Senone统计特征比Senone 特征能达到更好的语种识别效果。文献[13]提出使用MFCC 进行DCT 变换之前的参数(Fbank 参数)画图使用LSTM 网络进行广播音频语种识别。文献[14]提出用Fbank 特征融合MFCC 特征使用x-vector 进行说话人识别,达到较好的识别效果。文献[15]使用深度神经网络按照音素状态进行聚类并结合深度瓶颈特征(Deep Bottleneck Feature,DBF)进行全差异空间建模,得到较好的语种识别效果。在噪声环境下,人们首先会采用一些语音增强算法[16]对语音进行去噪后再进行语种识别。文献[17]中首先提出了Resnet 神经网络,并在图像分类方向达到较好的识别效果。针对广播音频,传统的特征提取方法使用传统分类模型分类效果不理想,而基于神经网络的图像分类效果较好,将语种提取的特征参数画图使用神经网络进行分类,可以达到较好的分类效果。
本文提出使用GFCC进行DCT变换之前的参数用于语种识别,用gammatone 时域滤波提取特征参数。使用归一化后的gammatone 时域函数与预处理后的语音信号进行卷积,得到滤波后的信号,再进行分帧加窗,对帧求平方和并取对数,得到时域GF(gammatone filterbank)参数。与频域GF 参数[18]不同的是,时域GF 参数的滤波过程是在时域进行的。使用VGG19和Resnet34分类网络进行仿真实验,结果表明本文的时域GF 特征语种识别准确率在广播音频语料集和VoxForge 公共语料集下均高于传统的GFCC 特征、GFCC-D-A 特征、GFCC-SDC 特征及Fbank 特征。对语音加信噪比为10 dB、5 dB、0 dB的Noisex-92噪声库[19]中的不同噪声,提取特征参数画图并使用自动色阶算法[20]去噪,相比不去噪的识别结果,语种识别准确率在不同噪声不同信噪比下均有一定的提升。
本文提出一种gammatone 时域滤波方法。首先构建gammatone 时域函数,每个滤波器冲激响应如式(1)所示[3]。gammatone 滤波器组由M个不同中心频率的滤波器组成。
其中a为增益因子,n为滤波器阶数,一般取4就可,fi是第i个滤波器的中心频率,φ为初相位,取0,U(t)为阶跃函数。bi是第i个滤波器的带宽,其表达式为:
滤波器中心频率fi的计算方法如下:
先将滤波器中心频率范围frange转换到ERB 刻度上:
然后,将ERBs 范围均匀地依据滤波器个数划分,得出各滤波器在ERB 刻度上的位置,再反算为对应的频率点上,从而得出各滤波器的中心频率fi。
以采样率fs对式(1)进行离散化,得到离散信号的表达式为:
其中K为gammatone 滤波器函数的采样点数,i为滤波器的序号,fs为信号的采样频率,本文取16 kHz。
画出中心频率为300 Hz 和1 kHz 的gammatone滤波器的离散信号冲激响应和幅频响应如图1所示。
由图1(a)可以看出,中心频率为300 Hz的gammatone滤波器在第500个采样点之后幅值基本为0,因此用前面500 个点基本可以代表中心频率为300 Hz的滤波器函数,其后的信号可以省略。对中心频率为1 kHz 的gammatone 滤波器在第300 个采样点之后幅值基本为0,因此用前面300 个点基本可以代表中心频率为1 kHz 的滤波器函数,其后的信号可以省略。本文信号采样频率取16 kHz,滤波器中心频率范围frange取50 Hz~8 kHz,综合来看,对不同中心频率的gammatone 滤波器,本文均取前面1024个采样点代表其离散时域函数。图1(b)表示中心频率为300 Hz 和1 kHz 的gammatone 滤波器的幅频响应,横轴代表频率,纵轴代表幅值,两个滤波器的频率范围均为0~8 kHz。不同中心频率的滤波器冲激响应幅值范围不同,幅频响应的曲线走势不一样,但幅值等高。
为了提升低频信号降低高频信号,对式(1)的gammatone 滤波器时域函数进行最大值归一化,其表达式如下:
归一化后的滤波器幅度频率响应如图2 所示。从图中可以看出,gammatone 时域函数进行归一化后,对应的幅频响应低频部分被放大,高频部分幅值被压缩。
其中x(n)为输入的语音序列的第n个值,y(n)为经过滤波后的语音序列的第n个值。为第i个gammatone 滤波器的离散冲激响应,i为滤波器的序号。N为输入的语音序列的长度。滤波器个数为M,将M个滤波器的输出组合为一个M×N维的数据矩阵。
首先对语音信号进行能量归一化,滤除300 Hz~3400 Hz 以外的信号,并进行预加重。接着用第1 节描述的gammatone 时域滤波方法对语音信号进行滤波,然后进行分帧加窗,并对每帧信号取平方和,再取对数,得到时域GF 特征参数。提取流程如图3所示。
首先对语音信号进行能量归一化,去除不同语种语音的音量大小对语种识别的影响,表达式如下:
其中,x(n)为输入的一段语音序列,x1(n)为归一化后的语音序列。
由于语音的频率范围大致为300 Hz~3400 Hz,频率太低或太高的信号大部分为其他噪声或干扰信号,所以本文使用4 阶巴特沃斯滤波器进行带通滤波,滤除300 Hz~3400 Hz 以外的信号,排除其他非人声信号的干扰,从而更好地提取特征。由于巴特沃斯滤波器在边缘部分有一个过渡带,在过渡带内的信号无法完全滤除干净,所以在100 Hz~5500 Hz内仍有信号。经过滤波后的信号为x2(n)。
接着对语音信号进行预加重、分帧、加窗。为了提升高频分量,需要对信号进行预加重,减小高频分量的损失。预加重函数如式(8)所示。
其中,c为预加重系数,通常取0.97。x3(n)为预加重后的语音序列。
对进行预加重后的语音进行时域滤波。Gammatone 滤波器组的时域冲激响应与输入的语音信号x3(n)进行卷积,得到时域滤波结果。滤波过程在分帧前进行,避免了边缘效应,滤波效果较好。进行时域滤波后,得到M×N维的数据矩阵,M为滤波器的个数,N为语音信号的长度。对滤波后的信号进行分帧,加窗,得到M×a×b的三维数据矩阵。其中M为滤波器个数,a为分帧的帧长,b为分帧的帧数。本文分帧的帧长a取512,帧移s取256。
再对每帧信号求平方和,并取对数。设经过第i个滤波器滤波的第p帧的语音信号为yi,p(n),则其表达式为:
其中y1(i,p)为对第i维第p帧的一帧语音信号求平方和并取对数的值,i=1,2,…,M,p=1,2,…,b。最后得到时域GF特征参数,其矩阵维度为M×b维。
本文研究纯净语音和信噪比在0 dB~10 dB 范围内不同噪声情况下使用去噪算法去噪后的语种识别。设带噪语音为:
其中x2(n)为归一化并经过巴特沃斯带通滤波得到的无噪的语音信号,w(n)为噪声信号。则平均信噪比定义为:
对语音分别加信噪比为10 dB、5 dB、0 dB 的Noisex-92 噪声库[19]中的white 噪声、pink 噪声、factory 噪声、babble 噪声,提取特征参数画出图像,并使用图像去噪算法去除部分噪声后进行训练识别。
对语音信号加噪声后,使用归一化后的gammatone 时域函数提取时域GF 特征参数。并将图像的每个通道中像素较暗的一定比例的值令为0,将每个通道中像素较亮的一定比例的值令为1,对图像剩余像素值进行线性映射,并按比例对剩下的像素值进行重新分配,称为自动色阶算法[20]。
对语音分别加信噪比为10 dB、5 dB、0 dB 的pink 噪声,提取特征参数画出图,并分别使用自动色阶算法去噪,加噪和去噪后的时域GF 特征画出的图如图4所示。
图4 中左边为pink 噪声下不同信噪比的时域GF 特征图,右边为使用自动色阶算法去噪后的时域GF 特征图。图中白色较亮的部分包含语音的声调和共振峰信息,灰色较暗部分大部分为噪声信息。对比图4 中左边加不同信噪比pink 噪声的时域GF 特征图,可以看出,加噪的GF 参数部分语音信息被噪声淹没,信噪比越低可观察到的语音信息越少。图4 中右边的图像为使用自动色阶算法去噪后的时域GF 特征图,对比图4 左边的图像发现,大部分噪声被去除,保留了部分较亮的语音信息,图像的对比度增强了。但信噪比较低时,随着噪声被去除,一部分语音信息也被去除了。左边加噪的图像横轴代表语音分帧的帧数,纵轴代表滤波器序号也是GF 特征参数的维数。由于去噪算法是对画出的图像进行去噪,图像的横轴和纵轴变为图像的像素点个数,所以右边去噪后的图像横轴代表图像宽度,纵轴代表图像的高度。
本文实验语料1 来自中国国际广播电台,主要包括老挝语、柬埔寨语、缅甸语、藏语、维吾尔语、越南语六种语言。每个语种语料采集自多个频道的不同时间段的不同说话人的广播音频。六种语种的语音数据采集好后通过人工剪辑的方式,去掉了较长的静音段,音乐段,以及背景音乐较强的语音段。再通过音频转换软件转为单声道数据,采样频率为16 kHz,采样深度16位。每个语种的广播音频中都含有一定的背景音乐,且包括电台主持人说话语音,本地人说话语音及采访语音等。每个语种的语音都包含多个说话人,男女都有混合。每个语种的语料都被剪切成3 秒的固定长度的语音,每条语音之间重叠1 秒。实验语料中,每个语种训练集由6~8 个频道的不同时间段采集的广播音频组成,包含3600 条语音。测试集由不同于训练集的另外4~5 个频道的不同时间段采集的广播音频组成,每个语种包含1000条语音。
本文实验语料2来自VoxForge公共数据集上的六个语种:English,French,German,Italian,Russian,Spanish。每个语种150 个说话人,其中120 人的语种语音用于训练,另外30 人的语种语音用于测试,每个说话人10 条语音,每条语音长度3 秒,每个语种训练集1200 条语音,测试集300 条语音。语音采样频率为16 kHz,采样深度16位。
本实验使用python 语言测试本文提出的时域GF特征参数的语种识别准确率、加噪后的语种识别准确率以及对加噪后的语音提取特征参数使用自动色阶图像去噪算法去噪后的语种识别准确率。
本文所有实验均基于Win10 系统下的Py-Torch1.5.1 深度学习框架,使用VGG19 分类网络和Resnet34 分类网络和作为本文的语种识别分类网络。VGG19 分类网络训练epoch 大小设置为60,Resnet34 分类网络训练epoch 大小设置为40。VGG19 分类网络和Resnet34 分类网络的worker 数为8,batchsize 为16,网络初始学习率设置为0.0001,使用交叉熵损失函数,采用Adam 优化器和ReLU 激活函数。首先对六个语种提取特征参数画出的图像打标签,导入神经网络中进行训练,最后一次循环中神经网络的输出节点保存为语种识别模型,得到的语种识别结果作为每次训练的识别结果。重复10 次训练分类网络,并取10 次训练结果的平均值作为最终的语种识别结果。
实验1:测试本文的时域GF 特征参数的语种识别有效性。首先对语音进行预处理,提取特征参数画图并保存到文件夹中。接着读入训练集图像,对不同语种画出的图像打标签。使用VGG19 分类网络和Resnet34 分类网络分别训练不同语种的时域GF特征图,得到语种识别模型。将测试集的图像读入,导入语种识别模型中进行识别,得到识别结果。分别在广播音频语料集1 和VoxForge 公共语料集2上进行实验。与传统的GFCC 特征、加上一阶和二阶差分的GFCC-D-A 特征、GFCC-SDC 特征、Fbank特征进行对比,对比本文提出的时域GF 特征的语种识别结果。
实验2:测试gammatone滤波器取不同个数对语种识别结果的影响。滤波器分别取32 个、64 个、96 个、120 个进行时域滤波,提取不同维数的时域GF特征,分别测试其语种识别结果。
实验3:测试语音加不同噪声不同信噪比时提取的特征参数不使用和使用自动色阶图像去噪算法去噪后的语种识别结果。对不同语种的语音分别加信噪比为10 dB、5 dB、0 dB 的white 噪声、pink噪声、factory 噪声、babble 噪声,进行预处理后,与归一化后的gammatone 时域函数进行卷积,提取时域GF特征参数画图,并使用自动色阶算法去噪。与不去噪的特征参数的识别结果进行对比。
实验1:对语音提取32 维的GFCC 特征[8]、32 维的GFCC-D-A 特征[8]、GFCC-SDC 特征[8]、32 维Fbank特征[13]、和本文的32 维时域GF 特征。将提取的特征参数画成图像分别使用VGG19 分类网络和Resnet34 分类网络进行训练识别,在语料集1 和语料集2 下得到的六个语种的平均识别结果如表1 所示,每个特征参数的识别结果均取训练10次网络识别结果的平均值。其中语料集1为本文的广播音频语料集,语料集2为VoxForge公共语料集。
从表1中可以看出,本文的时域GF特征在不同的语料集和不同的分类网络下识别准确率均最高,较Fbank 特征、GFCC-SDC 特征、GFCC-D-A 特征、GFCC 特征均有一定的提升,GFCC 特征识别准确率最低。这是因为本文时域GF 特征进行gammatone滤波时是在分帧前进行的,避免了分帧的边缘效应,滤波效果较好。同时本文的时域GF 特征未进行DCT 变换,保留了语音的声调,共振峰等信息,将特征画成图像进行网络训练时能较好的学习到这些特征,达到较好的识别效果。使用Resnet34 分类网络在广播音频语料集1 和VoxForge 公共语料集2下的语种分类效果要好于VGG19分类网络,主要是因为Resnet34 分类网络引入了残差模块,解决了随着网络深度增加的梯度消失问题,能够很好地起到优化训练的效果。
表1中,对于不同的特征,加上一阶和二阶差分的GFCC-D-A 特征相比GFCC 特征识别准确率提升了1%~2%,这是因为加上差分后增加了更多的细节信息,具有更好的区分效果。GFCC-SDC 特征在GFCC-D-A 特征的基础上提升了1%~2%,这是因为SDC 特征增强了帧与帧之间的联系,在时序上包含了更多的特征信息。Fbank 特征相比MFCC 特征未进行DCT 变换,保留了特征之间的关联性,同时也保留了共振峰信息,达到较好识别效果。本文的时域GF特征相比识别结果最好的Fbank特征,在不同语料集和不同网络下识别结果均提升了1%~3%,这是因为提取该特征时使用gammatone 滤波器进行滤波,更好地模拟了人耳的听觉特征。同时,本文的时域GF 特征相比GFCC 特征识别结果提升了6%~7%。通过对比可以看出,本文提出的gammatone 时域滤波方法得到的时域GF 特征更有效,能更好地区分语种。由于Resnet34 分类网络能达到更好的分类效果,所以实验2 和实验3 均使用Resnet34 分类网络进行实验。
表1 不同特征参数的语种识别准确率(%)Tab.1 Language recognition accuracy rate of different characteristic parameters(%)
对五个特征参数在语料集1下使用Resnet34分类网络进行训练,重复训练Resnet34分类网络10次得到六个语种的识别准确率取平均值绘制曲线如图5所示。
从图5中可以看出,本文的时域GF特征对六个语种的识别结果都最好,说明本文的gammatone 时域滤波得到的时域GF 特征能更好的提取到语种相关的信息,能达到较好的区分度,在进行神经网络训练时能更好的训练语种识别模型。GFCC 特征相对来说对六个语种的识别结果都较差且波动较大,这是因为GFCC 特征经过DCT 变换后,能量集中在前几维,其他维数的参数值较小,且相邻值之间相差不大,所以在画成图像之后区分度不大,在进行神经网络训练时不利于语种特征的提取。
实验2:语音进行gammatone 时域滤波,滤波器分别取32 个、64 个、96 个、120 个,得到不同维数的GF 特征参数,使用Resnet34 分类网络进行训练识别,得到的识别结果如表2所示。
从表2 可以看出,对于不同维数的时域GF 特征,其语种识别结果相差不大,均在87%以上。64维时域GF特征识别结果最好,32维时域GF特征识别结果最差,同时维数较高时,识别结果也相对较差。这是因为参数维数较小时,其所含的信息量较少,识别结果较低,但参数维数较大时,所含的细节信息偏多,会造成一定的信息冗余。但120 维时域GF 特征画出的图语音轮廓信息最清晰,所以在后面对语音进行加噪去噪实验时,为了更好地对比去噪后的效果,后面提取的时域GF 特征维数取120维。
表2 不同维数时域GF特征语种识别准确率(%)Tab.2 Accuracy of GF feature language recognition in time domain with different dimensions(%)
六个语种的识别准确率柱状图如图6所示。从图6中可以看出,不同维数的时域GF特征参数对柬埔寨语的识别准确率都最好,说明柬埔寨语提取本文特征参数具有较好的区分性。对维吾尔语的识别结果相对来说较差,但六个语种的整体识别结果基本在83%以上。不同维数的GF 特征使用分类网络进行语种分类时对六个语种的识别准确率也会有一定差别,但120维时域GF特征对六个语种的识别准确率相对较为平均。
实验3:对不同语种的语音分别加信噪比为10 dB、5 dB、0 dB 的white 噪声、pink 噪声、factory 噪声、babble 噪声,提取时域GF 特征画图,使用Resnet34 分类网络进行训练识别,并使用自动色阶算法对图像去噪,对去噪后的特征进行训练识别。经过实验,本文去除图像中最小值的20%和最大值的1%识别效果最好。通过模型训练和语种识别,得到六个语种在四个不同噪声的不同信噪比下的加噪与去噪的识别结果如表3所示。
从表3的结果可以看出,对于不同的噪声,在不同信噪比下加噪和去噪后的识别结果也不一样,但去噪后的识别结果明显高于不去噪的识别结果。在white 噪声环境下,去噪后的识别结果最好,在信噪比为0 dB时可以达到81%的识别准确率,这是因为白噪声在整个频率段的分布较为均匀,在使用图像去噪算法去噪时较为容易去除。在factory 噪声和babble 噪声下加噪和去噪后的识别结果相对较差,这是因为这两种噪声都是非平稳噪声,噪声信号的值也会比较大,容易与语音信号混叠,在进行图像去噪时不易去除,且信噪比越低,识别结果越差。同时,在不同的噪声环境中不同信噪比下本文的时域GF 特征的语种识别结果均较好,且在信噪比为0 dB 时在四个噪声中的识别结果仍然达到70%以上,说明本文提取的时域GF 特征有效,具有一定的抗噪能力。在不同噪声不同信噪比下,去噪后识别结果相对于加噪的识别结果均有一定的提升,说明使用归一化后的gammatone 时域滤波器提取的时域GF 特征在使用自动色阶算法去噪后的语种区分能力相对于不去噪的结果要好,验证了在噪声环境中针对本文的时域GF 特征使用自动色阶图像去噪算法去噪后的语种识别准确率较高,说明本文的算法有效。
本文提出使用gammatone 时域滤波提取特征参数用于语种识别。将提取的特征参数画成图像使用VGG19 分类网络和Resnet34 分类网络进行训练识别,对比了不同特征参数在广播音频语料集1 和VoxForge 公共语料集2 上的识别结果。结果表明,本文的时域GF 特征相比GFCC 特征、GFCC-D-A 特征、GFCC-SDC 特征和Fbank 特征,可以达到更好的语种识别效果。使用Resnet34 分类网络进行语种分类,在广播音频语料集1 下六个语种可以达到87%的识别准确率,识别效果最好。同时,本文对比了不同维数的时域GF 特征对语种识别的影响,发现GF 特征的维数对语种识别的准确率影响不大。为了模拟复杂噪声下的语种识别,选取Noisex-92 中四种不同噪声并对语音加噪,提取时域GF 特征,使用自动色阶算法去噪,提升了图像的对比度,在不同噪声不同信噪比下语种识别准确率均有一定的提升。同时,不去噪的时域GF特征语种识别结果也较好,说明本文提取的特征参数具有一定的抗噪能力。由于广播音频本身就含有一定的噪声,在后续的工作中还将继续研究如何更好地去除噪声,并改进特征提取算法来提升广播音频语种识别的准确率。