576. Bengali.AI Speech Recognition | bengaliai-speech
首先,我们要感谢举办了这场精彩竞赛的组织者,他们为我们提供了绝佳的机会来学习如何改进针对孟加拉语等低资源语言的ASR模型,也感谢其他慷慨分享知识的竞争对手。
以下是我们解决方案的简要说明。我们稍后会开源更详细的代码,但如果你们有任何问题,请随时询问我们。
我们使用竞赛数据(CD)对"ai4bharat/indicwav2vec_v1_bengali"进行了微调。
我们观察到CD中存在低质量的样本,盲目地使用所有CD数据进行微调会降低模型性能。因此,我们首先仅使用split="valid"的CD数据对模型进行微调(这提升了模型性能),然后用该模型对split="train"的CD数据进行预测。之后,我们将高质量的split='train' CD数据(WER<0.75)加入到split='valid' CD中,并从头开始微调"ai4bharat/indicwav2vec_v1_bengali"。
这使得公共基线提升至LB=0.405。
由于OOD数据中存在许多未登录词,我们认为使用大量外部文本数据训练强大的语言模型非常重要。因此,我们下载了ASR数据集(CD, indicCorp v2, common voice, fleurs, openslr, openslr37, 和 oscar)的文本数据和脚本,并训练了一个5-gram语言模型。
与"arijitx/wav2vec2-xls-r-300m-bengali"相比,该语言模型将LB分数提高了约0.01。
我们仅使用了CD数据。正如模型架构部分所述,我们使用在split='valid'上训练的CTC模型进行类似对抗性验证的方法,使用了约70%的所有CD数据。
我们使用了ASR数据集(CD, indicCorp v2, common voice, fleurs, openslr, openslr37, 和 oscar)的文本数据和脚本。作为预处理步骤,我们使用bnUnicodeNormalizer对文本进行规范化,并移除了一些字符('[\,\?\.\!\-\;\:\\"\\।\\—]')。
在音频末尾进行填充会对CTC产生负面影响,因此我们根据音频长度对数据进行排序,并动态调整每个批次的大小。这提高了预测速度和性能。
我们利用Demucs对音频进行去噪。这使LB分数提高了约0.003。
Demucs有时会使音频质量变差,因此我们评估音频是否变得更差,并切换用于预测的音频。这使LB分数提高了约0.001。
具体步骤如下:

我们构建了能够预测单词之间标点符号的模型。这使LB分数提高了0.030以上。

训练的一个技巧是:将"PAD"的损失权重设为0.0,可以更好地提升CV分数。
主干网络:xlm-roberta-large, xlm-roberta-base
训练器:XLMRobertaForTokenClassification
数据集:train.csv(提供的),indicCorp v2
标点符号:[ ,।?-]