一种基于彩色图像rgb映射特征的cnn声纹识别方法及系统

文档序号:1312681 发布日期:2020-07-10 浏览:25次 >En<

阅读说明:本技术 一种基于彩色图像rgb映射特征的cnn声纹识别方法及系统 (CNN voiceprint recognition method and system based on RGB mapping characteristics of color image ) 是由 张晶 于 2020-03-27 设计创作,主要内容包括:本发明公开一种基于彩色图像RGB映射特征的CNN声纹识别方法及系统,该方法的实现过程为:S1:输入语音数据;S2:提取特征,从语音数据中提取特征,所提取特征包括:静态、一阶差分,二阶差分特征,用以充当图像RGB中红色、绿色和蓝色的角色;S3:将提出的特征输入到构建的CNN模型,得出识别结果。本发明与现有技术相比,相比较于传统GMM模型识别率具有显著的提高;语音时长对于CNN识别率的影响很小,在噪声环境下,CNN识别率依然维持在很高的水平,说明CNN对于噪声具有很好的鲁棒性。(The invention discloses a CNN voiceprint recognition method and a CNN voiceprint recognition system based on RGB mapping characteristics of a color image, wherein the method comprises the following implementation processes: s1: inputting voice data; s2: extracting features, extracting features from the voice data, the extracted features including: static, first order difference, second order difference features to serve the role of red, green and blue in image RGB; s3: and inputting the proposed features into the constructed CNN model to obtain a recognition result. Compared with the prior art, the recognition rate of the GMM model is remarkably improved; the voice duration has little influence on the CNN recognition rate, and the CNN recognition rate is still maintained at a high level in a noise environment, which shows that the CNN has good robustness to noise.)

一种基于彩色图像RGB映射特征的CNN声纹识别方法及系统

技术领域

本发明涉及语音识别领域,更具体地,涉及一种基于彩色图像RGB映射特征的CNN声纹识别方法及系统。

背景技术

在传统说话人识别中,普遍采用的是高斯混合模型-通用背景模型(GMM-UBM)。但GMM-UBM模型是传统的浅层的且不完全的学习方式。在低信噪比的环境下识别率将大大降低,且其对语音信号的长度有较高的要求,故在实际应用中,该方法将无法提供较好的说话人识别效果。由于深度学习具有强大的从浅层特征学习高层特征的能力,因此专家学者提出将深度学习方法引入到说话人识别系统。深度学习能够通过学习一种深层非线性网络结构来实现对于复杂函数的逼近来表征输入数据的分布式表示。相比较于传统的浅层模型,对于相同数量的训练集,深度学习能够学习到更多的特征并实现更好的表征能力。

在深度学习中,CNN的应用除了为机器人和自动驾驶汽车提供视觉动力外,它还成功识别了面部,物体和交通标志。卷积神经网络是指那些至少在网络的一层中使用卷积运算来代替一般的矩阵乘法运算的神经网络,其通过稀疏连接,参数共享和平移不变使得在训练过程中极大地减少了需要训练的参数。CNN因为神经元之间的连接模型类似于动物视觉皮层的组织,个体的皮质神经元只对被称为感受野的有限视野区域内的刺激作出反应,不同神经元的接受区部分重叠,覆盖整个视野,这就类似CNN中的卷积层所起到的功能。CNN最关键的两层是卷积层和池化层,其中卷积层用于初步提取输入的特征,池化层用于进一步提取卷积层得到的特征,从而得到更加高层次的特征,此外池化层还能够减少特征维度,防止模型过拟合。

CNN深度神经网络最常用于分析视觉图像,已被证明在图像识别和分类领域非常有效。

发明内容

为了克服现有技术的不足,本发明首先提供一种高识别率的基于彩色图像RGB映射特征的CNN声纹识别方法。将语音数据组织成适合CNN处理的特征映射,将语音的静态、一阶差分,二阶差分特征,充当图片中红色、绿色和蓝色的角色,从而达到较高识别性能。

本发明还提供一种基于彩色图像RGB映射特征的CNN声纹识别系统。

