language:
- multilingual
- ab
- af
- am
- ar
- as
- az
- ba
- be
- bg
- bi
- bo
- br
- bs
- ca
- ceb
- cs
- cy
- da
- de
- el
- en
- eo
- es
- et
- eu
- fa
- fi
- fo
- fr
- gl
- gn
- gu
- gv
- ha
- haw
- hi
- hr
- ht
- hu
- hy
- ia
- id
- is
- it
- he
- ja
- jv
- ka
- kk
- km
- kn
- ko
- la
- lm
- ln
- lo
- lt
- lv
- mg
- mi
- mk
- ml
- mn
- mr
- ms
- mt
- my
- ne
- nl
- nn
- no
- oc
- pa
- pl
- ps
- pt
- ro
- ru
- sa
- sco
- sd
- si
- sk
- sl
- sn
- so
- sq
- sr
- su
- sv
- sw
- ta
- te
- tg
- th
- tk
- tl
- tr
- tt
- uk
- ud
- uz
- vi
- war
- yi
- yo
- zh
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 语音语言识别模型
模型描述
这是一个基于SpeechBrain框架、在VoxLingua107数据集上训练的语音语言识别模型。该模型采用ECAPA-TDNN架构(该架构曾用于说话人识别),但在嵌入层后增加了更多全连接隐藏层,并使用交叉熵损失进行训练。我们发现这能提升提取的语音嵌入向量在下游任务中的表现。
系统训练采用16kHz采样率(单声道)的录音。当调用classify_file时,代码会自动对音频进行标准化处理(如需要,会进行重采样和单声道选择)。
该模型可识别语音片段所属的语种,支持107种不同语言(阿布哈兹语、南非荷兰语、阿姆哈拉语、阿拉伯语、阿萨姆语、阿塞拜疆语、巴什基尔语、白俄罗斯语、保加利亚语、孟加拉语、藏语、布列塔尼语、波斯尼亚语、加泰罗尼亚语、宿务语、捷克语、威尔士语、丹麦语、德语、希腊语、英语、世界语、西班牙语、爱沙尼亚语、巴斯克语、波斯语、芬兰语、法罗语、法语、加利西亚语、瓜拉尼语、古吉拉特语、马恩岛语、豪萨语、夏威夷语、印地语、克罗地亚语、海地克里奥尔语、匈牙利语、亚美尼亚语、国际语A、印度尼西亚语、冰岛语、意大利语、希伯来语、日语、爪哇语、格鲁吉亚语、哈萨克语、高棉语、卡纳达语、韩语、拉丁语、卢森堡语、林加拉语、老挝语、立陶宛语、拉脱维亚语、马尔加什语、毛利语、马其顿语、马拉雅拉姆语、蒙古语、马拉地语、马来语、马耳他语、缅甸语、尼泊尔语、荷兰语、新挪威语、挪威语、奥克语、旁遮普语、波兰语、普什图语、葡萄牙语、罗马尼亚语、俄语、梵语、苏格兰语、信德语、僧伽罗语、斯洛伐克语、斯洛文尼亚语、绍纳语、索马里语、阿尔巴尼亚语、塞尔维亚语、巽他语、瑞典语、斯瓦希里语、泰米尔语、泰卢固语、塔吉克语、泰语、土库曼语、他加禄语、土耳其语、鞑靼语、乌克兰语、乌尔都语、乌兹别克语、越南语、瓦赖语、意第绪语、约鲁巴语、汉语普通话)。
预期用途与限制
模型有两种用途:
- 直接用于语音语言识别
- 作为语音片段级别的特征(嵌入向量)提取器,用于在自己的数据上构建专用语种识别模型
模型基于自动收集的YouTube数据训练。关于数据集的更多信息请参见此处。
使用方法
pip install git+https://github.com/speechbrain/speechbrain.git@develop
import torchaudio
from speechbrain.inference.classifiers import EncoderClassifier
language_id = EncoderClassifier.from_hparams(source="speechbrain/lang-id-voxlingua107-ecapa", savedir="tmp")
signal = language_id.load_audio("speechbrain/lang-id-voxlingua107-ecapa/udhr_th.wav")
prediction = language_id.classify_batch(signal)
print(prediction)
print(prediction[1].exp())
print(prediction[3])
emb = language_id.encode_batch(signal)
print(emb.shape)
如需使用GPU推理,在调用from_hparams
方法时添加run_opts={"device":"cuda"}
参数。
系统训练采用16kHz采样率(单声道)。调用classify_file时会自动进行音频标准化处理。使用encode_batch和classify_batch时请确保输入张量符合预期采样率。
注意:在数据集和本模型的默认设置中(参见label_encoder.txt
),希伯来语的ISO代码已过时(应为he
而非iw
),爪哇语的ISO代码不正确(应为jv
而非jw
)。详见issue #2396。
限制与偏差
由于模型基于VoxLingua107训练,存在诸多限制和偏差,包括但不限于:
- 对小语种的识别准确率可能较低
- 对女性语音的表现可能逊于男性语音(YouTube数据中男性语音占比更高)
- 主观测试显示对外国口音语音效果不佳
- 可能不适用于儿童语音和言语障碍者语音
训练数据
模型基于VoxLingua107训练。
VoxLingua107是用于训练语种识别模型的语音数据集,包含从YouTube视频自动提取的短语音片段,根据视频标题和描述的语言标签进行标注,并通过后处理步骤过滤误报。
VoxLingua107涵盖107种语言,训练集总时长达6628小时,平均每种语言62小时(实际数据量因语言而异)。另包含独立开发集,含33种语言的1609段语音,每段至少经两名志愿者验证确认为目标语言。
训练流程
参见SpeechBrain配方。
评估结果
在VoxLingua107开发集上的错误率:6.7%
引用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