掌桥专利:专业的专利平台
掌桥专利
首页

一种基于注意力机制循环神经网络的声纹识别方法

文献发布时间:2023-06-19 11:52:33


一种基于注意力机制循环神经网络的声纹识别方法

技术领域

本发明涉及声纹识别技术领域,尤其涉及一种基于注意力机制循环神经网络的声纹识别方法。

背景技术

声纹识别是生物特征识别中的重要组成部分,由于声纹采集的过程十分简单、且声音短期内具有不变的特性,能够作为身份认证的关键特征。其过程是对说话人的语音特征提取,并于原有的特征进行对比,来确定说话人的身份。声纹识别以其便捷、安全可靠等特点,在安防领域、司法公安领域、医疗以及军事领域都有广泛的应用前景。

声纹识别技术在内容上可分为文本相关和文本无关两个类别。在文本无关的声纹识别方法中,不规定说话人的发音内容,说话人的文本可以随机产生,但模型的建立相对困难,且识别效果较差,所以在实际使用中的推广存在很大的局限性。在文本相关的识别方法中,说话者必须按照固定的文本来讲话,且训练语音和测试语音的文本必须相同,这种识别方法的模型较小,且能达到较高的准确率,在现阶段落地应用范围较广。

声纹技术通常包括语音信号预处理、特征提取及模型匹配三个阶段。其中声纹特征的提取是识别过程的基础,特征表达的性能对后续识别的效果影响较大。传统的声纹识别方法如高斯混合通用背景模型(GMM-UBM)、动态时间规整、矢量量化(VQ)等,但此类算法多基于最大后验概率或最大似然回归准则训练模型,为每个说话人建模时会占用大量存储资源且效果很难达到指定标准。随着深度学习神经网络逐渐深入各个领域,声纹识别技术也开始转向深度学习领域进行探索。传统声纹识别的深度学习方法主要是包括卷积神经网络(CNN)和长短期记忆网络(LSTM),基于CNN的声纹识别技术提取声纹特征时忽略了语音原本的时间序列特征,而LSTM虽然考虑了语音特征的时间序列,但由于LSTM网络巨大的参数量和运算需求,无法达到移植嵌入式平台计算量小的需求。

发明内容

本发明的目的是针对现有技术的缺陷,提供了一种基于注意力机制循环神经网络的声纹识别方法。

为了实现以上目的,本发明采用以下技术方案:

一种基于注意力机制循环神经网络的声纹识别方法,包括步骤:

S1.采集不同说话人多个相同文本的语音数据,并将采集的语音数据进行前端预处理,得到处理后的语音数据;

S2.生成与处理后的语音数据相对应的固定长度的语谱图;

S3.通过自适应滤波器提取语谱图中的声纹特征系数;

S4.构建基于循环神经网络GRU与注意力机制结合的网络架构,将不同说话人的声纹特征系数输入至构建的网络架构中进行训练,得到声纹识别模型;

S5.将用户注册和验证阶段的语音声纹特征输入声纹识别模型,声纹识别模型输出最终的识别结果。

进一步的,所述步骤S1具体包括:

S11.采集不同说话人多个相同文本的语音数据,并对采集的语音数据进行静音抑制VAD处理,得到声音的有效信息;

S12.将得到的声音有效信息划分为训练集和测试集,并对训练集随机添加噪声;所述训练集随机添加的噪声包括高斯噪声、谐波干扰、不同环境下的底噪。

进一步的,所述步骤S2具体包括:

S21.对语音数据进行预加重、分帧、加窗操作,通过短时傅里叶变换将训练集和测试集中的每个语音数据转化为语谱图,并保存转换后的语谱图;

S22.选定固定帧数,对保存的语谱图从后向前截取,得到固定长度的语谱图。

进一步的,所述步骤S21中对语音数据进行预加重操作,表示为:

H(z)=1-uz

其中,μ表示滤波器系数;H(z)表示输出信号的频域结果;z表示频率;