为了实现上述目的,本发明的技术方案为:

一种基于彩色图像RGB映射特征的CNN声纹识别方法,具体为:

S1:输入语音数据;

S2:提取特征,从语音数据中提取特征,所提取特征包括:静态、一阶差分,二阶差分特征,用以充当图像RGB中红色、绿色和蓝色的角色;

S3:将提出的特征输入到构建的CNN模型,得出识别结果。

优选的,所述提取特征的具体方式为:将9-15帧语音的三种特征参数结合在一起形成一张图片,从MEL频谱系数计算的对数能量,将其表示为MFSC特征参数;

由于MFSC特征参数只包含了语音的静态特征,为了让特征参数包含更多的动态特征,还将提取语音的一阶差分MFSC特征参数和二阶差分MFSC特征参数;其中一阶差分MFSC特征参数提取公式如公式(1)所示,二阶MFSC特征参数如公式(2)所示;

y(k)=x(k+1)-x(k) (1)

z(k)=y(k+1)-y(k) (2)

在公式(1)中x(k)表示第k帧的MFSC特征参数,y(k)表示第k帧的一阶差分MFSC特征参数;在公式(2)中,y(k)表示第k帧的一阶差分MFSC特征参数,z(k)表示第k帧的二阶差分MFSC特征参数。

优选的,所述构建的CNN模型具体是:CNN模型构建,由两个卷积层,两个池化层和3个全连接层;具体是整个模型从上到下一共七层,每一层的输入是上一层的输出;

第一层是卷积层,第二层是池化层,第三层是卷积层,第四层是池化层,模型的后面三层都是全连接层。

优选的,使用36维的MFSC特征参数x(k),对其做一阶差分和二阶差分扩展得到y(k)和z(k),并展开前后一起共12帧的语音特征参数,从而得到由12帧语音组成的特征参数,即CNN模型的输入大小为:36*36;

CNN模型的第一层是卷积层,其中卷积核大小为5*5,步长为1,特征映射数为4,得到的输出大小为32*32;

第二层是池化层,池化核大小为2*2,步长为1,分别对上一层的4个特征图谱进行最大池化,输出大小为16*16;

第三层是卷积层,核大小和步长与第一层相同,特征映射为16,最后每一个特征图谱的输出大小为12*12;

第四层是池化层,核大小和步长与第二层相同,分别对上一层的16个特征图谱进行最大池化,输出大小为6*6;

第五,六,七层为全连接层。

优选的,在第五层中,采用了全局均值池化的方法,即将上一层传来几张图片转换成一个向量,第四层的输出是16张6*6的图片,对其做全局均值化就是求6*6=36个值的平均值,然后16张图片就转换为一个大小为1*16的向量;在第五层中设置了120个节点,且每个节点都与上一层的16张图相连;

第六层图中的节点数为1024,采用前馈神经网络的训练方式来与第五层相连;

在第七层中,节点数与说话人人数相等,在第七层的输出值中,哪个节点的输出值为0,则对应节点所代表的说话人就是最终结果。

一种基于彩色图像RGB映射特征的CNN声纹识别系统,具体为:

输入模块:输入语音数据;

提取特征模块:从语音数据中提取特征,所提取特征包括:静态、一阶差分,二阶差分特征,用以充当图像RGB中红色、绿色和蓝色的角色;

识别模块:将提出的特征输入到构建的CNN模型,得出识别结果。

优选的,所述构建的CNN模型具体是:CNN模型构建,由两个卷积层,两个池化层和3个全连接层;具体是整个模型从上到下一共七层,每一层的输入是上一层的输出;

第一层是卷积层,第二层是池化层,第三层是卷积层,第四层是池化层,模型的后面三层都是全连接层。

与现有技术相比,本发明的有益效果是:(1)CNN相比较于传统GMM模型识别率具有显著的提高;(2)语音时长对于CNN识别率的影响很小,可以忽略不计;(3)在噪声环境下,CNN识别率依然维持在很高的水平,说明CNN对于噪声具有很好的鲁棒性。

