一、简介
本文记录interspeech2020和数据堂举办的AESRC2020口音英语识别的参赛方案,实验代码可参考:
码云:https://gitee.com/ephemeroptera/arnet.git
github:https://github.com/coolEphemeroptera/ARNet.git
口音识别与语音识别密切相关,如果只做简单的口音分类,很容易陷入过拟合的情况,因此,我们引入语音识别任务来建立多任务模型。
二、模型架构
<输入>:[N, MAX_TIME, FBANK, 1], 由kaldi提取80维的fbank特征,再做全局CMN归一化得到输入时频图
<隐层>:隐层为CNN+RNN架构,这里采用resnet和gru来提取特征
<输出1:CTC> ctc损失函数作为ocr或者e2e-asr的常用loss,作为口音识别的辅助任务
<输出2:Accent>: 口音分类任务(softmax+CE)
三、训练数据
3.1 口音数据:160小时的口音英语数据集
数据堂 为参赛者提供总共160小时的来自8个国家的英语数据,每一种口音大约有20小时的数据,八个国家分别来自:
1.中国
2.印度
3.日本
4.韩国
5.英国
6.俄罗斯
7.葡萄牙
8.美国
3.2 辅助数据:1000小时librispeech语音数据集
Librispeech数据由960小时的训练数据和40小时的测试数据组成,开源地址:http://www.openslr.org/12/
四、训练方法
4.1 预训练:隐层初始化(librispecch)
通过librispeech 的ctc训练任务来初始化隐层,加强4.2模型性能
4.2 训练 CTC和口音分类 的多任务模型
红线表示经过4.1初始后的隐藏层
5 实验结果
5.1 预训练
Corpus: Librispeech
INPUT_SIZE: 1600x80
ENCODER_LEN: 150
MAX_CTC_LABEL_LEN: 100
FRONT-CNN: resnet-18
BPE: 1000 subwords
EPOCHS: 10
CTC-WER(dev_clean): ~25%
5.2 AR-Net 模型
Corpus: AESRC
INPUT_SIZE: 1200x80
ENCODER_LEN: 114
MAX_CTC_LABEL_LEN: 72
FRONT-CNN: resnet-18
LOSS-WEIGHTS: 0.7(CTC) + 0.3(Accent) --> 0.4(CTC) + 0.6(Accent) [finetune]
BPE: 1000 subwords
EPOCHS: 8
CTC-WER(dev): 29%
Accent-ACC(dev): 72%
以下是验证集(12545句)结果:
Chinese | Japanese | India | Korea | American | Britain | Portuguese | Russia | Overall |
---|---|---|---|---|---|---|---|---|
0.56 | 0.70 | 0.96 | 0.67 | 0.49 | 0.88 | 0.79 | 0.71 | 0.72 |
5.3 官方baseline
官方也给出了一个baseline结果,其实验框架基于espnet, 模型采用 transformer + asr-init,分类准确度为76%。
官方仓库:https://github.com/R1ckShi/AESRC2020
Chinese | Japanese | India | Korea | American | Britain | Portuguese | Russia | Overall |
---|---|---|---|---|---|---|---|---|
0.67 | 0.73 | 0.97 | 0.56 | 0.60 | 0.94 | 0.86 | 0.76 | 0.76 |
6 结论
哈哈,印度人口音最好识别,转载请注明出处~