🚀 Wav2Vec2 XLS-R フィンランド語自動音声認識用モデル
この音響モデルは、facebook/wav2vec2-xls-r-1b をフィンランド語の自動音声認識(ASR)に合わせて微調整したものです。このモデルは、275.6時間のフィンランド語の音声文字起こしデータを使って微調整されています。Wav2Vec2 XLS-R は、この論文 で紹介され、このページ で最初に公開されました。
このリポジトリには、音響モデルのデコード段階で使用されるフィンランド語の KenLM 言語モデルも含まれています。
注意: このモデルは Finnish-NLP/wav2vec2-xlsr-1b-finnish-lm-v2 とまったく同じで、このモデルは Finnish-NLP
の Hugging Face 組織にコピー/移動されただけです。
✨ 主な機能
- フィンランド語の自動音声認識タスクに最適化された音響モデル。
- デコード段階で使用するフィンランド語の KenLM 言語モデルを含む。
📦 インストール
この README には具体的なインストール手順が記載されていないため、このセクションは省略されます。
💻 使用例
この README には具体的なコード例が記載されていないため、このセクションは省略されます。
📚 詳細ドキュメント
モデルの説明
Wav2Vec2 XLS-R は、Facebook AI による大規模な多言語音声事前学習モデルです。VoxPopuli、MLS、CommonVoice、BABEL、VoxLingua107 を含む 436,000 時間のラベルなし音声データで事前学習されています。このモデルは、128 の言語で wav2vec 2.0 の目的関数を使用しています。
事前学習モデルについての詳細は、このブログ と この論文 を参照してください。
このモデルは、事前学習モデル(10 億のパラメータバリアント)をフィンランド語の ASR 用に微調整したものです。
想定される用途と制限
このモデルは、フィンランド語の ASR(音声テキスト変換)タスクに使用できます。
使い方
このモデルの使用方法の詳細な例については、このリポジトリの run-finnish-asr-models.ipynb ノートブックを参照してください。
制限とバイアス
このモデルは、最大長が 20 秒の音声サンプルで微調整されているため、おそらく同程度の短い音声に最適に動作します。ただし、もっと長い音声でも試してみることができます。非常に長い音声ファイルでメモリ不足エラーが発生した場合は、このブログ記事 で紹介されている音声チャンキング方法を使用できます。
微調整に使用されたデータの大部分は、フィンランド議会のデータセットから取得されたため、このモデルは、方言を含む一般的な日常のフィンランド語など、大きく異なるドメインにはうまく汎化しない可能性があります。また、データセットの音声は成人男性が主体であるため、このモデルは、例えば子供や女性の音声ではうまく動作しない可能性があります。
デコード段階で使用されるフィンランド語の KenLM 言語モデルは、音声文字起こしのテキストデータとフィンランド語版 Wikipedia のサブセットから学習されています。したがって、デコーダの言語モデルは、非常に異なる言語、例えば方言を含む日常会話言語にはうまく汎化しない可能性があります(特に Wikipedia は主に正式なフィンランド語を含んでいるため)。独自のドメイン言語用に KenLM 言語モデルを学習させ、デコードで使用することが有益な場合があります。
学習データ
このモデルは、以下のデータセットからの 275.6 時間のフィンランド語の音声文字起こしデータで微調整されています。
データセットは、最大長が 20 秒の音声サンプルのみを含むようにフィルタリングされています。
学習手順
このモデルは、Hugging Face が主催する Robust Speech Challenge Event の間に学習されました。学習は、OVHcloud が提供する Tesla V100 GPU で行われました。
学習スクリプトは Hugging Face から提供されており、ここ で入手できます。私たちは、カスタムデータセットのデータローディングのみを変更しました。
KenLM 言語モデルの学習については、Hugging Face が提供する ブログ記事のチュートリアル に従いました。5-gram KenLM の学習データは、音声学習データのテキスト文字起こしと、クリーニングされた フィンランド語版 Wikipedia(2021 年 8 月)データセットのランダムな 100,000 サンプルでした。
学習ハイパーパラメータ
学習中に使用されたハイパーパラメータは以下の通りです。
- learning_rate: 5e-05
- train_batch_size: 32
- eval_batch_size: 8
- seed: 42
- optimizer: 8-bit Adam(betas=(0.9,0.999)、epsilon=1e-08)
- lr_scheduler_type: linear
- lr_scheduler_warmup_steps: 500
- num_epochs: 10
- mixed_precision_training: Native AMP
事前学習された facebook/wav2vec2-xls-r-1b
モデルは、以下のハイパーパラメータで初期化されました。
- attention_dropout: 0.094
- hidden_dropout: 0.047
- feat_proj_dropout: 0.04
- mask_time_prob: 0.082
- layerdrop: 0.041
- activation_dropout: 0.055
- ctc_loss_reduction: "mean"
学習結果
学習損失 |
エポック |
ステップ |
検証損失 |
単語誤り率 (Wer) |
0.7778 |
0.17 |
500 |
0.2851 |
0.3572 |
0.5506 |
0.34 |
1000 |
0.1595 |
0.2130 |
0.6569 |
0.5 |
1500 |
0.1458 |
0.2046 |
0.5997 |
0.67 |
2000 |
0.1374 |
0.1975 |
0.542 |
0.84 |
2500 |
0.1390 |
0.1956 |
0.4815 |
1.01 |
3000 |
0.1266 |
0.1813 |
0.6982 |
1.17 |
3500 |
0.1441 |
0.1965 |
0.4522 |
1.34 |
4000 |
0.1232 |
0.1822 |
0.4655 |
1.51 |
4500 |
0.1209 |
0.1702 |
0.4069 |
1.68 |
5000 |
0.1149 |
0.1688 |
0.4226 |
1.84 |
5500 |
0.1121 |
0.1560 |
0.3993 |
2.01 |
6000 |
0.1091 |
0.1557 |
0.406 |
2.18 |
6500 |
0.1115 |
0.1553 |
0.4098 |
2.35 |
7000 |
0.1144 |
0.1560 |
0.3995 |
2.51 |
7500 |
0.1028 |
0.1476 |
0.4101 |
2.68 |
8000 |
0.1129 |
0.1511 |
0.3636 |
2.85 |
8500 |
0.1025 |
0.1517 |
0.3534 |
3.02 |
9000 |
0.1068 |
0.1480 |
0.3836 |
3.18 |
9500 |
0.1072 |
0.1459 |
0.3531 |
3.35 |
10000 |
0.0928 |
0.1367 |
0.3649 |
3.52 |
10500 |
0.1042 |
0.1426 |
0.3645 |
3.69 |
11000 |
0.0979 |
0.1433 |
0.3685 |
3.85 |
11500 |
0.0947 |
0.1346 |
0.3325 |
4.02 |
12000 |
0.0991 |
0.1352 |
0.3497 |
4.19 |
12500 |
0.0919 |
0.1358 |
0.3303 |
4.36 |
13000 |
0.0888 |
0.1272 |
0.3323 |
4.52 |
13500 |
0.0888 |
0.1277 |
0.3452 |
4.69 |
14000 |
0.0894 |
0.1279 |
0.337 |
4.86 |
14500 |
0.0917 |
0.1289 |
0.3114 |
5.03 |
15000 |
0.0942 |
0.1313 |
0.3099 |
5.19 |
15500 |
0.0902 |
0.1239 |
0.3079 |
5.36 |
16000 |
0.0871 |
0.1256 |
0.3293 |
5.53 |
16500 |
0.0861 |
0.1263 |
0.3123 |
5.7 |
17000 |
0.0876 |
0.1203 |
0.3093 |
5.86 |
17500 |
0.0848 |
0.1226 |
0.2903 |
6.03 |
18000 |
0.0914 |
0.1221 |
0.297 |
6.2 |
18500 |
0.0841 |
0.1185 |
0.2797 |
6.37 |
19000 |
0.0858 |
0.1165 |
0.2878 |
6.53 |
19500 |
0.0874 |
0.1161 |
0.2974 |
6.7 |
20000 |
0.0835 |
0.1173 |
0.3051 |
6.87 |
20500 |
0.0835 |
0.1178 |
0.2941 |
7.04 |
21000 |
0.0852 |
0.1155 |
0.258 |
7.21 |
21500 |
0.0832 |
0.1132 |
0.2778 |
7.37 |
22000 |
0.0829 |
0.1110 |
0.2751 |
7.54 |
22500 |
0.0822 |
0.1069 |
0.2887 |
7.71 |
23000 |
0.0819 |
0.1103 |
0.2509 |
7.88 |
23500 |
0.0787 |
0.1055 |
0.2501 |
8.04 |
24000 |
0.0807 |
0.1076 |
0.2399 |
8.21 |
24500 |
0.0784 |
0.1052 |
0.2539 |
8.38 |
25000 |
0.0772 |
0.1075 |
0.248 |
8.55 |
25500 |
0.0772 |
0.1055 |
0.2689 |
8.71 |
26000 |
0.0763 |
0.1027 |
0.2855 |
8.88 |
26500 |
0.0756 |
0.1035 |
0.2421 |
9.05 |
27000 |
0.0771 |
0.0998 |
0.2497 |
9.22 |
27500 |
0.0756 |
0.0971 |
0.2367 |
9.38 |
28000 |
0.0741 |
0.0974 |
0.2473 |
9.55 |
28500 |
0.0739 |
0.0982 |
0.2396 |
9.72 |
29000 |
0.0756 |
0.0991 |
0.2602 |
9.89 |
29500 |
0.0737 |
0.0975 |
フレームワークのバージョン
- Transformers 4.17.0.dev0
- Pytorch 1.10.2+cu102
- Datasets 1.18.3
- Tokenizers 0.11.0
評価結果
評価は、Common Voice 7.0 Finnish test split を使用して行われました。
このモデルを評価するには、このリポジトリの eval.py
スクリプトを実行します。
python3 eval.py --model_id aapot/wav2vec2-xlsr-1b-finnish-lm-v2 --dataset mozilla-foundation/common_voice_7_0 --config fi --split test
このモデル(表の最初の行)は、他のモデルと比較して、以下の WER(単語誤り率)と CER(文字誤り率)の結果を達成しています。
|
単語誤り率 (LMあり) |
単語誤り率 (LMなし) |
文字誤り率 (LMあり) |
文字誤り率 (LMなし) |
aapot/wav2vec2-xlsr-1b-finnish-lm-v2 |
4.09 |
9.73 |
0.88 |
1.65 |
aapot/wav2vec2-xlsr-1b-finnish-lm |
5.65 |
13.11 |
1.20 |
2.23 |
aapot/wav2vec2-xlsr-300m-finnish-lm |
8.16 |
17.92 |
1.97 |
3.36 |
チームメンバー
詳細については、自由にお問い合わせください 🤗
📄 ライセンス
このモデルは、Apache 2.0 ライセンスの下で提供されています。