模型简介
模型特点
模型能力
使用案例
🚀 VoxLingua107 ECAPA - TDNN 口语语言识别模型
这是一个基于 SpeechBrain 在 VoxLingua107 数据集上训练的口语语言识别模型。该模型能够根据语音内容识别出对应的语言,覆盖了 107 种不同的语言,为语言识别任务提供了强大的支持。
🚀 快速开始
模型使用
import torchaudio
from speechbrain.pretrained import EncoderClassifier
language_id = EncoderClassifier.from_hparams(source="speechbrain/lang-id-voxlingua107-ecapa", savedir="tmp")
# 从 Omniglot 下载泰语样本并转换为合适的格式
signal = language_id.load_audio("https://omniglot.com/soundfiles/udhr/udhr_th.mp3")
prediction = language_id.classify_batch(signal)
print(prediction)
# (tensor([[-2.8646e+01, -3.0346e+01, -2.0748e+01, -2.9562e+01, -2.2187e+01,
# -3.2668e+01, -3.6677e+01, -3.3573e+01, -3.2545e+01, -2.4365e+01,
# -2.4688e+01, -3.1171e+01, -2.7743e+01, -2.9918e+01, -2.4770e+01,
# -3.2250e+01, -2.4727e+01, -2.6087e+01, -2.1870e+01, -3.2821e+01,
# -2.2128e+01, -2.2822e+01, -3.0888e+01, -3.3564e+01, -2.9906e+01,
# -2.2392e+01, -2.5573e+01, -2.6443e+01, -3.2429e+01, -3.2652e+01,
# -3.0030e+01, -2.4607e+01, -2.2967e+01, -2.4396e+01, -2.8578e+01,
# -2.5153e+01, -2.8475e+01, -2.6409e+01, -2.5230e+01, -2.7957e+01,
# -2.6298e+01, -2.3609e+01, -2.5863e+01, -2.8225e+01, -2.7225e+01,
# -3.0486e+01, -2.1185e+01, -2.7938e+01, -3.3155e+01, -1.9076e+01,
# -2.9181e+01, -2.2160e+01, -1.8352e+01, -2.5866e+01, -3.3636e+01,
# -4.2016e+00, -3.1581e+01, -3.1894e+01, -2.7834e+01, -2.5429e+01,
# -3.2235e+01, -3.2280e+01, -2.8786e+01, -2.3366e+01, -2.6047e+01,
# -2.2075e+01, -2.3770e+01, -2.2518e+01, -2.8101e+01, -2.5745e+01,
# -2.6441e+01, -2.9822e+01, -2.7109e+01, -3.0225e+01, -2.4566e+01,
# -2.9268e+01, -2.7651e+01, -3.4221e+01, -2.9026e+01, -2.6009e+01,
# -3.1968e+01, -3.1747e+01, -2.8156e+01, -2.9025e+01, -2.7756e+01,
# -2.8052e+01, -2.9341e+01, -2.8806e+01, -2.1636e+01, -2.3992e+01,
# -2.3794e+01, -3.3743e+01, -2.8332e+01, -2.7465e+01, -1.5085e-02,
# -2.9094e+01, -2.1444e+01, -2.9780e+01, -3.6046e+01, -3.7401e+01,
# -3.0888e+01, -3.3172e+01, -1.8931e+01, -2.2679e+01, -3.0225e+01,
# -2.4995e+01, -2.1028e+01]]), tensor([-0.0151]), tensor([94]), ['th'])
# 预测结果 prediction[0] 张量中的分数可以解释为给定语音属于给定语言的对数似然(即分数越大越好)
# 可以使用以下方法获取线性比例的似然值
print(prediction[1].exp())
# tensor([0.9850])
# 识别出的语言 ISO 代码在 prediction[3] 中给出
print(prediction[3])
# ['th: Thai']
# 或者,使用语音嵌入提取器:
emb = language_id.encode_batch(signal)
print(emb.shape)
# torch.Size([1, 1, 256])
若要在 GPU 上进行推理,在调用 from_hparams
方法时添加 run_opts={"device":"cuda"}
。
该系统使用采样率为 16kHz(单声道)的录音进行训练。调用 classify_file 时,代码会根据需要自动对音频进行归一化处理(即重采样和单声道选择)。如果使用 encode_batch 和 classify_batch,请确保输入张量符合预期的采样率。
✨ 主要特性
- 多语言支持:能够识别 107 种不同的语言,包括阿巴扎语、南非荷兰语、阿姆哈拉语等。
- 架构优化:采用 ECAPA - TDNN 架构,在嵌入层后使用更多全连接隐藏层,并使用交叉熵损失进行训练,提高了提取的语音嵌入在下游任务中的性能。
- 自动归一化:代码在调用 classify_file 时会自动对音频进行归一化处理,方便使用。
📚 详细文档
模型描述
这是一个使用 SpeechBrain 在 VoxLingua107 数据集上训练的口语语言识别模型。该模型采用了之前用于说话人识别的 ECAPA - TDNN 架构,但在嵌入层后使用了更多全连接隐藏层,并使用交叉熵损失进行训练。实验表明,这提高了提取的语音嵌入在下游任务中的性能。
系统使用采样率为 16kHz(单声道)的录音进行训练。调用 classify_file 时,代码会根据需要自动对音频进行归一化处理(即重采样和单声道选择)。
模型可以根据所说语言对语音进行分类,涵盖 107 种不同语言,具体如下:
- 阿巴扎语
- 南非荷兰语
- 阿姆哈拉语
- 阿拉伯语
- 阿萨姆语
- 阿塞拜疆语
- 巴什基尔语
- 白俄罗斯语
- 保加利亚语
- 孟加拉语
- 藏语
- 布列塔尼语
- 波斯尼亚语
- 加泰罗尼亚语
- 宿务语
- 捷克语
- 威尔士语
- 丹麦语
- 德语
- 希腊语
- 英语
- 世界语
- 西班牙语
- 爱沙尼亚语
- 巴斯克语
- 波斯语
- 芬兰语
- 法罗语
- 法语
- 加利西亚语
- 瓜拉尼语
- 古吉拉特语
- 马恩岛语
- 豪萨语
- 夏威夷语
- 印地语
- 克罗地亚语
- 海地语
- 匈牙利语
- 亚美尼亚语
- 国际语
- 印尼语
- 冰岛语
- 意大利语
- 希伯来语
- 日语
- 爪哇语
- 格鲁吉亚语
- 哈萨克语
- 高棉语
- 卡纳达语
- 韩语
- 拉丁语
- 卢森堡语
- 林加拉语
- 老挝语
- 立陶宛语
- 拉脱维亚语
- 马达加斯加语
- 毛利语
- 马其顿语
- 马拉雅拉姆语
- 蒙古语
- 马拉地语
- 马来语
- 马耳他语
- 缅甸语
- 尼泊尔语
- 荷兰语
- 新挪威语
- 挪威语
- 奥克语
- 旁遮普语
- 波兰语
- 普什图语
- 葡萄牙语
- 罗马尼亚语
- 俄语
- 梵语
- 苏格兰语
- 信德语
- 僧伽罗语
- 斯洛伐克语
- 斯洛文尼亚语
- 绍纳语
- 索马里语
- 阿尔巴尼亚语
- 塞尔维亚语
- 巽他语
- 瑞典语
- 斯瓦希里语
- 泰米尔语
- 泰卢固语
- 塔吉克语
- 泰语
- 土库曼语
- 他加禄语
- 土耳其语
- 鞑靼语
- 乌克兰语
- 乌尔都语
- 乌兹别克语
- 越南语
- 瓦雷语
- 意第绪语
- 约鲁巴语
- 普通话
预期用途和限制
用途
- 直接使用:可直接用于口语语言识别。
- 特征提取:作为语音级别的特征(嵌入)提取器,用于在自己的数据上创建专用的语言识别模型。
限制和偏差
由于模型在 VoxLingua107 数据集上训练,存在一些限制和偏差,具体如下:
- 小语种准确性:对小语种的识别准确性可能相当有限。
- 性别差异:对女性语音的识别效果可能不如男性语音(因为 YouTube 数据中男性语音更多)。
- 口音影响:根据主观实验,对带有外国口音的语音识别效果不佳。
- 特殊语音:对儿童语音和有语言障碍的人的语音识别效果可能不佳。
📦 训练数据
模型在 VoxLingua107 数据集上进行训练。
VoxLingua107 是一个用于训练口语语言识别模型的语音数据集。该数据集由从 YouTube 视频中自动提取的短语音片段组成,并根据视频标题和描述的语言进行标注,经过一些后处理步骤以过滤掉误报。
VoxLingua107 包含 107 种语言的数据。训练集中语音的总时长为 6628 小时,每种语言的平均数据量为 62 小时,但实际每种语言的数据量差异很大。此外,还有一个单独的开发集,包含来自 33 种语言的 1609 个语音片段,经过至少两名志愿者验证确实包含给定语言。
🔧 训练过程
训练过程详见 SpeechBrain 配方。
📊 评估结果
在 VoxLingua107 开发数据集上的错误率为 6.7%。
📄 许可证
本模型使用的许可证为 "apache - 2.0"。
引用 SpeechBrain
@misc{speechbrain,
title={{SpeechBrain}: A General-Purpose Speech Toolkit},
author={Mirco Ravanelli and Titouan Parcollet and Peter Plantinga and Aku Rouhe and Samuele Cornell and Loren Lugosch and Cem Subakan and Nauman Dawalatabad and Abdelwahab Heba and Jianyuan Zhong and Ju-Chieh Chou and Sung-Lin Yeh and Szu-Wei Fu and Chien-Feng Liao and Elena Rastorgueva and François Grondin and William Aris and Hwidong Na and Yan Gao and Renato De Mori and Yoshua Bengio},
year={2021},
eprint={2106.04624},
archivePrefix={arXiv},
primaryClass={eess.AS},
note={arXiv:2106.04624}
}
引用 VoxLingua107
@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},
}
关于 SpeechBrain
SpeechBrain 是一个开源的一体化语音工具包,设计简单、极其灵活且用户友好,在各个领域都能取得有竞争力或领先的性能。
- 官网:https://speechbrain.github.io/
- GitHub:https://github.com/speechbrain/speechbrain