附图说明

图1为CNN的输入示意图。

图2为CNN输入数据示意图。

图3为CNN框架示意图。

具体实施方式

下面结合附图和具体实施方式对本发明作进一步描述。

1、声纹识别的输入数据

在使用CNN进行声纹识别时,输入数据需要被组织为多个特征图,将其输入CNN中。这是从图像处理应用程序中借用的术语,将输入数据组织为二维是很直观的,即像素在水平和垂直方向的坐标指数。对于彩色图像,RGB(红色,绿色和蓝色)的值可以被视为三个不同的二维特征图。

如何将语音数据组织成适合CNN处理的特征映射。将语音的静态、一阶差分,二阶差分特征(即,第一和第二时间导数),充当图片中红色、绿色和蓝色的角色,CNN的一个输入窗口将包含大量上下文(9-15帧),即将9-15帧语音的三种特征参数结合在一起形成一张图片来作为CNN的输入。通常使用的MFCC特征参数存在一个主要问题:DCT(离散余弦变换)将谱能量投射到一个可能无法保持局部性的新特征上。因此,将使用直接从MEL频谱系数(即不经过DCT这一步骤)计算的对数能量,将其表示为MFSC特征。由于MFSC特征参数只包含了语音的静态特征,为了让特征参数包含更多的动态特征,还将提取语音的一阶差分MFSC特征参数和二阶差分MFSC特征参数。其中一阶差分MFSC特征参数提取公式如公式(1)所示,二阶MFSC特征参数如公式(2)所示。

y(k)=x(k+1)-x(k) (1)

z(k)=y(k+1)-y(k) (2)

在公式(1)中x(k)表示第k帧的MFSC语音特征参数,y(k)表示第k帧的一阶差分MFSC特征参数;在公式(2)中,y(k)表示第k帧的一阶差分MFSC特征参数,z(k)表示第k帧的二阶差分MFSC特征参数。

一阶差分MFSC特征参数体现了相邻两帧MFSC特征参数直接的联系,而二阶差分MFSC特征参数是在一阶差分MFSC特征参数的基础上提取出来的,体现了相邻两帧的一阶差分MFSC特征参数直接的联系即相邻三帧MFSC特征参数之间的联系。这样通过提取一阶差分MFSC特征参数和二阶MFSC特征参数,就能够提取语音的动态特征。

通过使用MFSC特征参数、一阶差分MFSC特征参数和二阶差分MFSC特征参数来表示每个语音帧,以便描述在几个不同频段中每个频段的声能分布。最终CNN的输入如图1所示。

图1中Fi表示第i帧语音信号的MFSC特征参数以及它们的一阶差分和二阶差分组成的向量,n取值范围为9至15。

由于CNN的卷积在时间和空间上具有平移不变性,则可以利用这个特性来克服语音信号本身的多样性。将这个思想应用到声纹识别的声学建模中。简单来说就是将图1中的CNN输入数据当做一张图像来处理。

2、CNN框架搭建

使用36维的MFSC特征参数并对其做一阶差分和二阶差分扩展,并展开前后一起共12帧的语音特征参数,从而得到由12帧语音组成的特征参数,即CNN的输入大小为:36*36。CNN输入数据如图2所示。

所构建的CNN模型框架是由两个卷积层,两个池化层和3个全连接层组成。模型框架图如图3所示。

如图3所示,整个模型从上到下一共七层,每一层的输入是上一层的输出。其中输入是上文所说的大小为36*36的语音特征参数。

第一层是卷积层,其中卷积核大小为5*5,步长为1,特征映射数为4,这样得到的输出大小为32*32(36-5+1=32)。

第二层是池化层,池化核大小为2*2,步长为1,分别对上一层的4个特征图谱进行最大池化,输出大小为16*16(32/2=16)。

第三层是卷积层,核大小和步长与第一层相同,特征映射为16,最后每一个特征图谱的输出大小为12*12(16-5+1=12)。

