模型概述
模型特點
模型能力
使用案例
🚀 Wav2Vec2-base-fi-voxpopuli-v2 用於芬蘭語自動語音識別
該聲學模型是 facebook/wav2vec2-base-fi-voxpopuli-v2 針對芬蘭語自動語音識別(ASR)任務的微調版本。該模型使用了 276.7 小時的芬蘭語轉錄語音數據進行微調。Wav2Vec2 首次在 這篇論文 中被提出,並在 此頁面 首次發佈。
本倉庫還包含了在解碼階段與聲學模型一起使用的芬蘭語 KenLM 語言模型。
✨ 主要特性
- 基於預訓練的
facebook/wav2vec2-base-fi-voxpopuli-v2
模型進行微調,適用於芬蘭語語音識別任務。 - 訓練數據涵蓋多個芬蘭語語音數據集,經過篩選確保音頻樣本長度不超過 20 秒。
- 提供了詳細的訓練過程和評估結果,便於對比和參考。
📚 詳細文檔
模型描述
Wav2vec2-base-fi-voxpopuli-v2 是 Facebook AI 針對芬蘭語語音的預訓練模型。它使用 VoxPopuli V2 數據集 中 14200 小時的無標籤芬蘭語語音,以 wav2vec 2.0 目標進行預訓練。
本模型是該預訓練模型針對芬蘭語 ASR 任務的微調版本。
預期用途和限制
如何使用
請查看本倉庫中的 run-finnish-asr-models.ipynb 筆記本,以獲取使用該模型的詳細示例。
限制和偏差
- 該模型使用最大長度為 20 秒的音頻樣本進行微調,因此對於類似長度的較短音頻效果可能最佳。不過,你也可以嘗試使用更長的音頻,並觀察其效果。如果在處理非常長的音頻文件時遇到內存不足的錯誤,可以使用 這篇博客文章 中介紹的音頻分塊方法。
- 用於微調的絕大部分數據來自芬蘭議會數據集,因此該模型可能無法很好地泛化到非常不同的領域,例如帶有方言的日常芬蘭語口語等。此外,數據集的音頻往往以成年男性為主,因此該模型可能對兒童和女性的語音效果不佳。
- 解碼階段使用的芬蘭語 KenLM 語言模型是使用音頻轉錄文本和芬蘭語維基百科的一個子集進行訓練的。因此,解碼器的語言模型可能無法很好地泛化到非常不同的語言,例如帶有方言的日常口語(因為維基百科主要包含正式的芬蘭語)。為你的領域語言訓練自己的 KenLM 語言模型並在解碼中使用可能會更有益。
訓練數據
該模型使用了來自以下數據集的 276.7 小時芬蘭語轉錄語音數據進行微調:
數據集 | 時長 | 佔總時長的百分比 |
---|---|---|
Common Voice 9.0 芬蘭語訓練 + 評估 + 其他拆分 | 10.80 小時 | 3.90 % |
芬蘭議會會議 2 | 0.24 小時 | 0.09 % |
VoxPopuli 芬蘭語 | 21.97 小時 | 7.94 % |
CSS10 芬蘭語 | 10.32 小時 | 3.73 % |
阿爾託大學芬蘭議會 ASR 語料庫 | 228.00 小時 | 82.40 % |
芬蘭廣播語料庫 | 5.37 小時 | 1.94 % |
數據集經過篩選,僅包含長度不超過 20 秒的音頻樣本。
訓練過程
該模型在由 Hugging Face 和 OVHcloud 贊助的 Tesla V100 GPU 上進行訓練。
訓練腳本由 Hugging Face 提供,可在 此處 獲取。我們僅對其數據加載部分進行了修改,以適應我們的自定義數據集。
對於 KenLM 語言模型的訓練,我們遵循了 Hugging Face 提供的 博客文章教程。5 元 KenLM 的訓練數據包括音頻訓練數據的文本轉錄以及 2021 年 8 月清理後的 芬蘭語維基百科 數據集中的 100000 個隨機樣本。
訓練超參數
訓練期間使用了以下超參數:
- 學習率:1e-04
- 訓練批次大小:64
- 評估批次大小:64
- 隨機種子:42
- 優化器:8 位 Adam,β=(0.9, 0.999),ε=1e-08
- 學習率調度器類型:線性
- 學習率調度器熱身步數:500
- 訓練輪數:10
- 混合精度訓練:原生 AMP
預訓練的 facebook/wav2vec2-base-fi-voxpopuli-v2
模型使用以下超參數進行初始化:
- 注意力丟棄率:0.094
- 隱藏層丟棄率:0.047
- 特徵投影丟棄率:0.04
- 掩碼時間概率:0.082
- 層丟棄率:0.041
- 激活丟棄率:0.055
- CTC 損失縮減方式:"mean"
訓練結果
訓練損失 | 輪數 | 步數 | 驗證損失 | 詞錯誤率(WER) |
---|---|---|---|---|
1.575 | 0.33 | 500 | 0.7454 | 0.7048 |
0.5838 | 0.66 | 1000 | 0.2377 | 0.2608 |
0.5692 | 1.0 | 1500 | 0.2014 | 0.2244 |
0.5112 | 1.33 | 2000 | 0.1885 | 0.2013 |
0.4857 | 1.66 | 2500 | 0.1881 | 0.2120 |
0.4821 | 1.99 | 3000 | 0.1603 | 0.1894 |
0.4531 | 2.32 | 3500 | 0.1594 | 0.1865 |
0.4411 | 2.65 | 4000 | 0.1641 | 0.1874 |
0.4437 | 2.99 | 4500 | 0.1545 | 0.1874 |
0.4191 | 3.32 | 5000 | 0.1565 | 0.1770 |
0.4158 | 3.65 | 5500 | 0.1696 | 0.1867 |
0.4032 | 3.98 | 6000 | 0.1561 | 0.1746 |
0.4003 | 4.31 | 6500 | 0.1432 | 0.1749 |
0.4059 | 4.64 | 7000 | 0.1390 | 0.1690 |
0.4019 | 4.98 | 7500 | 0.1291 | 0.1646 |
0.3811 | 5.31 | 8000 | 0.1485 | 0.1755 |
0.3955 | 5.64 | 8500 | 0.1351 | 0.1659 |
0.3562 | 5.97 | 9000 | 0.1328 | 0.1614 |
0.3646 | 6.3 | 9500 | 0.1329 | 0.1584 |
0.351 | 6.64 | 10000 | 0.1342 | 0.1554 |
0.3408 | 6.97 | 10500 | 0.1422 | 0.1509 |
0.3562 | 7.3 | 11000 | 0.1309 | 0.1528 |
0.3335 | 7.63 | 11500 | 0.1305 | 0.1506 |
0.3491 | 7.96 | 12000 | 0.1365 | 0.1560 |
0.3538 | 8.29 | 12500 | 0.1293 | 0.1512 |
0.3338 | 8.63 | 13000 | 0.1328 | 0.1511 |
0.3509 | 8.96 | 13500 | 0.1304 | 0.1520 |
0.3431 | 9.29 | 14000 | 0.1360 | 0.1517 |
0.3309 | 9.62 | 14500 | 0.1328 | 0.1514 |
0.3252 | 9.95 | 15000 | 0.1316 | 0.1498 |
框架版本
- Transformers 4.19.1
- Pytorch 1.11.0+cu102
- Datasets 2.2.1
- Tokenizers 0.11.0
評估結果
評估使用了 Common Voice 7.0 芬蘭語測試拆分、Common Voice 9.0 芬蘭語測試拆分 以及 FLEURS ASR 芬蘭語測試拆分。
該模型的訓練數據包括 Common Voice 9.0 的訓練拆分,但我們之前的大多數模型使用的是 Common Voice 7.0,因此我們對兩個版本的 Common Voice 都進行了測試。注意:Common Voice 在不同數據集版本之間似乎沒有完全固定測試拆分,因此 Common Voice 9.0 的一些訓練示例可能出現在 Common Voice 7.0 的測試拆分中,反之亦然。因此,在使用不同 Common Voice 版本訓練的模型之間,Common Voice 測試結果的比較並不完全準確,但這種比較仍然具有足夠的意義。
Common Voice 7.0 測試
要評估該模型,請運行本倉庫中的 eval.py
腳本:
python3 eval.py --model_id Finnish-NLP/wav2vec2-base-fi-voxpopuli-v2-finetuned --dataset mozilla-foundation/common_voice_7_0 --config fi --split test
與我們的其他模型及其參數數量相比,該模型(表格第一行)取得了以下詞錯誤率(WER)和字符錯誤率(CER)結果:
模型 | 模型參數 | 帶語言模型的 WER | 不帶語言模型的 WER | 帶語言模型的 CER | 不帶語言模型的 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 測試
要評估該模型,請運行本倉庫中的 eval.py
腳本:
python3 eval.py --model_id Finnish-NLP/wav2vec2-base-fi-voxpopuli-v2-finetuned --dataset mozilla-foundation/common_voice_9_0 --config fi --split test
與我們的其他模型及其參數數量相比,該模型(表格第一行)取得了以下詞錯誤率(WER)和字符錯誤率(CER)結果:
模型 | 模型參數 | 帶語言模型的 WER | 不帶語言模型的 WER | 帶語言模型的 CER | 不帶語言模型的 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 測試
要評估該模型,請運行本倉庫中的 eval.py
腳本:
python3 eval.py --model_id Finnish-NLP/wav2vec2-base-fi-voxpopuli-v2-finetuned --dataset google/fleurs --config fi_fi --split test
與我們的其他模型及其參數數量相比,該模型(表格第一行)取得了以下詞錯誤率(WER)和字符錯誤率(CER)結果:
模型 | 模型參數 | 帶語言模型的 WER | 不帶語言模型的 WER | 帶語言模型的 CER | 不帶語言模型的 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 |
📄 許可證
本項目採用 Apache-2.0 許可證。
團隊成員
- Aapo Tanskanen,Hugging Face 個人資料,領英個人資料
- Rasmus Toivanen,Hugging Face 個人資料,領英個人資料
如有更多詳細信息需求,請隨時聯繫我們 🤗