所述对语音数据进行加窗操作,表示为:

S′(n)=S(n)×W(n) (2)

其中,S(n)表示分帧后的语音信号;n表示第几帧;n=0,1,…,N-1,N表示帧的大小;S′(n)表示加窗后的语音信号;W(n)表示汉明窗函数,表示为:

其中,a表示窗口系数。

进一步的,所述步骤S21中通过短时傅里叶变换将训练集和测试集中的每个语音数据转化为语谱图,表示为:

其中,x(n)表示输入的语音信号,M表示傅里叶变换的点数;X

进一步的,所述步骤S3具体为:

S31.将保存的语谱图中所包含的能量谱通过一组Mel尺度的三角形滤波器进行处理;其中滤波器的频率响应表示为:

其中,

S32.计算每个滤波器输出的对数能量,得到声纹特征系数;表示为:

其中,S(m)表示对数运算后的声纹特征系数。

进一步的,所述步骤S4具体如下:

整个网络架构从上到下一共六层,包括三个GRU层、一个全连接层和一个注意力机制层,最后连上一个L2正则层,每一层的输入是上一层的输出;样本批次选择4个人每个人5句话作为网络架构的Batch,每个语谱图截取的帧数为后70帧,并且使用40维的对数Fbank声纹特征参数,即网络架构的输入大小为:70*20*40;

网络架构的第一层、第二层和第三层均是GRU层,且隐状态节点个数均为128,步长均为70,得到的输出大小为70*20*128;

网络架构的第四层为全连接层,输入的维度为128,特征的映射维度为64,输出大小为70*20*64;

网络架构的第五层为注意力机制层,每个时刻乘以一个权重,对所有时刻进行加权平均,得到输出大小为20*64;

注意力机制的表达式为:

其中,e

将转换结果进行归一化操作,得到:

其中,α

其中,ω表示注意力机制层输出的结果;

网络架构的第六层为L2正则层,相当于对注意力机制层的输出做批归一化,而不改变网络架构的输出。

进一步的,所述步骤S4中还包括将广义损失函数引入构建的网络架构中,并作为网络架构的目标函数,具体为:

将每个批次的声纹特征系数构建出一个列向量,表示为:

其中,x

将列向量输入网络架构,并对输出的高阶声纹特征系数进行L2正则化处理,表示为:

其中,f()表示Batch从输入到输出的网络架构表达式;w表示网络架构的参数;e

计算列向量中的声纹特征矩阵内的余弦相似度,表示为:

S

其中,w

将余弦相似度输入至广义损失函数中进行前馈神经网络训练,表示为:

其中,Batch

进一步的,所述步骤S5具体包括:

S51.将用户注册和验证阶段的语音声纹特征输入识别模型中,分别提取声纹高阶特征;

S52.计算提取的声纹高阶特征之间的余弦相似度,从而得到最终识别的结果,并将计算的余弦相似度与阈值对比,若计算的余弦相似度大于阈值,则说明是同一个人。

进一步的,所述步骤S52中将计算的相似比与阈值对比,表示为:

0≤S

其中,S

本发明与传统神经网络相比,减少了模型的参数量,提高了模型的泛化能力和学习能力,使识别准确率有显著提升,实验中的网络模型平均错误率达到1.81%,显著提升了识别率,并成功移植嵌入式平台。

附图说明

图1是实施例一提供的一种基于注意力机制循环神经网络的声纹识别方法流程图;

图2是实施例一提供的一种基于注意力机制循环神经网络的声纹识别方法模型架构图;

图3是实施例一提供的语谱图示意图;

图4是实施例一提供的加噪和无噪语音波形的对比示意图;

图5是实施例一提供的广义损失函数输入的批次形状示意图;

图6是实施例一提供的GRU模型和注意力机制混合模型的结构原理图;

图7是实施例一提供的训练损失函数变化示意图。

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。