第四层是池化层,核大小和步长与第二层相同,分别对上一层的16个特征图谱进行最大池化,输出大小为6*6(12/2=6)。另外池化在处理输入数据大小不统一时起着重要作用,例如在对不同时长语音进行声纹识别时,可以通过调整池化区域的偏置大小来实现固定分类层的输入大小。这样分类层就总是能得到与最初输入大小无关的相同数量的统计特征。例如,最终合池化可以输出2组综合统计特征,每组分别对应语音的前半段特征和语音的后半段特征,而不用管最初的语音时长。

所用模型的后面三层都是全连接层,这几层与传统的前馈神经网络相类似,事实上所用模型的前四层可以看作是对语音数据的特征提取,然后将这些特征输入到后面的前馈神经网络中来做识别。

如图3所示,第五,六,七层为全连接层,CNN中的全连接层与传统神经网络中的隐含层相类似,且在CNN中,全连接层一般被置在最后一部分即输出之前。

在第五层中,采用了全局均值池化的方法,即将上一层传来几张图片转换成一个向量,第四层的输出是16张6*6的图片,对其做全局均值化就是求6*6=36个值的平均值,然后16张图片就转换为一个大小为1*16的向量。在第五层中设置了120个节点,且每个节点都与上一层的16张图相连。

第六层图中的节点数为1024,采用前馈神经网络的训练方式来与第五层相连。在第七层中,节点数与说话人人数相关,即假设训练语音中说话人人数为10,则第七层节点数为10。第七层的输出值中,哪个节点的输出值为0则对应节点所代表的说话人就是最终结果。

3、代码实现

(1)卷积层和池化层的初始化

初始化卷积层和池化层的代码如表1所示。其中conv2d这个函数是用于构建卷积层,其输入参数包含“x”和“W”两个参数,x表示输入数据,W表示卷积核,在“tf.nn.conv2d(x,W,strides=[1,1,1,1],padding='SAME')”这一句中,strides=[1,1,1,1]是设置卷积在x和y方向的步长,strides[0]和strides[3]一般设置为1,strides[1]表示x方向的步长,strides[2]表示y方向的步长。

Max_pool_2x2这个函数是用于构建卷积层,其输入参数包含“x”一个参数,x表示输入数据,strides=[1,2,2,1]是设置卷积在x和y方向的步长,strides[0]和strides[3]一般设置为1,strides[1]表示x方向的步长,strides[2]表示y方向的步长。Ksize=[1,2,2,1]表示核的大小,ksize[0]和ksize[3]一般设置为1,ksize[1]表示池化核的宽度,ksize[2]表示池化核的高度。

表1

(2)整个模型的构建,模型构建的代码和注释如表2所示。

表2

如表2所示,先用weight_variable函数来初始化卷积核,再用bias_variable函数来初始化卷积核的偏置值;然后用conv2d函数来构建一层卷积层。这样一层卷积层的构建就成功了。

卷积核的输出经过一个Relu激活层,这一层是直接通过使用TensorFlow中的Relu函数来实现的。最后再max_pool_2x2函数来构建一层池化层。

通过重复2次上述步骤,就构建好了所用模型中的两层卷积层和两层池化层。模型后面的三层都是通过调用TensorFlow中的函数所实现,只需要改变一些参数即可,因此在这里便不再赘述。

4、实施例

利用Python语言并基于TensorFlow开源库实现了模型,实验器材以及所用开源库版本清单如表3所示。

表3实验器材以及所用开源库版本清单

Pycharm版本 COMMUNITY 2019.1
Python版本 3.8.1
Matplotlib 3.0.3
Numpy 1.16.2
Pandas 0.24.2
Wheel 0.33.1
显卡 GTX1060 Ti
内存 16GB
CPU I7-8700
硬盘 256GBSSD+2TB机械硬盘

4.1实验数据

