英文

VoxLingua107 ECAPA-TDNN口语识别模型

模型描述

这是一个在VoxLingua107数据集上使用SpeechBrain训练的口语识别模型。该模型使用了之前用于说话人识别的ECAPA-TDNN架构。

该模型可以根据所说语言对语音进行分类。它涵盖了107种不同的语言(阿布哈兹语,南非荷兰语,阿姆哈拉语,阿拉伯语,阿萨姆语,阿塞拜疆语,巴什基尔语,白俄罗斯语,保加利亚语,孟加拉语,藏语,布列塔尼语,波斯尼亚语,加泰罗尼亚语,宿务语,捷克语,威尔士语,丹麦语,德语,希腊语,英语,世界语,西班牙语,爱沙尼亚语,巴斯克语,波斯语,芬兰语,法罗语,法语,加利西亚语,瓜拉尼语,古吉拉特语,马恩岛语,豪萨语,夏威夷语,印地语,克罗地亚语,海地语,匈牙利语,亚美尼亚语,国际语,印尼语,冰岛语,意大利语,希伯来语,日语,爪哇语,格鲁吉亚语,哈萨克语,柬埔寨中央语,卡纳达语,韩语,拉丁语,卢森堡语,林加拉语,老挝语,立陶宛语,拉脱维亚语,马达加斯加语,毛利语,马其顿语,马拉雅拉姆语,蒙古语,马拉地语,马来语,马耳他语,缅甸语,尼泊尔语,荷兰语,挪威纳恩诺斯克语,挪威语,奥克西唐语,旁遮普语,波兰语,普什图语,葡萄牙语,罗马尼亚语,俄语,梵语,苏格兰语,信德语,僧伽罗语,斯洛伐克语,斯洛文尼亚语,绍纳语,索马里语,阿尔巴尼亚语,塞尔维亚语,巽他语,瑞典语,斯瓦希里语,泰米尔语,泰卢固语,塔吉克语,泰语,土库曼语,他加禄语,土耳其语,鞑靼语,乌克兰语,乌尔都语,乌兹别克语,越南语,瓦拉伊语,意第绪语,约鲁巴语,普通话)。

预期应用及限制

该模型有两种用法:

  • 直接用于口语识别
  • 用作一个句子级特征(嵌入)提取器,用于基于自己的数据创建专用的语言ID模型

该模型是在自动收集的YouTube数据上训练的。有关数据集的更多信息,请参阅 here

如何使用
import torchaudio
from speechbrain.pretrained import EncoderClassifier
language_id = EncoderClassifier.from_hparams(source="TalTechNLP/voxlingua107-epaca-tdnn", savedir="tmp")
# Download Thai language sample from Omniglot and cvert to suitable form
signal = language_id.load_audio("https://omniglot.com/soundfiles/udhr/udhr_th.mp3")
prediction =  language_id.classify_batch(signal)
print(prediction)
  (tensor([[0.3210, 0.3751, 0.3680, 0.3939, 0.4026, 0.3644, 0.3689, 0.3597, 0.3508,
           0.3666, 0.3895, 0.3978, 0.3848, 0.3957, 0.3949, 0.3586, 0.4360, 0.3997,
           0.4106, 0.3886, 0.4177, 0.3870, 0.3764, 0.3763, 0.3672, 0.4000, 0.4256,
           0.4091, 0.3563, 0.3695, 0.3320, 0.3838, 0.3850, 0.3867, 0.3878, 0.3944,
           0.3924, 0.4063, 0.3803, 0.3830, 0.2996, 0.4187, 0.3976, 0.3651, 0.3950,
           0.3744, 0.4295, 0.3807, 0.3613, 0.4710, 0.3530, 0.4156, 0.3651, 0.3777,
           0.3813, 0.6063, 0.3708, 0.3886, 0.3766, 0.4023, 0.3785, 0.3612, 0.4193,
           0.3720, 0.4406, 0.3243, 0.3866, 0.3866, 0.4104, 0.4294, 0.4175, 0.3364,
           0.3595, 0.3443, 0.3565, 0.3776, 0.3985, 0.3778, 0.2382, 0.4115, 0.4017,
           0.4070, 0.3266, 0.3648, 0.3888, 0.3907, 0.3755, 0.3631, 0.4460, 0.3464,
           0.3898, 0.3661, 0.3883, 0.3772, 0.9289, 0.3687, 0.4298, 0.4211, 0.3838,
           0.3521, 0.3515, 0.3465, 0.4772, 0.4043, 0.3844, 0.3973, 0.4343]]), tensor([0.9289]), tensor([94]), ['th'])
# The scores in the prediction[0] tensor can be interpreted as cosine scores between
# the languages and the given utterance (i.e., the larger the better)
# The identified language ISO code is given in prediction[3]
print(prediction[3])
  ['th']
  
# Alternatively, use the utterance embedding extractor:
emb =  language_id.encode_batch(signal)
print(emb.shape)
  torch.Size([1, 1, 256])
,限制和偏见

由于模型经过VoxLingua107的训练,因此它具有许多限制和偏见,其中一些包括:

  • 可能对小语种的准确性有很大限制
  • 可能对女性的语音工作效果较差(因为YouTube数据中包含的男性语音更多)
  • 基于主观实验,它在带有外国口音的语音上效果不佳
  • 可能在儿童的语音和有语言障碍的人身上效果不佳

训练数据

该模型是在 VoxLingua107 上进行训练的。

VoxLingua107是用于训练口语识别模型的语音数据集。该数据集包含从YouTube视频中自动提取的短语音片段,并根据视频标题和描述的语言进行标记,并进行一些后处理步骤以过滤出误报。

VoxLingua107包含107种语言的数据。训练集中的语音总量为6628小时。每种语言的平均数据量为62小时。然而,每种语言的实际数据量差异很大。还有一个单独的开发集,其中包含来自33种语言的1609个语音片段,由至少两位志愿者验证确实包含所给定的语言。

训练过程

我们使用 SpeechBrain 对模型进行训练。训练配方即将发布。

评估结果

开发数据集上的错误率为7%。

BibTeX条目和引用信息

@inproceedings{valk2021slt,
  title={{VoxLingua107}: a Dataset for Spoken Language Recognition},
  author={J{\"o}rgen Valk and Tanel Alum{\"a}e},
  booktitle={Proc. IEEE SLT Workshop},
  year={2021},
}