本发明的目的是针对现有技术的缺陷,提供了一种基于注意力机制循环神经网络的声纹识别方法。

实施例一

本实施例提供一种基于注意力机制循环神经网络的声纹识别方法,如图1-2所示,包括步骤:

S1.采集不同说话人多个相同文本的语音数据,并将采集的语音数据进行前端预处理,得到处理后的语音数据;

S2.生成与处理后的语音数据相对应的固定长度的语谱图;

S3.通过自适应滤波器提取语谱图中的声纹特征系数;

S4.构建基于循环神经网络GRU与注意力机制结合的网络架构,将不同说话人的声纹特征系数输入至构建的网络架构中进行训练,得到声纹识别模型;

S5.将用户注册和验证阶段的语音声纹特征输入声纹识别模型,声纹识别模型输出最终的识别结果。

本实施例的一种基于注意力机制循环神经网络的声纹识别方法包括训练阶段和测试阶段;其中步骤S1-S4为训练阶段,步骤S5为测试阶段。

在步骤S1中,采集不同说话人多个相同文本的语音数据,并将采集的语音数据进行前端预处理,得到处理后的语音数据;具体包括:

S11.采集不同说话人多个相同文本的语音数据,并对采集的语音数据进行静音抑制VAD处理,得到声音的有效信息。

将不同说话人的语音数据进行静音抑制VAD处理,然后给定一个分贝阈值,当语音数据的分贝小于该阈值时,则被视为静音,此时去掉语音信号前后端静音,保留声音的有效信息。

S12.将得到的声音有效信息划分为训练集和测试集,并对训练集随机添加噪声。

对处理后的语音数据进行划分,90%的数据划分为训练集,10%的数据划为测试集,并对训练集随机添加噪声,添加的噪声包括10%的高斯噪声,10%的谐波干扰,使语音信号产生频偏,并且为了克服测试应用阶段不同恶劣环境下的噪声,再对训练集添加不同环境下的底噪,例如地铁、飞机场、餐厅、车内、厨房、公交、办公室等不同环境下的噪声,添加噪声能提高模型的泛化能力。

在步骤S2中,生成与处理后的语音数据相对应的固定长度的语谱图。

如图3所示为语谱图示意图,具体包括:

S21.对语音数据进行预加重、分帧、加窗操作,通过短时傅里叶变换将训练集和测试集中的每个语音数据转化为语谱图,并保存转换后的语谱图;具体包括:

S211.对语音数据进行预加重操作,表示为:

H(z)=1-uz

其中,μ表示滤波器系数,μ的值取0.9-1.0之间,在本实施例中取0.97;H(z)表示输出信号的频域结果;z表示频率。

如图4所示为加噪和无噪语音波形的对比示意图。

S212.对预加重后的语音片段进行分帧处理,并保持帧与帧之间的连续性及其平滑过渡;

S213.对语音数据进行加窗操作,其中窗函数汉明窗表示为:

其中,n=0,1,…,N-1,N表示帧的大小;a表示窗口系数,不同的a值会产生不同的汉明窗,本实施例中a取0.46;

每一帧语音乘以汉明窗,表示为:

S′(n)=S(n)×W(n) (3)

其中,S(n)表示分帧后的语音信号;n表示第几帧;S’(n)表示加窗后的语音信号;W(n)表示汉明窗函数。

S214.对加窗后的每一帧进行短时傅里叶变换得到频谱上的上的能量分布,从而得到语谱图,表示为:

其中,x(n)表示输入的语音信号,M表示傅里叶变换的点数;X

S22.选定固定帧数,对保存的语谱图从后向前截取,得到固定长度的语谱图。

在步骤S3中,通过自适应滤波器提取语谱图中的声纹特征系数;具体为:

S31.将保存的语谱图中所包含的能量谱通过一组Mel尺度的三角形滤波器进行处理;其中滤波器的频率响应表示为:

其中,