使用的数据是TIMIT语料库以及自录语料,其中TIMIT包括了630个人每个人说十句的句子,自录语料库包括了男女各15人,每人各40个句子。其中20句为5-10s的长句,另外20句为1-5s的短句。由于TIMIT库中的数据音质比较好,比较符合实验的理想条件,所以使用TIMIT中的语料来作为测试CNN准确度的语料。实验室自录语料则用于测试语料时长对于识别率的影响。

4.2 CNN声纹识别准确率实验

使用了上文所说的TIMIT语料库,其中选取了库中200个人的语料。选取每个人的8句话作为训练数据,剩下的2句话用作测试数据。选用GMM模型作为基准模型,用来评判CNN模型识别率提高了多少。实验结果如表4所示。

表4声纹识别准确率测试结果

从表4中可以看到,随着GMM维度的增加,其识别率也随着增加,但是还是低于CNN的识别率,CNN相比较于16维GMM、32维GMM、64维GMM,识别率分别提高了8.7%,7.8%,5.7%。因此可以得出结论,CNN相对于传统的GMM模型,声纹识别准确率有了较大的提高。

3.语音长度对于CNN声纹识别准确率影响的实验

为了测试语音长度对于CNN声纹识别准确率的影响,构建了一个语料库,其中包括了男女各15人,每个人各40个句子。其中20句为5-10s的长句,另外20句为1-5s的短句。其中训练了三个模型,模型A是长句模型,其中使用了每个人15句5-10s的长句来作为训练数据;模型B是短句模型,其中使用了每个人15句1-5s的短句来作为训练数据;模型C是混合模型,其中使用了每个人长短句各10句来作为训练数据。

测试时分为2组,其中第1组包括了每个人剩下的5句短句,分别用模型A,B,C来测试;第2组包括了每个人剩下的5句长句,也分别用模型A,B,C来测试,实验结果如表5所示。

表5语音长度对于CNN声纹识别准确率影响实验结果

模型A 模型B 模型C
测试组1 85.6 86.5 87.1
测试组2 86.2 85.6 85.4

由表5可以看出,对于不同时长的数据测试不同的模型,总体波动范围不超过1%,因此可以得出结论,CNN在声纹识别中,语音的时长对于其识别率的影响可以忽略不计。

4.4噪声对于CNN声纹识别识别率的影响

上述两个实验所用的测试语料都是在理想环境下录制的,其语音中的背景噪声可以忽略不计。然而在实际使用情况中,录音时所处的环境难免会导致录入的语音带有或多或少的噪声。因此为了测试CNN模型对噪声的鲁棒性,设计了以下实验。

首先需要先定义一下信噪比,信噪比的计算方法如公式(3)所示

上式中SNR代表信噪比,单位为db,ps为信号的功率,pn为噪声的功率。

本次实验的噪声数据来源于NOISEX-92数据库,它包含了15种噪声,选取了生活中常见的几种噪声,分别为白噪声,汽车噪声,高频噪声和工厂噪声来作为加在测试语音上的噪声。

实验所用数据是TIMIT库中200人的语音数据,其中在每个人的10句话中抽选8句作为训练数据,2句作为测试数据。测试数据中有一句不加任何噪声,对于剩下的两百句语音,将其等分为4份,分别添加白噪声,汽车噪声,高频噪声和工厂噪声。实验结果如表6所示。

表6噪声对于CNN声纹识别识别率的影响实验结果

噪声源 识别率(%)
不加噪声 86.8
白噪声 84.3
汽车噪声 85.9
高频噪声 82.6
工厂噪声 86

由表6可知,对于分别加了四种噪声的数据,其最终识别率下降的不是很明显,因此,可以得出以下结论,CNN对于噪声具有良好的鲁棒性。

从实验结果中总结出以下几点:

(1)CNN相比较于传统GMM模型识别率具有显著的提高;(2)语音时长对于CNN识别率的影响很小,可以忽略不计;(3)在噪声环境下,CNN识别率依然维持在很高的水平,说明CNN对于噪声具有很好的鲁棒性。

以上所述的本发明的实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神原则之内所作出的修改、等同替换和改进等,均应包含在本发明的权利要求保护范围之内。

13页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种基于语音识别的教室签到方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!