《基于多任务神经网络的语种识别研究》——秦晨光
第一部分 基于语速特征的端到端国际语种识别研究
- 数据集来源
来自Common Voice,分别有五大语种:汉语、英语、法语、德语、意大利语。每种语言训练集有16000条,验证机有1600条,测试集有1600条,共19200条。大多数在2-5s。
对数据处理:MP3->wav->数据集划分->定义标签->特征提取
来源:Common voice datasets[OL].https://voice.mozilla.org/zh-CN[2020-03-01].
- 特征提取
(1)声学特征
在MFCC、Fbank的特征基础上增加语速的新一阶特征。利用python_speech_feature提取mfcc特征与Fbank特征、一阶差分和二阶差分,输出维度120*帧数
第一部分从特征和模型两个角度搭建语种识别研究框架。
(2)语速特征(???)
提取一维的语速特征,将欲速特征与Fbank特征进行融合,并训练网络。
- 特征维度一致
截取固定长度,会导致部分信息的消失或者信息的不完整,会导致语种识别准确率降低。所以采用将特征补齐到指定帧的长度,不足的地方就补零。本文为120*1000。
注:指定帧:一般为最长音帧帧数或所有音频平均长度。
- 模型搭建
(1)LDnn:输入层->全连接层->全连接层->全连接层->输出层。
(2)LCnn:CNN+FC
(3)LClstm:CNN+LSTM+FC(4层CNN16->32->64->128->256,1层lstm,以及3层全连接)。
采用relu激活。
- 调参
(1)对比帧长补齐为1000帧和600帧的识别率。
(2)学习率:分别从0.01和0.001开始,训练周期减半时,学习率减半。
(3)卷积层数目按增大(1,16,32,64,128,256)或者减小两种策略(1,64,32,16)。
(4)在全连接层添加0.5的dropout与否。
(5)在输入前做数据归一化还是在卷积层引入BN。
- 实验结果分析
(1)特征对比
在LDnn模型上对比了MFCC,Fbank、语谱图特征。epoch为25,结果为:Fbank>MFCC>语谱图。
(2)模型对比
将Fbank特征作为模型输入,对比了LDnn,LCnn,LClstm,LCgru。
(3)调参实验结果:
补齐长度对识别率影响不大;学习率对识别结果影响较大;卷积神经网络从2开始递增(应该为2^n)和以256开始递减,识别效果影响不大;在全连接后加入dropout后,识别率上升;直接对数据进行归一化,会降低识别率;在网络中进行归一化操作,可以提高网络识别率。
所以基于Fbank特征的LClstm模型为:
- 数据增强
(1)分别抽取25%的数据,进行0.9倍速和1.1倍速的数据扩充;
(2)在语谱图特征实验中,对语谱图进行图像增强的操作,包括旋转,变形。
第二部分 基于多任务学习的方言语种识别
- 数据来源
来自于科大讯飞方言数据集,分别有十种方言,分别为:宁夏话、合肥话、四川话、陕西话、长沙话、河北话、南昌话、上海话、闽南话和客家话。
- 模型建立
(1)单任务语种识别神经网络
搭建基于LSTM模型的单任务语种识别神经网络SLNet。网络包括输入层,LSTM层,全连接层、输出层。
(2)多语种任务MTLNet
定义多个任务,每个任务识别每个方言,每个任务对应一个损失函数,通过隐层的的参数软共享计算所有子任务loss平均值(loss)avg 。
(3)辅助任务学习ATLNet
定义识别方言区域为辅助任务,方言语种识别为主任务。两任务数据来源相同,基于参数硬共享设计多任务学习模型ATLNet。
- 实验结果与分析
(1)多语种任务识别
线性增加任务数目(2->3->……->10),对比单任务和多任务语种识别结果。多任务相比单任务,识别性能提高5%左右。
(2)辅助任务性能分析
每条方言数据拥有语种标签和方言区域标签。
单任务情况下的识别率为75.3%,方言区域识别为80.1%,在多任务辅助情况下,语种识别为80.2%,方言区域识别为82.6%。