S32.计算每个滤波器输出的对数能量,得到声纹特征系数;表示为:

其中,S(m)表示对数运算后的Fbank特征系数,即为提取出来声纹特征。

在步骤S4中,构建基于循环神经网络GRU与注意力机制结合的网络架构,将不同说话人的声纹特征系数输入至构建的网络架构中进行训练,得到声纹识别模型。

在本实施例中,循环神经网络GRU与注意力机制结合的网络架构具体为:

整个网络架构从上到下一共六层,包括三个GRU层,一个全连接层和一个注意力机制层,最后连上一个L2正则层,每一层的输入是上一层的输出,样本批次选择4个人5句话作为网络架构的batch,每个声谱图截取的帧数为后70帧,并且使用40维的对数Fbank声纹特征参数,即网络架构的输入大小为:70*20*40;

网络架构的第一层、第二层和第三层均是GRU层,且隐状态节点个数均为128,步长均为70,得到的输出大小为70*20*128;

网络架构的第四层为全连接层,输入的维度为128,特征的映射维度为64,输出大小为70*20*64;

网络架构的第五层为注意力机制层,每个时刻(即步长)乘以一个权重,对所有时刻进行加权平均,得到输出大小为20*64;

注意力机制的表达式为:

其中,e

将转换的结果进行归一化操作,得到:

其中,α

其中,ω表示注意力机制层输出的结果;

网络架构的第六层为L2正则层,相当于对注意力机制层的输出做批归一化,不改变网络架构的输出。

在本实施例中,引入广义损失函数(general-loss)作为网络架构的目标函数,包括:

将每个批次的声纹特征系数构建出一个列向量,表示为:

其中,x

将列向量输入网络架构,并对输出的高阶声纹特征系数进行L2正则化处理,表示为:

其中,f()表示Batch从输入到输出的网络架构表达式;w表示网络架构的参数;e

计算列向量中的声纹特征矩阵内的余弦相似度,表示为:

S

其中,w

将余弦相似度输入至广义损失函数中进行前馈神经网络训练,表示为:

其中,Batch

如图5所示为广义损失函数输入的批次形状示意图;图6为GRU模型和注意力机制混合模型的结构原理图;图6为模型训练损失函数变化示意图;图7为模型构建代码和注释示意图。

在步骤S5中,将用户注册和验证阶段的语音声纹特征输入声纹识别模型,声纹识别模型输出最终的识别结果;具体包括:

S51.将用户注册和验证阶段的语音声纹特征输入识别模型中,分别提取声纹高阶特征;

S52.计算提取的声纹高阶特征之间的余弦相似度,从而得到最终识别的结果,并将计算的余弦相似度与阈值对比,若计算的余弦相似度大于阈值,则说明是同一个人。

其中,将计算的相似比与阈值对比,表示为:

0≤S

其中,其中,S

本实施例与传统神经网络相比,减少了模型的参数量,提高了模型的泛化能力和学习能力,使识别准确率有显著提升,并成功移植嵌入式平台。

实施例二

本实施例提供的一种基于注意力机制循环神经网络的声纹识别方法与实施例一的不同之处在于:

本实施例为了实现应用于一款耳机的文本相关声纹锁,使用Python语音并基于TensorFlow深度学习开源框架实现了模型的搭建,实验器材以及所用的开源库版本清单如表1所示。

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

实验数据:

使用的数据集是开源VCTK-Corpus以及公司内部siri和天猫精灵数据集,其中VCTK-Corpus包括109个人每个人说一句相同文本的句子,每个句子文本为“Please CallStella”的1-4s的短句。siri数据集包括1043个人每个人说1到5个0-3s的短句,总共有5740个同样文本“嘿,siri”的句子。天猫精灵数据集包括1020个每个人说1到5个0-2s的短句,总共有5200个同样文本“天猫精灵”的句子。由于VCTK-Corpu数据集为英文数据集,且数据量较小,故实验主要使用siri和天猫精灵数据集来作为测试模型准确度的语料,VCTK-Corpus数据集用来测试模型的超参数调整对模型效果的影响。

