发明内容
针对上述问题,本发明的一个目的是提供一种基于自适应中心锚的语种识别方法,该方法在前端使用有效的数据增强扩大数据集的同时也增加了数据集的鲁棒性,在编码层使用多尺度融合的残差神经网络增强骨干网络的特征表达能力,在后端先后使用了分类损失和度量损失进一步提升识别的准确率。
本发明的第二个目的是提供一种基于自适应中心锚的语种识别系统。
本发明所采用的第一个技术方案是:一种基于自适应中心锚的语种识别方法,包括以下步骤:
S100:构建语种数据集;
S200:对所述语种数据集中的语音数据进行增强处理;
S300:提取所述增强处理后的语音数据的特征,生成特征数据集;
S400:构建深度神经骨干网络,并基于分类损失函数采用有监督学习方式训练所述深度神经骨干网络;
S500:基于度量损失函数,采用自适应中心锚方法进一步训练所述深度神经骨干网络;
S600:基于所述训练后的深度神经骨干网络进行语种识别。
优选地,所述步骤S100中还包括对所述语种数据集中的语音数据进行预处理,包括以下子步骤:
S110:抽取所述语种数据集中同一语种的所有语音数据进行拼接;
S120:计算所述拼接后得到的语音数据中的连续静音段,若连续静音段大于设定阈值,则除掉该连续静音段。
优选地,所述步骤S200中的增强处理包括增强语音信噪比、语速、时域随机裁剪和语音变调中的一种或多种。
优选地,所述步骤S400中的深度神经骨干网络是基于多尺度的残差神经网络。
优选地,所述分类损失函数采用Categorical_Crossentropy、amsoftmax和aamsoftmax中的一种。
优选地,所述度量损失函数采用Triplet-Loss和Contrastive Loss中的一种。
优选地,步骤S500包括以下子步骤:
S510:计算每个语种训练集中的特征在所述深度神经骨干网络输出的结果,并基于各个语种训练集的输出结果计算均值向量以得到每个语种的特征中心;
S520:计算各个语种训练集的输出结果与其对应的语种特征中心的欧式距离,基于欧式距离构建Anchor集和非Anchor集;
S530:基于Anchor集和非Anchor集对所述深度神经骨干网络进行训练,不断更新特征中心和特征中心附近的样本,以实现自适应中心锚的选取;
S540:重复执行步骤S510-S530,直至网络收敛。
优选地,所述步骤S520具体为:
计算每个语种训练集中的特征在所述深度神经骨干网络输出的结果与该语种特征中心的欧式距离,选取与各自特征中心相邻的前10%的对应的训练集作为候选的Anchor集;其余的训练集作为非Anchor集。
本发明所采用的第二个技术方案是:一种基于自适应中心锚的语种识别系统,包括语种数据集构建模块、增强处理模块、特征提取模块、第一训练模块、第二训练模块和语种识别模块;
所述语种数据集构建模块用于构建语种数据集;
所述增强处理模块用于对所述语种数据集中的语音数据进行增强处理;
所述特征提取模块用于提取所述增强处理后的语音数据的特征,生成特征数据集;
所述第一训练模块用于构建深度神经骨干网络,并基于分类损失函数采用有监督学习方式训练所述深度神经骨干网络;
所述第二训练模块用于基于度量损失函数,采用自适应中心锚方法进一步训练所述深度神经骨干网络;
所述语种识别模块用于基于所述训练后的深度神经骨干网络进行语种识别。
优选地,所述第二训练模块执行以下操作:
计算每个语种训练集中的特征在所述深度神经骨干网络输出的结果,并基于各个语种训练集的输出结果计算均值向量以得到每个语种的特征中心;
计算各个语种训练集的输出结果与其对应的语种特征中心的欧式距离,基于欧式距离构建Anchor集和非Anchor集;
基于Anchor集和非Anchor集对所述深度神经骨干网络进行训练,不断更新特征中心和特征中心附近的样本,以实现自适应中心锚的选取;
重复执行上述操作,直至网络收敛。
上述技术方案的有益效果:
(1)本发明公开的一种基于自适应中心锚的语种识别方法在前端使用有效的数据增强扩大数据集的同时也增加了数据集的鲁棒性,在编码层使用多尺度融合的残差神经网络增强骨干网络的特征表达能力,在后端先后使用了分类损失和度量损失进一步提升识别的准确率。
(2)本发明通过语种数据的增强、神经网络结构的设计和训练过程的重新设计有效的提高了语种识别的准确度。
(3)本发明中网络的最终优化步骤是深度神经骨干网络结合度量损失函数网络的训练结果,由度量损失函数的定义可知,损失的计算高度依赖于三元组(Anchor,Pos,Neg)中选取问题,传统的训练方式Anchor为随机选取,因此给训练带来不稳定因素,合理的Anchor应该是具有高度代表性的Anchor,本发明在训练过程中逐步迭代Anchor位置使得Anchor的选取更加合理;同时本发明先采用了深度神经骨干网络结合分类损失函数进行训练,加快了训练速度,给深度神经骨干网络结合度量损失函数提供了更好的初始值,提高准确率。
(4)本发明中基于Resnet34网络进行改进形成深度神经骨干网络(KYLANGS),使KYLANGS成为多尺度融合的残差神经网络,相较于Resnet34网络,KYLANGS能增强骨干网络的特征表达能力。
具体实施方式
下面结合附图和实施例对本发明的实施方式作进一步详细描述。以下实施例的详细描述和附图用于示例性地说明本发明的原理,但不能用来限制本发明的范围,即本发明不限于所描述的优选实施例,本发明的范围由权利要求书限定。
在本发明的描述中,需要说明的是,除非另有说明,“多个”的含义是两个或两个以上;术语“第一”“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性;对于本领域的普通技术人员而言,可视具体情况理解上述术语在本发明中的具体含义。
实施例1
如图1所示,本实施例公开了一种基于自适应中心锚的语种识别方法,包括以下步骤:
S100:构建语种数据集,对语种数据集中的语音数据进行预处理;
语种数据集(人声数据库)采用已有的语种数据库,该语种数据集的采样率均为16000HZ,包括35个语种,每个语种随机抽取10小时的语音数据;
以其中一种语种数据集为例,对该语种数据集中的语音数据进行预处理,包括:
S110:抽取语种数据集中同一语种所有的语音数据进行拼接;将该语种数据集抽取的所有语音拼接起来记作S src ;
S120:计算拼接后语音数据中的连续静音段,若连续静音段大于设定阈值,则除掉该段静音部分;
计算S src 中的连续静音段,当存在连续静音大于设定阈值的静音时候,去除掉该段静音;设定阈值例如为1s、0.5s;静音的判断标准为通过DB值判断,每隔0.1秒计算一次DB值,当DB小于50时,认为该段为静音,去除静音后的S src 记作S vad0 。
S200:对语种数据集中的语音数据进行增强处理;
对语种数据集中预处理后的语音数据进行增强处理,包括对语音信噪比的增强处理、语速增强处理、时域随机裁剪增强和语音变调(PitchShift)增强;
(1)语音信噪比的增强处理具体为:将环境噪音按照一定信噪比叠加到预处理后的语音数据中;其中,环境噪音是通过录制不同环境下的噪音,并经过重采样、拼接得到的,例如录制户外、地铁、车站、办公室等场景的噪音,并重采样到16000HZ,将其拼接在一起形成环境噪音,并记作Snoise;
(2)语速增强处理具体为:将经过语音信噪比增强处理后语音数据的语速加快0.7到1.3倍,即经过语速增强处理后的语速是经过语音信噪比增强处理后语音数据语速的0.7到1.3倍;
(3)时域随机裁剪增强的处理具体为:将语种数据集中经过预处理后的语音数据每间隔3秒随机设置0~0.5秒的数据为静音数据;
(4)语音变调增强处理具体为:将语种数据集中经过预处理后的语音数据随机向上或向下移动0~4个半音。
例如将S vad0 按照每3秒拆分成N个语音子段,分别记作(S vad10,S vad20 ,S vad30···S vadn0),以S vadi0为例依次做如下增强操作,其中i表示语音子段编号:
语音信噪比的增强:从Snoise中随机截取一段3秒时长的语音并记作Snoise seg ,将Snoise seg 叠加到S vadi0中并记作S vadi1,即S vadi1=S vadi0+Rand×0.5×Snoise seg ,其中Rand为0到1之间的随机数;
语速增强:将S vadi1进行重采样并记作S vadi2,即S vadi2=ReSample(S vadi1,SampleRatio),其中SampleRatio=[0.7,1.3],重采样可模拟语速的变化;
时域随机裁剪增强:将S vadi0在时域进行随机裁剪并记作S vadi3,裁剪的时长为0.5×Rand秒,其中Rand为0到1之间的随机数,被裁剪的区域的PCM值设为0;
语音变调增强:将S vadi0进行变调增强并记为S vadi4,即S vadi4=pitchShift(S vadi0,nsteps),其中nsteps为[-4,4]之间的随机整数,表示移动的半音数;
将S vadi1依次拼接起来记作S vad1,同理生成S vad2,S vad3,S vad4;由S vad1、S vad2、S vad3和S vad4形成经过增强处理后的语音数据,记作S vad ,S vad =(S vad0,S vad1,S vad2,S vad3,S vad4)。
语种中的任一种语言需要考虑到不同的说话内容、不同的说话人、说话人的说话场景以及说话人的年龄、性别、语气等诸多因素,现有的语种数据集几乎不可能囊括上述所有的情景,本发明在有限的语种数据上通过对语音数据进行增强处理能有效地囊括更多的语音情景,从而提高语种识别的准确率。
S300:提取增强处理后语音数据的特征,生成特征数据集;
(1)提取增强处理后语音数据的特征生成特征数据集;
对增强后的语种数据集进行梅尔(mel)特征提取并生成特征数据集;例如以语种数据集中任一语种的语音为例,该语种经过增强后的数据为S vad ,其他语种采用与以下相同的方法进行处理;
依次选取S vad 中的语音段并计算mel特征记作fea i ,时间间隔为3秒,其中i表示该语种的语音段编号;
提取mel特征时,帧长设为25毫秒,帧间步长为10毫秒,滤波器的个数为64,FFT的点数设置为512,因此fea i 的维度为64×300×1;
将所有的fea i 聚合在一起形成该语种的特征数据集合,记为Feas,则Feas的维度为:M×64×300×1,M为该语种可拆分的语音段个数。
(2)基于特征数据集构建训练集和测试集,其中单个语种的训练集和测试集的数量比例为4:1;
将特征数据集Feas划分为训练数据集(训练集)和测试数据集(测试集),训练集记作trainFeas,测试集记作testFeas;训练集和测试集的划分比例为4:1,trainFeas的维度为m×64×300×1,testFeas的维度为n×64×300×1,其中m=4×n;
生成训练标签(trainLabels)和测试标签(testLabels),trainLabels的维度为m×1,testLabels的维度为n×1,取值为当前语种的编号,从0开始计数;
将testFeas划分为testAnchorFeas和testPosFeas,testAnchorFeas和testPosFeas的划分比例为1:1;testAnchorFeas和testPosFeas的维度均为
;
当语种数据集中所有语音数据的特征计算完成后,分别将所有的trainFeas聚合在一起形成allTrainFeas,将所有的testFeas聚合在一起形成allTestFeas,将所有的trainLables聚合在一起形成allTrainLabels,将所有的testLabels聚合在一起形成allTestLabels;将所有的testAnchorFeas聚合在一起形成allTestAnchorFeas,将所有的testPosFeas聚合在一起形成allTestPosFeas;
假设allTestAnchorFeas的维度为K×64×300×1,依次遍历allTestAnchorFeas中的每个特征,从allTestFeas中随机选取与当前特征不是相同语种编号的特征,将这些特征聚合起来记作allTestNegFeas,allTestNegFeas的维度也为K×64×300×1;其中,testAnchorFeas为从测试集中选出的锚数据,testPosFeas为从测试集中选出的与锚相同标签的样本数据,allTestNegFeas为从测试集中选出的与锚不相同标签的样本数据。
生成tripletFeas,如图2所示,tripletFeas的生成方式为:从allTestAnchorFeas、allTestPosFeas和allTestNegFeas按序取出40个特征样本并组合在一起;最终tripletFeas的维度为3K×64×300×1。
S400:构建深度神经骨干网络,并基于分类损失函数采用有监督学习方式训练深度神经骨干网络;
深度神经网络的架构包括前端、编码层和后端;前端代表输入特征,即allTrainFeas,allTestFeas,allTrainLabels,allTestLabels,tripletFeas及[Anchor,Pos,Neg];编码层为骨干网络,骨干网络为深度神经骨干网络(KYLANGS),深度神经骨干网络(KYLANGS)是通过在Resnet34网络基础上进行改进得到,即KYLANGS网络为改进的Resnet34网络,深度神经骨干网络(KYLANGS)为基于多尺度的残差神经网络;后端为损失函数层,损失函数层包括分类损失函数和度量损失函数,其中,分类损失函数包括Categorical_Crossentropy、amsoftmax和aamsoftmax,度量损失函数包括Triplet-Loss和Contrastive Loss。
在深度神经骨干网络的基础上分别构建损失函数层,即分别构建深度神经骨干网络结合分类损失函数和深度神经骨干网络结合度量损失函数的神经网络,例如KYLANGS+Categorical_Crossentropy和KYLANGS+Triplet-Loss的神经网络,其中深度神经骨干网络结合分类损失函数用于训练初步的网络参数,形成一个基本可用的网络;深度神经骨干网络结合度量损失函数用于网络参数的进一步调优,不断迭代优化识别效果,提升网络准确率。
KYLANGS的结构图如图3所示,KYLANGS包括卷积层Conv1、Blocks1、Blocks2、Blocks3、Blocks4、StatPooling层(池化层)、Flatten层和Linear层;
其中Conv1的结构为Conv2D+BatchNormalization+Relu的结构,Conv2D中的kernel size为3×3,strides参数设置为1,输出神经元个数为32,padding参数设为same;已知网络的输入为64×300×1(不考虑batchsize维度),则经过Conv1后的输入维度为64×300×32。
Blocks1的结构如图4所示,所述Blocks1的结构中包括Conv_Bn_Relu_k_s_n和Concatenate函数;定义Conv_Bn_Relu_k_s_n,其中Conv_Bn_Relu表示Conv2D+BatchNormalization+Relu的结构,_k表示Conv2D的kernel size为k×k,_s表示strides参数设置为(s,s),_n表示Conv2D输出神经元个数为n;kernel size表示Blocks中的第一个卷积层的kernel size,Stride表示Blocks中的第一个卷积层的Stride;
Blocks1中经过Conv_Bn_Relu_3_1_32的输出的维度为64×300×32;
图4中虚线框的部分记为res2netblock,res2netblock中结构将被重复执行repets次,repets为被重复执行的次数;对于Blocks1,repets=3;当res2netblock第一次被执行时,res2netblock中第一个Conv_Bn_Relu_1_1_32的输入为Conv_Bn_Relu_3_1_32的输出,之后的输入来自res2netblock中的blockOutPut;
res2netblock中经过第一个Conv_Bn_Relu_1_1_32的输出的维度为64×300×32;将res2netblock中经过第一个Conv_Bn_Relu_1_1_32的输出切割成4个相同大小的张量(tensor),split1,split2,split3,split4的维度均为64×300×8;
split2,split3,split4对应的Conv_Bn_Relu_3_1_8神经元个数为Conv_Bn_Relu_1_1_32的1/4;
对split2做Conv_Bn_Relu_3_1_8操作,输出的维度为64×300×8;
将split2经Conv_Bn_Relu_3_1_8的输出结果叠加到split3然后做Conv_Bn_Relu_3_1_8,输出的结果维度为64×300×8;
对split4做类似的操作,输出的结果维度为64×300×8;
将split2,split3,split4经过一系列操作后的输出结果与split1拼接到一起,形成拼接后的tensor,拼接后的输出维度为64×300×32,从而实现了尺度因子为4的多尺度融合残差神经网络;
将拼接后的tensor再次输入第二个Conv_Bn_Relu_1_1_32,并与res2netblock第一次被执行时第一个Conv_Bn_Relu_1_1_32的输出结果进行相加,输出的结果维度为64×300×32,记为blockOutPut;
当res2netblock已被重复执行repets次时,blockOutPut直接输出,否则,blockOutPut将作为res2netblock中第一个Conv_Bn_Relu_1_1_32的输入;
Blocks2,Blocks3,Blocks4的结构与Blocks1相同,仅在参数上略有不同,Blocks2,Blocks3,Blocks4输出神经元的个数分别为64,128,256,repets的取值依次为4,6,3;Blocks中的第一个Conv2d中的stride由(1,1)变成(2,2);
Blocks2,Blocks3,Blocks4输出维度分别为:32×150×64,16×75×128,8×37×256;
StatPooling层(池化层)计算特征在时间维度的均值和方差,并将均值和方差组合起来作为输出凭,均值的输出结果维度为8×256,方差的计算结果维度为8×256,结合起来的维度为8×512;
Flatten层将StatPooling层输出的结果展开,变成4096的向量;
Linear层包括一个全连接层和一个L2_normalize函数,全连接层的输出神经元个数为256,Linear的输出为256位的归一化向量。
本发明中基于Resnet34网络进行改进形成深度神经骨干网络(KYLANGS),使KYLANGS成为多尺度融合的残差神经网络,相较于Resnet34网络,KYLANGS能增强骨干网络的特征表达能力。
本发明在前端有效的使用数据增强,扩大数据集的同时也增加了数据集的鲁棒性,在编码层使用多尺度融合的残差神经网络增强骨干网络的特征表达能力,在后端先后使用了分类损失和度量损失进一步提升识别的准确率。
S500:基于度量损失函数,采用自适应中心锚方法进一步训练深度神经骨干网络;
基于深度神经骨干网络结合分类损失函数的网络进行训练,直至测试集的准确率稳定时停止训练;例如使用KYLANGS+Categorical_Crossentropy的方式进行有监督的训练学习,采用allTrainFeas、allTestFeas、trainLabels和testLabels作为网络的输入,深度神经再接一个全连接层,全连接层的神经元个数为语种的数目(35),激活函数为softmax,损失函数为Categorical_Crossentropy;当测试集的准确率变化率小于0.01时停止训练;初始学习率为0.01,每10个epoch(轮次)减小10%,batchsize(1次迭代所使用的样本量)设置为64;
S510:计算每个语种训练集中的特征在深度神经骨干网络输出的结果,并基于各个语种训练集的输出结果计算均值向量以得到每个语种的特征中心;
例如当KYLANGS+ Categorical_Crossentropy的网络训练结束时,计算每个语种训练集中的特征在骨干网络(例如KYLANGS)输出的结果,并计算所有输出结果的均值向量得到每个语种的特征分布中心(特征中心);
S520:计算各个语种训练集的输出结果与其对应的语种特征中心的欧式距离,基于欧式距离构建Anchor集和非Anchor集;
计算每个语种训练集中的特征在深度神经骨干网络输出的结果与该语种特征中心的欧式距离,选取与各自特征中心相邻的前10%的对应的训练集作为候选的Anchor集;其余的训练集作为非Anchor集;
S530:基于Anchor集和非Anchor集对所述深度神经骨干网络进行训练,不断更新特征中心和特征中心附近的样本,以实现自适应中心锚的选取;
例如基于Anchor集和非Anchor集对KYLANGS+Triplet-Loss进行训练;采用KYLANGS+Triplet-Loss进一步优化整个网络,不断更新特征中心和选取特征中心的附近的样本,从而实现了自适应中心锚的选取;初始学习率设置为0.0001;每10个epoch减小10%;batchsize设置为120,包括40个Anchor、40个Pos和40个Neg;KYLANGS+Triplet-Loss单次训练流程示意图如图5所示;
S540:重复执行步骤S510-S530,直至网络收敛。
例如已知KYLANGS的输出为batchszie×256,将KYLANGS的输出记为Embeds;将allTrainFeas输入到KYLANGS中,得到每个语种Embeds;
以其中一种语种为例,得到该语种所有训练集的Embeds记作curEmbeds;计算curEmbeds的均值向量,即特征分布中心,记作curCenterEmbed;
计算curEmbeds与curCenterEmbed的欧式距离,取与curCenterEmbed最相邻的前10%对应的训练集作为Anchor集,其余的训练集作为非Anchor集;
当所有的语种完成后,形成35个Anchor集,35个非Anchor集;
对于一个batchsize,随机从35个Anchor集中取出40个特征作为Anchor,依次取出与Anchor对应语种的非Anchor集中的特征作为Pos,再依次取出与Anchor不是同一语种的特征作为Neg,最终形成的训练minibatch为[Anchor,Pos,Neg],其维度为120×64×300×1;
将minibatch作为输入,经KYLANGS计算其Triplet-Loss,Triplet-Loss的定义为:tripletloss=max(san-sap+alpha,0),KYLANGS的输出记为Embeds,testAnchorFeas在KYLANGS的输出记为AnchorEmbeds,testPosFeas在KYLANGS的输出记为PosEmbeds,allTestNegFeas在KYLANGS的输出记为NegEmbeds;已知batchsize为120,则AnchorEmbeds=Embeds[0:40],PosEmbeds=Embeds[40:80],NegEmbeds=Embeds[80:120],san为AnchorEmbeds与NegEmbeds的余弦距离,sap为AnchorEmbeds与PosEmbeds的余弦距离,alpha设为0.5;
当所有的Anchor集计算完成后,重新计算每个语种Embeds的均值向量,重新构建新的Anchor集,从而完成了自适应中心锚的选取;
当一个epoch完成后,将tripletFeas作为输入计算其Embeds,并计算sap和san,定义diff=sap-san,当相邻epoch的diff差值小于0.001时候,训练结束。
本发明以深度神经骨干网络结合分类损失函数进行训练,基于每个语种训练集在深度神经骨干网络的输出结果与该语种的特征中心的欧式距离得到三元组(Anchor,Pos,Neg),三元组(Anchor, Pos, Neg)作为深度神经骨干网络结合度量损失函数网络的输入值,不断更新三元组(Anchor,Pos,Neg)中的Anchor的值,其中Anchor的选取方法为:相同语种经骨干网络计算得到的特征分布的中心区域,选取语种特征中心区域附近的特征样本作为下一轮迭代的Anchor,即基于自适应中心锚进行训练。
上述方法中网络的最终优化步骤是深度神经骨干网络结合度量损失函数网络的训练结果,由度量损失函数的定义可知,损失的计算高度依赖于三元组(Anchor,Pos,Neg)中选取问题,传统的训练方式Anchor为随机选取,因此给训练带来不稳定因素,合理的Anchor应该是具有高度代表性的Anchor,本发明在训练过程中逐步迭代Anchor位置使得Anchor的选取更加合理;同时本发明先采用了深度神经骨干网络结合分类损失函数进行训练,加快了训练速度,给深度神经骨干网络结合度量损失函数提供了更好的初始值,提高准确率。
下面结合具体实例分析本发明的实际效果:
分别采用Resnet34+Triplet-Loss、Resnet34+Categorical_Crossentropy &Resnet34+Triplet-Loss、KYLANGS+Triplet-Loss、KYLANGS+Categorical_Crossentropy &KYLANGS+Triplet-Loss的方式进行训练;实验结果以等错误率(Equal Error Rate)为衡量指标,骨干网络使用经典的Resnet34作为对比;具体实验结果见表1。
表1 基于不同神经网络结构及训练方法进行训练的结果
神经网络结构 |
训练方式 |
EER |
Resnet34+Triplet-Loss |
随机选取Anchor |
5.31% |
Resnet34+Categorical_Crossentropy&Resnet34+Triplet-Loss |
基于自适应中心Anchor |
4.32% |
KYLANGS+Triplet-Loss |
随机选取Anchor |
4.15% |
KYLANGS+Categorical_Crossentropy &KYLANGS+Triplet-Loss |
基于自适应中心Anchor |
3.76% |
由表1中的数据可知,通过Resnet34+Triplet-Loss及随机选取Anchor的方式进行训练得到的语种识别模型的等错误率为5.31%,通过KYLANGS+Triplet-Loss及随机选取Anchor的方式进行训练得到的语种识别模型的等错误率为4.15%;通过Resnet34+Categorical_Crossentropy&Resnet34+Triplet-Loss及基于自适应中心Anchor的方式进行训练得到的语种识别模型的等错误率为4.32%,通过KYLANGS +Categorical_Crossentropy& KYLANGS +Triplet-Loss及基于自适应中心Anchor的方式进行训练得到的语种识别模型的等错误率为3.76%;可见,本申请中通过对Resnet34网络改进形成深度神经骨干网络,深度神经骨干网络能显著降低语种识别模型的等错误率,即能显著提高语种识别模型的准确率。
由表1中的数据可知,通过Resnet34+Triplet-Loss及随机选取Anchor的方式(传统的训练方式)进行训练得到的语种识别模型的等错误率为5.31%,通过Resnet34+Categorical_Crossentropy&Resnet34+Triplet-Loss及基于自适应中心Anchor的方式进行训练得到的语种识别模型的等错误率为4.32%;通过KYLANGS+Triplet-Loss及随机选取Anchor的方式进行训练得到的语种识别模型的等错误率为4.15%,通过KYLANGS+Categorical_Crossentropy&KYLANGS+Triplet-Loss及基于自适应中心Anchor的方式进行训练得到的语种识别模型的等错误率为3.76%;可见,本申请中通过构建深度神经骨干网络结合分类损失函数和深度神经骨干网络结合度量损失函数的神经网络以及基于自适应中心锚进行训练能够显著降低语种识别模型的等错误率,即能显著提高语种识别模型的准确率;通过本发明改进的骨干网络和训练方法得到了高准确率的语种识别模型。
实施例2
如图6所示,本实施例公开了一种基于自适应中心锚的语种识别系统,包括语种数据集构建模块、增强处理模块、特征提取模块、第一训练模块、第二训练模块和语种识别模块;
语种数据集构建模块用于构建语种数据集;
增强处理模块用于对所述语种数据集中的语音数据进行增强处理;
特征提取模块用于提取所述增强处理后的语音数据的特征,生成特征数据集;
第一训练模块用于构建深度神经骨干网络,并基于分类损失函数采用有监督学习方式训练所述深度神经骨干网络;
第二训练模块用于基于度量损失函数,采用自适应中心锚方法进一步训练所述深度神经骨干网络;
语种识别模块用于基于所述训练后的深度神经骨干网络进行语种识别。
第二训练模块执行以下操作:
计算每个语种训练集中的特征在深度神经骨干网络输出的结果,并基于各个语种训练集的输出结果计算均值向量以得到每个语种的特征中心;
计算各个语种训练集的输出结果与其对应的语种特征中心的欧式距离,基于欧式距离构建Anchor集和非Anchor集;
基于Anchor集和非Anchor集对深度神经骨干网络进行训练,不断更新特征中心和特征中心附近的样本,以实现自适应中心锚的选取;
重复执行上述操作,直至网络收敛。
虽然已经参考优选实施例对本发明进行了描述,但在不脱离本发明范围的情况下,可以对其进行各种改进并且可以用等效物替换其中的部件。尤其是,只要不存在结构冲突,各个实施例中所提到的各项技术特征均可以任意方式组合起来。本发明并不局限于文中公开的特定实施例,而是包括落入权利要求范围内的所有技术方案。本发明未详细阐述部分属于本领域技术人员的公知技术。