language: 多语言
thumbnail:
tags:
- 音频分类
- speechbrain
- 嵌入向量
- 语言识别
- 语言
- 识别
- pytorch
- ECAPA-TDNN
- TDNN
- VoxLingua107
license: "apache-2.0"
datasets:
- VoxLingua107
metrics:
- 准确率
widget:
- example_title: 英文样本
src: https://cdn-media.huggingface.co/speech_samples/LibriSpeech_61-70968-0000.flac
VoxLingua107 ECAPA-TDNN 口语语言识别模型
模型描述
这是一个基于VoxLingua107数据集训练的口语语言识别模型,使用了SpeechBrain框架。该模型采用了ECAPA-TDNN架构,该架构此前曾用于说话人识别。
该模型能够根据语音片段识别所使用的语言,覆盖107种不同的语言(包括阿布哈兹语、南非荷兰语、阿姆哈拉语、阿拉伯语、阿萨姆语、阿塞拜疆语、巴什基尔语、白俄罗斯语、保加利亚语、孟加拉语、藏语、布列塔尼语、波斯尼亚语、加泰罗尼亚语、宿务语、捷克语、威尔士语、丹麦语、德语、希腊语、英语、世界语、西班牙语、爱沙尼亚语、巴斯克语、波斯语、芬兰语、法罗语、法语、加利西亚语、瓜拉尼语、古吉拉特语、马恩岛语、豪萨语、夏威夷语、印地语、克罗地亚语、海地克里奥尔语、匈牙利语、亚美尼亚语、国际语、印度尼西亚语、冰岛语、意大利语、希伯来语、日语、爪哇语、格鲁吉亚语、哈萨克语、高棉语、卡纳达语、韩语、拉丁语、卢森堡语、林加拉语、老挝语、立陶宛语、拉脱维亚语、马尔加什语、毛利语、马其顿语、马拉雅拉姆语、蒙古语、马拉地语、马来语、马耳他语、缅甸语、尼泊尔语、荷兰语、新挪威语、挪威语、奥克语、旁遮普语、波兰语、普什图语、葡萄牙语、罗马尼亚语、俄语、梵语、苏格兰语、信德语、僧伽罗语、斯洛伐克语、斯洛文尼亚语、绍纳语、索马里语、阿尔巴尼亚语、塞尔维亚语、巽他语、瑞典语、斯瓦希里语、泰米尔语、泰卢固语、塔吉克语、泰语、土库曼语、他加禄语、土耳其语、鞑靼语、乌克兰语、乌尔都语、乌兹别克语、越南语、瓦赖语、意第绪语、约鲁巴语、汉语普通话)。
预期用途与限制
该模型有两种用途:
- 直接用于口语语言识别
- 作为语音片段级别的特征(嵌入向量)提取器,用于在自有数据上训练专用的语言识别模型
该模型基于自动收集的YouTube数据进行训练。有关数据集的更多信息,请参见此处。
使用方法
import torchaudio
from speechbrain.pretrained import EncoderClassifier
language_id = EncoderClassifier.from_hparams(source="TalTechNLP/voxlingua107-epaca-tdnn", savedir="tmp")
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'])
print(prediction[3])
['th']
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},
}