1.本发明涉及语音识别技术领域,尤其涉及一种基于多任务的语种识别模型的语种识别装置。
背景技术:2.近些年,语音识别技术取得显著进步,语种识别作为语音识别的重要技术之一,在军事、医疗、教育等多个领域发挥着重要作用;在多语言语音识别系统中,语种识别作为语音识别系统中的上游任务,对提高多语种语言识别的准确率和系统的用户体验上发挥重要作用;传统的语种识别方法通常包括语音信号特征提取、语种模型构建和判决规则这三个过程,在这个过程中常用的语音特征有mfcc、fbank、语谱图、i
‑
vector等,语种模型通常为一个或多个分类器,常用的分类器有svm、决策树、随机森林等,判决规则与所选的分类器有关,通常是根据先验信息计算出待分类的样本的概率或置信度,以此来预测出语种的类别;基于深度学习的语种识别方法通常不需要人为手动提取特征,通过深度学习模型,例如cnn、lstm、transformer等这些非线性特征提取器将语音变换到一个可区分的向量空间,从而定义优化目标函数,使用梯度下降算法更新模型的参数,直到模型预测的类别与真实类别一致。在这类方法中,模型的好坏往往依赖标注数据的质量和数量,此外,这些模型很难提取出语音的深层特征,例如说话人的性别、年龄以及不同语种间发音差异等等。
技术实现要素:3.鉴于上述的分析,本发明旨在提供一种基于多任务的语种识别模型的语种识别装置,同时完成实现对输入数据的语种识别和是否为有效话音的多任务识别。
4.本发明提供的技术方案是:本发明公开了一种基于多任务的语种识别模型的语种识别装置,包括:客户端和服务端;所述客户端与服务端通信连接;所述客户端,用于获取待识别语音数据,进行预处理得到待识别的第一语音队列发送给所述服务端;所述服务端,用于将所述客户端发送的第一语音队列进行分批处理,得到多个批次的第二语音队列,其中每个批第二语音队列中数据长短相近;并将多批次的所述第二语音队列导入到内置的识别模型中进行多任务识别得到识别结果队列;所述客户端,还用于从所述识别结果队列中获取识别结果进行输出;所述识别模型为多任务学习的多语种识别模型;其中的多任务包括语种识别任务和是否为有效话音识别任务。
5.进一步地,所述客户端包括数据获取模块、预处理模块、发送模块和结果获取模块;
所述数据获取模块,用于获取待识别语音数据;所述预处理模块,用于对获取的识别语音数据进行包括数据重采样、去除静音和数据切割在内的处理后,得到待识别的第一语音队列;所述发送模块,用于将所述第一语音队列发送到服务端;所述结果获取模块,用于访问服务端,从服务端的识别结果队列中获取识别结果后进行输出。
6.进一步地,所述预处理模块包括第一重采样模块、声道拆分模块、静音去除模块、数据切割模块和第二重采样模块;所述第一重采样模块,用于将所述数据获取模块获取的待识别语音数据进行首次重采样,统一话音数据的采样率、编码、精度和头文件格式;所述声道拆分模块,用于对首次重采样数据中声道数大于1的数据拆分成单声道数据;所述静音去除模块,用于对单声道数据进行语音检测,将单声道数据分为固定时长的多个语音片段,根据每个语音片段在人声的频带范围内各子带的能量,判断语音片段内是否是静音片段,是则去掉该片段,否则保留;得到去除静音的话音数据;所述数据切割模块,用于对去除静音的话音数据进行切割,得到话音数据片段;所述第二重采样模块,用于对切割后的话音数据片段再次重采样后得到所述第一语音队列。
7.进一步地,所述服务端包括重排序模块、队列存储模块、分批控制模块、识别模块和识别结果模块;所述重排序模块,用于将所述客户端发送的所述第一语音队列中的话音数据片段取出后,按照数据片段的长度依次进行排序,得到排序语音队列;队列存储模块中包括多个队列存储器;每个存储器用于存储一个批次的第二语音队列;分批控制模块,用于从排序语音队列中的一端开始持续取出话音数据片段,当取出话音数据片段的长度和达到分批的预设长度后,分批为一个第二语音队列,存储到队列存储模块中的一个队列存储器中;持续进行取出、分批和存储控制,直到取完排序语音队列,或排序语音队列中剩余的话音数据片段不足一批;则将剩余的语音数据返回所述客户端的第一语音队列;所述识别模块内部设置的多语种识别模型,用于对每个队列存储器中存储的第二语音队列分别进行语种识别和是否为有效话音识别;并将识别结果输出到识别结果模块;所述识别结果模块,用于将所述识别结果存储于内部设置的识别结果存储队列中。
8.进一步地,所述识别模块内部设置有一个多语种识别模型;所述多语种识别模型按照所述队列存储器的顺序,依次从对每个批次的第二语音队列进行语种识别和是否为有效话音识别。
9.进一步地,所述识别模块中包括与所述队列存储器数量相同,且一一对应连接的多个语种识别模型;每个多语种识别模型对一个对应的队列存储器中的第二语音队列进行语种识别
和是否为有效话音识别。
10.进一步地,所述多语种识别模型包括特征提取层、上下文编码层以及输出层;所述特征提取层采用wav2vec模型中的卷积网络;用于提取输入语音样本语音帧级别的浅层特征;所述上下文编码层采用wav2vec模型中基于自注意力机制的transformer网络,用于提取语音各个帧间的权重和特征;所述输出层为依据同时完成语种识别和数据有效识别任务的要求,对wav2vec模型输出层和损失函数进行调整后的输出层;所述输出层使用全连接网络将提取的权重和特征变换到与语种识别任务和数据有效识别任务对应的label维度,同时输出两个任务的识别结果。
11.进一步地,所述输出层属于语种任务的输出y
i
为:;所述输出层属于数据有效识别任务的输出z
i
为:;其中,p(x
i
,h
yi
)为语种类别概率归一化输出,p(x
i
,h
zi
)数据有效性概率归一化输出,x
i
为所述多语种识别模型输入的第i个样本数据;h
yi
为属于语种任务的经过卷积网络和自注意力网络后得到的隐层特征;h
yi
=(h
yi1
,h
yi2
,
…
,h
yij
,
…
,h
yit
);h
zi
为属于数据有效识别任务的经过卷积网络和自注意力网络后得到隐层特征;h
yi
=(h
yi1
,h
yi2
,
…
,h
yij
,
…
,h
yit
);j=1,2,
…
,t;t为经过所述多语种识别模型中的卷积操作后的帧个数。
12.进一步地,在多语种识别模型中的损失函数l
fine_tuning
=(1
‑
α)l
y
+αl
z
;其中,α为平衡语种识别和数据有效识别两种任务的输出的加权因子;l
y
为语种识别任务的softmax交叉损失,;l
z
为数据有效识别任务的sigmoid交叉损失,;y
i
、z
i
分别为语种的真实类别和有效音真实类别,n为样本总数。
13.进一步地,在多语种识别模型中的损失函数l
fine_tuning
=(1
‑
α)l
y
+αl
z
;其中,α为平衡语种识别和数据有效识别两种任务的输出的加权因子;l
y
为语种识别任务的softmax交叉损失,;l
z
为数据有效识别任务的
sigmoid交叉损失,;y
i
、z
i
分别为语种的真实类别和有效音真实类别,n为样本总数;其中,;β为缩放不同类别语种损失的加权因子;reject为数据无效标记。
14.本发明至少可实现以下有益效果之一:本发明在语种识别的同时能判断出无效音,能够同时满足实际场景中有效话音检出和语种识别两个任务,节省了时间和空间成本。
15.对获取待识别语音数据进行预处理以及分批处理后,得到总长固定且语音片段长度相同或相近的语音片段同时输入到识别模型中进行识别,提高了模型的识别的效率。
附图说明
16.附图仅用于示出具体实施例的目的,而并不认为是对本发明的限制,在整个附图中,相同的参考符号表示相同的部件。
17.图1为本发明实施例中的语种识别装置的组成框图;图2为本发明实施例中的一种服务端的组成框图;图3为本发明实施例中的另一种服务端的组成框图;图4为本发明实施例中的多语种识别模型结构图;图5为本发明实施例中的语种识别模型的构建和训练方法流程图;图6为本发明实施例中的wav2vec预训练任务模型结构图。
具体实施方式
18.下面结合附图来具体描述本发明的优选实施例,其中,附图构成本技术一部分,并与本发明的实施例一起用于阐释本发明的原理。
19.本实施例中公开了一种基于多任务的语种识别模型的语种识别装置,如图1所示,包括:客户端和服务端;所述客户端与服务端通信连接;所述客户端,用于获取待识别语音数据,进行预处理得到待识别的第一语音队列;发送给所述服务端;所述服务端,用于将所述客户端发送的第一语音队列进行分批处理,得到多个批次的第二语音队列,其中每个批第二语音队列中数据长短相近;并将多批次的所述第二语音队列导入到内置的识别模型中进行多任务识别得到识别结果队列;所述客户端,还用于从所述识别结果队列中获取识别结果进行输出;所述识别模型为多任务学习的多语种识别模型;其中的多任务包括语种识别任务和是否为有效话音识别任务。
20.具体的,所述客户端包括数据获取模块、预处理模块、发送模块和结果获取模块;
所述数据获取模块,用于获取待识别语音数据;所述获取的待识别语音数据可以是一批也可以是一条;所述预处理模块,用于对获取的识别语音数据进行包括数据重采样、去除静音和数据切割在内的处理后,得到待识别的第一语音队列;所述发送模块,用于将所述第一语音队列发送到服务端;所述结果获取模块,用于访问服务端,从服务端的识别结果队列中获取识别结果后进行输出。
21.更具体的,所述预处理模块包括第一重采样模块、声道拆分模块、静音去除模块、数据切割模块和第二重采样模块;所述第一重采样模块,用于将所述数据获取模块获取的待识别语音数据进行首次重采样,统一话音数据的采样率、编码、精度和头文件格式;具体的,通过初次重采样,将所有语音的格式转换为采样率为8000,通道数为1,pcm编码,精度为16bit的格式,并且为每个语音添加语音头文件;所述头文件为位于语音文件开头的一段数据,用于对主体数据的描述,共占44字节,包含了采样率、通道数、编码等语音格式信息。
22.所述声道拆分模块,用于对首次重采样数据中声道数大于1的数据拆分成单声道数据。
23.所述静音去除模块,用于对单声道数据进行语音检测,将单声道数据分为固定时长的多个语音片段,根据每个语音片段在人声的频带范围内各子带的能量,判断语音片段内是否是静音片段,是则去掉该片段,否则保留;得到去除静音的话音数据;具体的,所述静音去除模块通过webbrtc语音端点检测检测语音片段;首先,将输入的语音以20ms间隔进行分片,得到系列语音片段,其次,将对每个语音片段分别去检测该片段是否为静音,如果是则去掉该片段,否则保留。
24.其中,使用webrtc的vad中very aggressive模式进行检测,把输入语音片段的频谱分成六个子带(80hz~250hz,250hz~500hz,500hz~1k,1k~2k,2k~3k,3k~4k);并分别计算这六个子带的能量,即特征并且使用高斯模型的概率密度函数做运算,得出六个子带的对数似然比函数,即静音和语音的概率。
25.将每个子带的对数似然比作为局部判定的条件;根据人声的频谱范围(大约在80hz至1k左右)进行权重优选,将(0.25,0.25,0.25,0.08,0.08,0.08)作为上述六个子带分别使用的权重;将六个子带进行加权求和作为全局特征。
26.在进行是否为静音判断时,先判断局部,即判断每个子带的对数似然比是否超出了判断阈值,阈值分为局部和全局两组,分别使用94和1100;当有一个子带的对数似然比超出了阈值时,则判断为包含语音;当所有局部均判断为不包含语音时,再判断全局,即判断六个子带进行加权求和结果是否超出了判断阈值,超出了阈值,则判断为包含语音,未超出则判读为静音。
27.所述数据切割模块,用于对去除静音的话音数据进行切割,得到话音数据片段;语音切割的阈值包括最小长度min_len和最大长度max_len;根据min_len和max_len将语音切割为固定长度范围内的长度;使用最小语音min_len来过滤掉过短的语音,以
此去除训练集中的一些噪音数据,加快模型收敛速度;由于模型无法处理过长的数据,设置max_len将过长的语音进行截取,以此提高训练效率。本发明中min_len和max_len分别取1秒和30秒,作为经验本方案认为1秒以下的话音数据由于表达内容和说话人语速的限制,难以确定其语种类别,而30秒以内的话音数据足以判断其说话内容涉及的语种。
28.所述第二重采样模块,用于对切割后的话音数据片段再次重采样后得到所述第一语音队列。
29.所述再次重采样,将切割后的语音统一转换为采样率为16000,采样精度为16bit的格式,作为模型训练和识别的样本数据。
30.本实施例的待识别语音数据的处理,采用两次重采样的方式进行,在初次重采样中采用一个采样率比较低的采样速率,则使对语音进行格式统一,声道拆分、静音去除和语音切割处理时的数据量降低,可以加快处理的速度,对处理硬件的要求降低,在上述处理进行完后,以一个高采样速率去再次进行重采样,使待识别语音数据的采样率和采样精度满足模型的要求。
31.具体的,所述服务端包括重排序模块、队列存储模块、分批控制模块、识别模块和识别结果模块;所述重排序模块,用于将所述客户端发送的所述第一语音队列中的话音数据片段取出后,按照数据片段的长度依次进行排序,得到排序语音队列;队列存储模块中包括n个队列存储器;每个存储器用于存储一个批次的第二语音队列;分批控制模块,用于从排序语音队列中的一端开始持续取出话音数据片段,当取出话音数据片段的长度和达到分批的预设长度后,分批为一个第二语音队列,存储到队列存储模块中的一个队列存储器中;持续进行取出、分批和存储控制,直到取完排序语音队列,或排序语音队列中剩余的话音数据片段不足一批;则将剩余的语音数据返回所述客户端的第一语音队列;返回所述客户端的第一语音队列的剩余的语音数据等待与下一条待识别语音数据的预处理后话音数据片段组合在一起,形成新的第一语音队列。
32.所述识别模块内部设置的多语种识别模型,用于对每个队列存储器中存储的第二语音队列分别进行语种识别和是否为有效话音识别;并将识别结果输出到识别结果模块;所述识别结果模块,用于将所述识别结果存储于内部设置的识别结果存储队列中。
33.优选的,如图2所示,所述识别模块内部设置有一个多语种识别模型;所述多语种识别模型按照所述队列存储器的顺序,依次从对每个批次的第二语音队列进行语种识别和是否为有效话音识别。
34.更优选的,如图3所示,为了增加识别的效率,所述识别模块中包括与所述队列存储器数量相同,且一一对应连接的n个语种识别模型;每个多语种识别模型对一个对应的队列存储器中的第二语音队列进行语种识别和是否为有效话音识别。
35.如图4所示,本实施例中公开方案的所述多语种识别模型包括特征提取层、上下文编码层以及输出层;所述特征提取层采用wav2vec模型中的卷积网络;用于提取输入语音样本语音帧级别的浅层特征;所述上下文编码层采用wav2vec模型中基于自注意力机制的
transformer网络,用于提取语音各个帧间的权重和特征;所述输出层为依据同时完成语种识别和数据有效识别任务的要求,对wav2vec模型输出层和损失函数进行调整后的输出层;所述输出层使用全连接网络将提取的权重和特征变换到与语种识别任务和数据有效识别任务对应的label维度,同时输出两个任务的识别结果。
36.更具体的,所述输出层属于语种任务的输出y
i
为:y
i
=argmax(p(x
i
,h
iy ));所述输出层属于数据有效识别任务的输出:z
i
=argmax(p(x
i
,h
iz ));其中,p(x
i
,h
yi
)为语种类别概率归一化输出,p(x
i
,h
zi
)数据有效性概率归一化输出,x
i
为所述多语种识别模型输入的第i个样本数据;h
yi
为属于语种任务的经过卷积网络和自注意力网络后得到的隐层特征;h
yi
=(h
yi1
,h
yi2
,
…
,h
yij
,
…
,h
yit
);h
zi
为属于数据有效识别任务的经过卷积网络和自注意力网络后得到隐层特征;h
yi
=(h
yi1
,h
yi2
,
…
,h
yij
,
…
,h
yit
);j=1,2,
…
,t;t为经过所述多语种识别模型中的卷积操作后的帧个数。
37.优选的,在多语种识别模型中的损失函数中引入加权因子α来平衡语种识别和数据有效识别两种任务的输出,使用加权因子β来缩放不同类别语种的损失。
38.具体的,在多语种识别模型中的损失函数l
fine_tuning
=(1
‑
α)l
y
+αl
z
,其中,l
y
为语种的softmax交叉损失,l
z
为有效音的sigmoid交叉损失,具体地:,因此,;其中,y
i
、z
i
分别为语种的真实类别和有效音真实类别,y
i
、z
i
分别为模型预测输出的语种类别和有效音真实类别。
39.n为样本总数。
40.实际中,对语种识别后的不同语音通常会输入给不同的转写识别引擎去做处理,这就要求对于语种识别的准确率要求要更高;为此,进一步使用因子β来缩放不同类别语种的损失,即:
,其中,。
41.具体的,本实施例的多语种识别模型,基于fairseq开源框架进行微调,模型的主体结构仍然由7层卷积和12层的transformer,模型参数不做调整。
42.本实施例还公开了构建并训练基于多任务学习的多语种识别模型的构建和训练过程,如图5所示,包括以下步骤:步骤s501、使用无监督预训练方式对wav2vec模型进行第一次预训练;获得语音数据的表示;步骤s502、根据语种识别和数据有效识别任务要求建立包含多语种样本数据的训练样本集;步骤s503、采用训练样本集中的样本数据对第一次预训练好的wav2vec模型再进行第二次预训练;步骤s504、针对于语种识别和数据有效识别任务要求对第二次预训练好的wav2vec模型的输出层和损失函数进行适应性微调后构建出最终的多语种识别模型;再次采用训练样本集中样本数据对所述多语种识别模型进行训练,使多语种识别模型能够同时识别输入语音数据的语种和话音有效性。
43.具体的,在步骤s501中,本实施例采用wav2vec模型这种开源的预训练模型作为初始模型,使用mask的无监督预训练方式,其预训练任务则是去预测这些片段来获得对语音context信息的增强表示,以此作为初始参数去对下游的任务进行参数微调,使得下游的任务有更好的性能。
44.图6给出了采用wav2vec的预训练模型结构。从图中可知,首先,原始语音输入到feature encoder中依次通过7层的卷积做特征提取,每一层的输出作为下一层的输入,每一层的步长分别为(5,2,2,2,2,2,2),卷积核宽度分别为(10,3,3,3,3,2,2)。例如,输入一条(1,l)维的语音,其中l为该语音的长度,通过特征编码后产生维度为(1, l/320,512)的3维向量。
45.其次,通过上步后得到固定维度为512的语音特征向量,然后通过12层的block进行计算语音特征间的“注意力”,每个block为包含768个隐层单元的transformer结构,使用多头的self
‑
attention计算上述l/320个特征序列间的注意力权重,以此来获得整条完整语音的深层context特征,通过12层的transformer编码后一条语音得到维度为(l/320,1 ,768)的向量。
46.在预训练阶段,为了构建预测目标,wav2vec通过mask的方式将cnn卷积输出的特征中某一固定长度的特征序列遮蔽,训练任务的目标则是预测这些被遮蔽的特征序列。为了计算被遮蔽掉的特征,wav2vec引入了量化模块将上下文编码输出层的表示进行离散成接近ont
‑
hot向量,以此来量化表示输出特征用来和ground
‑
truth计算损失。wav2vec提供了gumbel
‑
softmax和k
‑
means clustering两种量化方法,本发明的预训练任务使用的是前一种方法。预训练任务的损失函数为:l
pre
=l
m
+α1l
d
其中,l
m
为做mask预测的对比损失,l
d
为多样性损失,α1设为0.1。具体地,
l
m
,c
t
为当前时刻t的transformer网络输出,q
t
为隐特征(多层卷积后的feature encoder)量化后的输出,对于以上两输出计算cosine相似度,即sim(a,b)=a
t
b/||a|| ||b||。在此,wav2vec引入了负采样技术:在当前时刻t,模型要在包含q
t
在内的κ+1个量化候选中识别出q
t
,其中q
t
表示这κ+1个量化候选,,κ是其他遮蔽项中均匀采样出的干扰项个数。
47.l
d
,g为码本数,取2,v为每个码本的条目数,取320,码本的维度为128;为一组语音片段在每一个码本条目上的平均gumbelsoftmax概率;具体地具体地;为gumbelsoftmax的非负温度,n=
‑
log(
‑
log(u)),u服从均匀分布u(0,1),l
g,v
为码本中的每个条目,即l
g,v
∈r
(g
×
v)
。
48.wav2vec模型第一次预训练的训练数据为大规模语音数据;该大规模语音数据可以是待识别的目标语种以外的语音数据,且无需进行根据任务需要的标记,不会增加额外的工作量。
49.使用上述处理完的语音进行预训练,预训练的优化目标为上述的直到l
pre
小于预设的最大值或预训练的学习率l
rpre
小于预设的最大学习率值。
50.具体的,在步骤s502中建立包含多语种样本数据的训练样本集过程如下:在本实施例的多任务学习中,语种识别任务和有效话音识别任务各被形式化为一个多分类任务,即输入为语音数据,输出为语种类别和语音是否为有效话音。不同于一般的语种识别任务,本实施例的任务是去确定语种类别标签的同时还要预测出该条语音是否为有效话音,通过引入有效话音识别任务,在判断一条语音的语种类别的前提是该语音必须为有效话音数据,而实际的智能语音识别系统中难以保证所有的输入均为有效音,往往包含大量的无效音,引入有效话音识别任务对于语种识别有其实际的意义,此外无效音相比有效话音,其音频范围和特征与话音数据有一定的区别,可以提高语种识别的泛化能力。因此,训练样本集中的样本数据包括有效话音的样本数据和无效话音数据。
51.所述训练样本集的数据来源为通话录音语音数据,包括多个语种的有效话音数据;对所述有效话音数据进行包括数据重采样、去除静音和数据切割在内的处理后,得到有效话音的样本数据;并对所述样本数据进行语种类别标记;所述训练样本集中的无效话音数据为音频范围和特征与有效话音数据存在区别的音频数据,如噪音数据或机器合成的语音提示音。对无效话音数据进行与所述有效话音数据相同的包括数据重采样、去除静音和数据切割在内的处理后,得到无效话音的样本数据,并进行数据无效标记。在本实施例中将无效话音的样本数据采用标签“reject”进行标记,表示为无效话音的语种类别。
52.具体的,多个语种的有效话音数据,涉及15个语种,包括俄语、印地语、孟加拉语、
德语、日语、汉语、法语、波斯语、泰米尔语、泰语、英语、西班牙语、越南语、阿拉伯语、韩语以及部分无效话音数据,根据每类数据量的不同,将随机划分为表1数据集中的训练集、开发集和测试集,用以交叉验证模型的性能。
53.更具体的,为了实现更好的训练效果与训练的模型匹配,本实施例中对所述有效话音数据或无效话音数据的处理,包括以下步骤:1)将多个语种的有效话音数据和无效话音数据进行初次重采样后,进行话音数据的采样率、编码、精度和头文件格式的统一;2)将声道数大于1的话音数据拆分成单声道话音数据。
54.3)对于单声道的话音数据进行语音检测,将语音数据分为固定时长的多个语音片段,根据每个语音片段在人声的频带范围内各子带的能量,判断语音片段内是否是静音片段,是则去掉该片段,否则保留;得到去除静音的话音数据。
55.4)根据语音切割的阈值范围,将去除静音的话音数据切割成为为固定长度的话音数据片段;5)将切割后的话音数据片段再次重采样后,得到作为模型训练和识别的输入有效话音和无效话音的样本数据。
56.上述样本数据的处理方法与待识别语音数据的预处理方法相同,从而使训练好的模型能够与识别任务更加匹配。
57.更有选的,对于某一个语种由于样本数据太少,在训练的过程中会导致准确率、召回率和f1较差,即识别效果会变差,为了改善该语种识别效果,本实施例通过训练样本增强来增加话音数据量少的语种数据的数据量。
58.具体的,对数据量少的语种的话音数据,分别以各设定的话音倍数进行变速扰动,以增加话音数据的数量,用以缓解样本不均衡带来的过拟合和提高模型准确率。
59.优选的,分别进行0.9、1.1、1.2倍速变速扰动,扰动方法使用sox工具操作;通过变速操作,使该语种的数据量增多了3倍;再通过上述有效话音数据的处理方法进行处理,大大提高了该语种的样本数据量,用以缓解样本不均衡带来的过拟合和模型准确率差问题。
60.具体的,在步骤s503中的第二次预训练过程中不改动模型结构和损失函数,直到损失达到一个相对平衡的状态后结束训练;优选的,可将第一次预训练的学习率l
rpre
加0.5,在学习的过程中,直到损失l
pre
的值再次小于预设的损失l
pre
最大值结束预训练;在第二次预训练过程中,由于训练样本集中的样本数据与第一次预训练数据存在差异,在第二次预训练过程中可能会导致损失函数l
pre
变大,但是经过几轮以后又会逐渐变小,通过继续训练可以使模型参数更接近该数据的特征,这样有益于微调任务提高准确率。
61.第二次预训练,优选迭代超过10000步以后结束预训练。
62.具体的,在步骤s504中进行适应性微调后构建出最终的多语种识别模型包括特征提取层、上下文编码层以及输出层;所述特征提取层采用第二次预训练好的wav2vec模型中的卷积网络;用于提取输入语音样本语音帧级别的浅层特征;所述上下文编码层用第二次预训练好的wav2vec模型中基于自注意力机制的transformer网络,用于提取语音各个帧间的权重和特征;基于语种识别和有效话音识别任务,对wav2vec模型输出层和损失函数进行调整,使用全连接网络将提取的权重和特征变换到对应任务的label维度,同时输出两个任
务的识别结果。
63.为了训练语种识别任务和有效话音识别两种任务,本实施例中模型的输出层包含1个softmax层和1个sigmoid层来分别预测语种类别和有效音类别。对于第i个样本数据,预测其类别语种类别y
i
和有效音类别z
i
。
64.微调后的模型结构,语音数据第i个样本x
i
=(x
i1
,x
i2
,
…
,x
il
)作为输入,l为语音的长度(l与语音的采样率有关,本方案的训练样本采样率均为16k),经过卷积网络和自注意力网络后得到隐层特征h
i
=(h
i1
,h
i2
,
…
,h
ij
,
…
,h
it
),其中t的值为经过7层卷积操作后的帧个数,优选的t=l/320;经过卷积网络和自注意力网络后通过改进的输出层得到属于语种任务的输出y
i
和有效话音类别输出z
i
:模型中,属于语种任务的经过卷积网络和自注意力网络后得到的隐层特征;属于数据有效识别任务的经过卷积网络和自注意力网络后得到隐层特征;属于语种任务的输出:y
i
=argmax(p(x
i
,h
iy ));属于数据有效识别任务的输出:z
i
=argmax(p(x
i
,h
iz ));其中,p(x
i
,h
yi
)为语种类别概率归一化输出,p(x
i
,h
zi
)数据有效性概率归一化输出,x
i
为所述多语种识别模型输入的第i个样本数据;h
yi
为属于语种任务的经过卷积网络和自注意力网络后得到的隐层特征;h
yi
=(h
yi1
,h
yi2
,
…
,h
yij
,
…
,h
yit
);h
zi
为属于数据有效识别任务的经过卷积网络和自注意力网络后得到隐层特征;h
yi
=(h
yi1
,h
yi2
,
…
,h
yij
,
…
,h
yit
);j=1,2,
…
,t;t为经过所述多语种识别模型中的卷积操作后的帧个数。
65.本实施例中的softmax使用log_softmax函数,也就是softmax之后再通过一个log函数,用以缓解softmax函数计算中的上溢和下溢问题。
66.h
i
计算方式如下:;表示将语音的特征按照帧级别求取平均值,即将一条语音的所有帧的特征求平均,作为概率转换函数的输入,以得到目标输出类别。
67.此外,由于有效话音识别的就只有“有效”和“无效”两种类别,则使用sigmoid函数作为输出层的激活函数。
68.在多语种识别模型中的损失函数中引入加权因子α来平衡语种识别和数据有效识别两种任务的输出,使用加权因子β来缩放不同类别语种的损失。
69.具体的,整个微调任务的损失函数如下所示:l
fine_tuning
=(1
‑
α)l
y
+αl
z
,其中,l
y
为语种的softmax交叉损失,l
z
为有效音的sigmoid交叉损失,具体地:,因此,;其中,y
i
、z
i
分别为语种的真实类别和有效音真实类别,y
i
、z
i
分别为模型预测输出的语种类别和有效音真实类别。
70.n为样本总数。
71.实际中,对语种识别后的不同语音通常会输入给不同的转写识别引擎去做处理,这就要求对于语种识别的准确率要求要更高;为此,进一步使用因子β来缩放不同类别语种的损失,即:,其中,。
72.具体的,本实施例的多语种识别模型,基于fairseq开源框架进行微调,在整个微调过程中,模型的主体结构仍然由7层卷积和12层的transformer,模型参数不做调整。
73.训练过程中,将训练样本输入fairseq中进行训练,在损失函数中α和β分别取0.2和1.5时效果较为稳定;记录loss的变化,直到loss变化幅度在0.001内时停止训练。
74.采用15个语种的数据进行语种识别训练后的统计结果如表1所示,表中的数据包括15个语种的数据,每个语种随机划分为训练集、开发集、测试集3部分。在数据集1实验中,除了带*语种数据较少,导致准确率、召回率和f1较差外,其他语种的交叉验证均取得了较好的识别效果;数据集2中针对这几类样本较少的类别,依次做了0.9、1.1、1.2倍速的语速扰动,很明显的经过语速扰动的数据增强,无论是准确率、召回率还是f1均取得了较好的效果。
75.表1语种识别装置实施结果
综上所述,本实施例中采用的多语种识别模型直接输入语音数据,在语种识别的同时能判断出无效音,能够同时满足实际场景中有效话音检出和语种识别两个任务,节省
了时间和空间成本。
76.对获取待识别语音数据进行预处理以及分批处理后,得到总长固定且语音片段长度相同或相近的语音片段同时输入到识别模型中进行识别,提高了模型的识别的效率。
77.以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。