模型概述
模型特點
模型能力
使用案例
🚀 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









