模型概述
模型特點
模型能力
使用案例
🚀 Wav2vec2-xls-r-300m用於芬蘭語自動語音識別
該聲學模型是 facebook/wav2vec2-xls-r-300m 針對芬蘭語自動語音識別(ASR)任務的微調版本。模型使用了 275.6 小時的芬蘭語轉錄語音數據進行微調。Wav2Vec2 XLS - R 在 這篇論文 中被提出,並首次在 此頁面 發佈。
本倉庫還包含了在解碼階段與聲學模型一起使用的芬蘭語 KenLM 語言模型。
注意:此模型與 aapot/wav2vec2-xlsr-300m-finnish-lm 模型完全相同,只是將該模型複製/移動到了這個 Finnish - NLP
Hugging Face 組織中。
✨ 主要特性
- 基於預訓練的
facebook/wav2vec2-xls-r-300m
模型進行微調,適用於芬蘭語自動語音識別任務。 - 結合了芬蘭語 KenLM 語言模型,提升解碼效果。
📦 安裝指南
文檔中未提及安裝步驟,故跳過此章節。
💻 使用示例
基礎用法
要使用此模型進行芬蘭語自動語音識別,可以參考本倉庫中的 [run - finnish - asr - models.ipynb](https://huggingface.co/Finnish - NLP/wav2vec2 - xlsr - 300m - finnish - lm/blob/main/run - finnish - asr - models.ipynb) 筆記本,其中有詳細的使用示例。
評估模型
要評估此模型,可以運行本倉庫中的 eval.py
腳本。以下是針對不同數據集的評估命令示例:
Common Voice 7.0 測試
python3 eval.py --model_id Finnish-NLP/wav2vec2-xlsr-300m-finnish-lm --dataset mozilla-foundation/common_voice_7_0 --config fi --split test
Common Voice 9.0 測試
python3 eval.py --model_id Finnish-NLP/wav2vec2-xlsr-300m-finnish-lm --dataset mozilla-foundation/common_voice_9_0 --config fi --split test
FLEURS ASR 測試
python3 eval.py --model_id Finnish-NLP/wav2vec2-xlsr-300m-finnish-lm --dataset google/fleurs --config fi_fi --split test
📚 詳細文檔
模型描述
Wav2Vec2 XLS - R 是 Facebook AI 開發的大規模多語言語音預訓練模型。它在 436000 小時的無標籤語音數據上進行預訓練,這些數據包括 VoxPopuli、MLS、CommonVoice、BABEL 和 VoxLingua107。該模型使用 wav2vec 2.0 目標函數,支持 128 種語言。
你可以從 [這篇博客](https://ai.facebook.com/blog/xls - r - self - supervised - speech - processing - for - 128 - languages) 和 這篇論文 中瞭解更多關於預訓練模型的信息。
此模型是預訓練模型(3 億參數變體)針對芬蘭語 ASR 任務的微調版本。
預期用途與限制
預期用途
你可以使用此模型進行芬蘭語自動語音識別(語音轉文本)任務。
限制和偏差
- 此模型使用的音頻樣本最大長度為 20 秒,因此該模型最適合處理類似長度的較短音頻。不過,你也可以嘗試使用更長的音頻,觀察其效果。如果在處理非常長的音頻文件時遇到內存不足的錯誤,可以使用 [這篇博客文章](https://huggingface.co/blog/asr - chunking) 中介紹的音頻分塊方法。
- 用於微調的絕大部分數據來自芬蘭議會數據集,因此該模型可能無法很好地泛化到非常不同的領域,例如帶有方言的日常芬蘭語口語等。此外,數據集的音頻往往以成年男性為主,因此該模型在處理兒童和女性的語音時可能效果不佳。
- 解碼階段使用的芬蘭語 KenLM 語言模型是使用音頻轉錄文本數據和芬蘭語維基百科的一個子集進行訓練的。因此,解碼器的語言模型可能無法很好地泛化到非常不同的語言,例如帶有方言的日常口語(因為維基百科主要包含正式的芬蘭語)。為你的領域語言訓練自己的 KenLM 語言模型並在解碼中使用可能會更有益。
訓練數據
此模型使用了來自以下數據集的 275.6 小時芬蘭語轉錄語音數據進行微調:
數據集 | 時長 | 佔總時長的百分比 |
---|---|---|
[Common Voice 7.0 芬蘭語訓練 + 評估 + 其他拆分](https://huggingface.co/datasets/mozilla - foundation/common_voice_7_0) | 9.70 小時 | 3.52 % |
芬蘭議會會議 2 | 0.24 小時 | 0.09 % |
VoxPopuli 芬蘭語 | 21.97 小時 | 7.97 % |
CSS10 芬蘭語 | 10.32 小時 | 3.74 % |
[阿爾託芬蘭議會 ASR 語料庫](http://urn.fi/urn:nbn:fi:lb - 2021051903) | 228.00 小時 | 82.73 % |
[芬蘭廣播語料庫](http://urn.fi/urn:nbn:fi:lb - 2016042502) | 5.37 小時 | 1.95 % |
數據集經過過濾,只包含最長 20 秒的音頻樣本。
訓練過程
此模型是在 Hugging Face 組織的 [Robust Speech Challenge Event](https://discuss.huggingface.co/t/open - to - the - community - robust - speech - recognition - challenge/13614) 期間進行訓練的。訓練在由 OVHcloud 贊助的 Tesla V100 GPU 上完成。
訓練腳本由 Hugging Face 提供,可在 [此處](https://github.com/huggingface/transformers/blob/main/examples/research_projects/robust - speech - event/run_speech_recognition_ctc_bnb.py) 獲取。我們僅針對自定義數據集修改了其數據加載部分。
對於 KenLM 語言模型的訓練,我們遵循了 Hugging Face 提供的 [博客文章教程](https://huggingface.co/blog/wav2vec2 - with - ngram)。5 - gram KenLM 的訓練數據是音頻訓練數據的文本轉錄以及 100k 個清洗後的 芬蘭語維基百科(2021 年 8 月)數據集的隨機樣本。
訓練超參數
訓練期間使用了以下超參數:
- 學習率:5e - 04
- 訓練批次大小:32
- 評估批次大小:32
- 隨機種子:42
- 優化器:8 位 Adam,β=(0.9, 0.999),ε = 1e - 08
- 學習率調度器類型:線性
- 學習率調度器熱身步數:500
- 訓練輪數:10
- 混合精度訓練:原生 AMP
預訓練的 facebook/wav2vec2 - xls - r - 300m
模型使用以下超參數進行初始化:
- 注意力丟棄率:0.094
- 隱藏層丟棄率:0.047
- 特徵投影丟棄率:0.04
- 掩碼時間概率:0.082
- 層丟棄率:0.041
- 激活丟棄率:0.055
- CTC 損失減少方式:"mean"
訓練結果
訓練損失 | 輪數 | 步數 | 驗證損失 | 字錯誤率(WER) |
---|---|---|---|---|
0.973 | 0.17 | 500 | 0.5750 | 0.6844 |
0.713 | 0.34 | 1000 | 0.3356 | 0.4518 |
0.6563 | 0.5 | 1500 | 0.3007 | 0.4039 |
0.642 | 0.67 | 2000 | 0.2619 | 0.3674 |
0.6203 | 0.84 | 2500 | 0.2488 | 0.3558 |
0.6016 | 1.01 | 3000 | 0.2795 | 0.3835 |
0.5423 | 1.17 | 3500 | 0.2652 | 0.3310 |
0.5639 | 1.34 | 4000 | 0.2479 | 0.3462 |
0.586 | 1.51 | 4500 | 0.2409 | 0.3295 |
0.5169 | 1.68 | 5000 | 0.2728 | 0.3352 |
0.5176 | 1.84 | 5500 | 0.2254 | 0.3149 |
0.4983 | 2.01 | 6000 | 0.2169 | 0.3009 |
0.4982 | 2.18 | 6500 | 0.2215 | 0.3079 |
0.4898 | 2.35 | 7000 | 0.2174 | 0.3023 |
0.4922 | 2.51 | 7500 | 0.2217 | 0.3081 |
0.5025 | 2.68 | 8000 | 0.2002 | 0.2710 |
0.4745 | 2.85 | 8500 | 0.1935 | 0.2783 |
0.4377 | 3.02 | 9000 | 0.1859 | 0.2742 |
0.4511 | 3.18 | 9500 | 0.2038 | 0.2786 |
0.4411 | 3.35 | 10000 | 0.1863 | 0.2651 |
0.4501 | 3.52 | 10500 | 0.1948 | 0.2605 |
0.4557 | 3.69 | 11000 | 0.1872 | 0.2695 |
0.4493 | 3.85 | 11500 | 0.1888 | 0.2632 |
0.4047 | 4.02 | 12000 | 0.1818 | 0.2559 |
0.4319 | 4.19 | 12500 | 0.1896 | 0.2648 |
0.4162 | 4.36 | 13000 | 0.1953 | 0.2595 |
0.4046 | 4.52 | 13500 | 0.1864 | 0.2606 |
0.4195 | 4.69 | 14000 | 0.1843 | 0.2467 |
0.4146 | 4.86 | 14500 | 0.1686 | 0.2450 |
0.378 | 5.03 | 15000 | 0.1731 | 0.2401 |
0.3792 | 5.19 | 15500 | 0.1676 | 0.2325 |
0.3855 | 5.36 | 16000 | 0.1740 | 0.2326 |
0.4029 | 5.53 | 16500 | 0.1674 | 0.2345 |
0.386 | 5.7 | 17000 | 0.1735 | 0.2280 |
0.3811 | 5.86 | 17500 | 0.1692 | 0.2258 |
0.3607 | 6.03 | 18000 | 0.1797 | 0.2279 |
0.3604 | 6.2 | 18500 | 0.1651 | 0.2206 |
0.3362 | 6.37 | 19000 | 0.1627 | 0.2199 |
0.3611 | 6.53 | 19500 | 0.1652 | 0.2172 |
0.3671 | 6.7 | 20000 | 0.1564 | 0.2140 |
0.3769 | 6.87 | 20500 | 0.1525 | 0.2101 |
0.3539 | 7.04 | 21000 | 0.1639 | 0.2096 |
0.3225 | 7.21 | 21500 | 0.1611 | 0.2087 |
0.3323 | 7.37 | 22000 | 0.1633 | 0.2008 |
0.3327 | 7.54 | 22500 | 0.1692 | 0.1975 |
0.3456 | 7.71 | 23000 | 0.1555 | 0.1991 |
0.3058 | 7.88 | 23500 | 0.1590 | 0.1959 |
0.3034 | 8.04 | 24000 | 0.1531 | 0.1973 |
0.2925 | 8.21 | 24500 | 0.1583 | 0.1978 |
0.2967 | 8.38 | 25000 | 0.1546 | 0.1906 |
0.2974 | 8.55 | 25500 | 0.1540 | 0.1869 |
0.3131 | 8.71 | 26000 | 0.1534 | 0.1850 |
0.3306 | 8.88 | 26500 | 0.1482 | 0.1844 |
0.2842 | 9.05 | 27000 | 0.1490 | 0.1854 |
0.2879 | 9.22 | 27500 | 0.1463 | 0.1799 |
0.27 | 9.38 | 28000 | 0.1454 | 0.1798 |
0.2874 | 9.55 | 28500 | 0.1504 | 0.1787 |
0.2757 | 9.72 | 29000 | 0.1512 | 0.1784 |
0.3017 | 9.89 | 29500 | 0.1484 | 0.1800 |
框架版本
- Transformers 4.17.0.dev0
- Pytorch 1.10.2 + cu102
- Datasets 1.18.3
- Tokenizers 0.11.0
評估結果
評估使用了 [Common Voice 7.0 芬蘭語測試拆分](https://huggingface.co/datasets/mozilla - foundation/common_voice_7_0)、[Common Voice 9.0 芬蘭語測試拆分](https://huggingface.co/datasets/mozilla - foundation/common_voice_9_0) 以及 FLEURS ASR 芬蘭語測試拆分。
此模型的訓練數據包括 Common Voice 7.0 的訓練拆分,但我們較新的 Finnish - NLP/wav2vec2 - base - fi - voxpopuli - v2 - finetuned
和 Finnish - NLP/wav2vec2 - large - uralic - voxpopuli - v2 - finnish
模型包括了 Common Voice 9.0,因此我們對兩個版本的 Common Voice 都進行了測試。注意:Common Voice 似乎沒有完全固定數據集版本之間的測試拆分,因此有可能 Common Voice 9.0 的一些訓練示例出現在 Common Voice 7.0 的測試拆分中,反之亦然。因此,在使用不同版本的 Common Voice 訓練的模型之間,Common Voice 測試結果的比較並不完全準確,但這種比較仍然有足夠的意義。
Common Voice 7.0 測試
此模型(表格第三行)與我們的其他模型及其參數數量相比,取得了以下字錯誤率(WER)和字符錯誤率(CER)結果:
模型 | 模型參數 | 帶 LM 的 WER | 不帶 LM 的 WER | 帶 LM 的 CER | 不帶 LM 的 CER |
---|---|---|---|---|---|
Finnish - NLP/wav2vec2 - base - fi - voxpopuli - v2 - finetuned | 9500 萬 | 5.85 | 13.52 | 1.35 | 2.44 |
Finnish - NLP/wav2vec2 - large - uralic - voxpopuli - v2 - finnish | 3 億 | 4.13 | 9.66 | 0.90 | 1.66 |
Finnish - NLP/wav2vec2 - xlsr - 300m - finnish - lm | 3 億 | 8.16 | 17.92 | 1.97 | 3.36 |
Finnish - NLP/wav2vec2 - xlsr - 1b - finnish - lm | 10 億 | 5.65 | 13.11 | 1.20 | 2.23 |
Finnish - NLP/wav2vec2 - xlsr - 1b - finnish - lm - v2 | 10 億 | 4.09 | 9.73 | 0.88 | 1.65 |
Common Voice 9.0 測試
此模型(表格第三行)與我們的其他模型及其參數數量相比,取得了以下字錯誤率(WER)和字符錯誤率(CER)結果:
模型 | 模型參數 | 帶 LM 的 WER | 不帶 LM 的 WER | 帶 LM 的 CER | 不帶 LM 的 CER |
---|---|---|---|---|---|
Finnish - NLP/wav2vec2 - base - fi - voxpopuli - v2 - finetuned | 9500 萬 | 5.93 | 14.08 | 1.40 | 2.59 |
Finnish - NLP/wav2vec2 - large - uralic - voxpopuli - v2 - finnish | 3 億 | 4.13 | 9.83 | 0.92 | 1.71 |
Finnish - NLP/wav2vec2 - xlsr - 300m - finnish - lm | 3 億 | 7.42 | 16.45 | 1.79 | 3.07 |
Finnish - NLP/wav2vec2 - xlsr - 1b - finnish - lm | 10 億 | 5.35 | 13.00 | 1.14 | 2.20 |
Finnish - NLP/wav2vec2 - xlsr - 1b - finnish - lm - v2 | 10 億 | 3.72 | 8.96 | 0.80 | 1.52 |
FLEURS ASR 測試
此模型(表格第三行)與我們的其他模型及其參數數量相比,取得了以下字錯誤率(WER)和字符錯誤率(CER)結果:
模型 | 模型參數 | 帶 LM 的 WER | 不帶 LM 的 WER | 帶 LM 的 CER | 不帶 LM 的 CER |
---|---|---|---|---|---|
Finnish - NLP/wav2vec2 - base - fi - voxpopuli - v2 - finetuned | 9500 萬 | 13.99 | 17.16 | 6.07 | 6.61 |
Finnish - NLP/wav2vec2 - large - uralic - voxpopuli - v2 - finnish | 3 億 | 12.44 | 14.63 | 5.77 | 6.22 |
Finnish - NLP/wav2vec2 - xlsr - 300m - finnish - lm | 3 億 | 17.72 | 23.30 | 6.78 | 7.67 |
Finnish - NLP/wav2vec2 - xlsr - 1b - finnish - lm | 10 億 | 20.34 | 16.67 | 6.97 | 6.35 |
Finnish - NLP/wav2vec2 - xlsr - 1b - finnish - lm - v2 | 10 億 | 12.11 | 14.89 | 5.65 | 6.06 |
團隊成員
- Aapo Tanskanen,Hugging Face 個人資料,領英個人資料
- Rasmus Toivanen,Hugging Face 個人資料,領英個人資料
如有更多詳情,請隨時與我們聯繫 🤗
🔧 技術細節
文檔中未提供足夠詳細的技術實現細節,故跳過此章節。
📄 許可證
此項目採用 Apache 2.0 許可證。