算法模型平均错误率实验:

使用上文所说的siri和天猫精灵数据集进行实验,选取4个人,5句话作为模型的输入,则模型的Batch为20,输出模型后计算每句话之前相互的余弦相似度,得到相似度矩阵后放入广义损失函数进行训练,在文本相关声纹识别方面上,需要采用平均错误率(EER)作为模型效果的评判标准,表达式为:

其中FN为同一说话人被判别为不同说话人的个数,TN为同一说话人判断对的个数,FP为不同说话人被判断同一说话人的个数,TP为不同说话人被判断对的个数;

其中FNR为同一说话人被判别为不同说话人的比例,FPR为不同说话人被判断为同一说话人的比例,EER为平均错误率。

在迭代100000次后分别在测试集上看模型的EER,选用CNN模型和LSTM模型作为基准模型,以此来判定GRU和注意力机制模型对识别效果的提升。实验结果如表2所示。

表2文本相关声纹识别平均错误率测试结果

从表2中可以看出,循环神经网络的效果在文本相关方面的识别率是优于卷积神经网络的,且提出的GRU和注意力机制的混合模型相比于LSTM和CNN的模型,平均错误率在siri数据集上分别提高了0.34%和0.5%;在天猫精灵数据集上分别提高了0.31%和0.57%。因此可以得出结论,GRU和注意力机制模型相对于CNN和LSTM深度学习算法,识别率有了较大的提高。

模型参数量对比

为了达到移植嵌入式平台的标准,要使得算法模型的参数量尽可能的小,将上述三个模型的参数量进行对比,实验结果如表3所示。

表3声纹识别模型参数量对比结果

可以从表3中看出,GRU和注意力机制混合模型的对比比LSTM模型降低了114879个参数量;对比于ResNetCNN模型降低了23,462,973个参数量,使模型所占的内存有了明显减少,达到了在不降低声纹识别平均错误率的前提下,移植嵌入式设备计算量小,所占存储空间小的需求。

加噪训练和无噪训练的对比:

上述的实验都是直接使用原始数据集进行训练的,而siri和天猫精灵数据集都是在接近于理想环境下录制的,其语音中的背景噪声可以忽略不计。然而在设备实际的使用过程中,录音时所在的复杂环境难免会有各种各样的噪声,从而导致模型的效果变差。因此为了测试噪声对模型训练的影响,设计了如下实验。

先定义一下信噪比,信噪比的表达式为:

其中,SNR代表信噪比,单位为db,P

设置添加噪声的信噪比为20db,对siri和天猫精灵数据集随机添加各种复杂环境下的噪声,包括高斯白噪声、地铁噪声、车内噪声、公交噪声等,再输入模型进行训练,跟无噪训练版本在测试集上对比,实验结果如表所示。

表4加噪训练和无噪训练在测试数据集上的结果

由表4可以看出,对于加噪训练的模型,在测试集上的效果是优于无噪训练的结果,虽然下降不是很明显,但在一定程度上提升了模型的泛化能力。

实验结论:

从实验结果中可以总结出如下结论:(1)GRU和注意力机制的混合模型对比于深度学习算法的识别率有显著的提升;(2)为了满足移植嵌入式平台的需求,GRU和注意力机制的混合模型的参数量有了巨大的减少,所占的存储内存有了明显的减少,提升了嵌入式平台的运算性能;(3)在加噪训练的情况下,模型对于测试集的识别效果有了比较高的提升,说明加噪训练的模型有了很强的泛化能力,并且提高了算法的鲁棒性。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

相关技术
  • 一种基于注意力机制循环神经网络的声纹识别方法
  • 基于谱图变换和注意力机制循环神经网络的雷达HRRP目标识别方法
技术分类

06120113081604