モデル概要
モデル特徴
モデル能力
使用事例
🚀 Wav2vec2-xls-r-300m for Finnish ASR
この音響モデルは、フィンランド語の自動音声認識(ASR)用に facebook/wav2vec2-xls-r-300m をファインチューニングしたバージョンです。このモデルは、275.6時間のフィンランド語の文字起こし音声データでファインチューニングされています。Wav2Vec2 XLS - R は この論文 で紹介され、このページ で最初に公開されました。
このリポジトリには、音響モデルのデコード段階で使用されるフィンランド語のKenLM言語モデルも含まれています。
注意: このモデルは aapot/wav2vec2-xlsr-300m-finnish-lm モデルとまったく同じで、そのモデルがこの Finnish - NLP
Hugging Face組織にコピー/移動されたものです。
🚀 クイックスタート
このモデルを使用する方法の詳細な例については、このリポジトリの run-finnish-asr-models.ipynb ノートブックを参照してください。
✨ 主な機能
- フィンランド語の自動音声認識タスクに使用できます。
- 音響モデルと共にフィンランド語のKenLM言語モデルを使用してデコードを行います。
📦 インストール
インストールに関する具体的な内容は原READMEに記載されていないため、このセクションを省略します。
💻 使用例
使用例に関する具体的なコード例は原READMEに記載されていないため、このセクションを省略します。
📚 ドキュメント
モデルの説明
Wav2Vec2 XLS - Rは、Facebook AIによる大規模な多言語音声事前学習モデルです。VoxPopuli、MLS、CommonVoice、BABEL、VoxLingua107を含む436,000時間のラベルなし音声データで事前学習されています。128言語でwav2vec 2.0の目的関数を使用しています。
事前学習モデルについては、このブログ と この論文 で詳細を読むことができます。
このモデルは、事前学習モデル(3億パラメータのバリアント)をフィンランド語のASR用にファインチューニングしたものです。
想定される用途と制限
用途
このモデルは、フィンランド語の自動音声認識(音声からテキストへの変換)タスクに使用できます。
制限とバイアス
- このモデルは最大長が20秒の音声サンプルでファインチューニングされているため、おそらく同程度の短い音声に最適に動作します。ただし、もっと長い音声でも試すことができます。非常に長い音声ファイルでメモリ不足エラーが発生した場合は、このブログ記事 で紹介されている音声チャンク化方法を使用できます。
- ファインチューニングに使用されたデータの大部分はフィンランド議会のデータセットからのものであるため、このモデルは方言を含む日常会話などの非常に異なるドメインにはうまく汎化できない可能性があります。また、データセットの音声は成人男性が主体であるため、このモデルは子供や女性の音声に対してはうまく機能しない可能性があります。
- デコード段階で使用されるフィンランド語のKenLM言語モデルは、音声の文字起こしデータとフィンランド語版Wikipediaのサブセットからのテキストデータで学習されています。したがって、デコーダの言語モデルは、方言を含む日常会話などの非常に異なる言語には汎化できない可能性があります(特にWikipediaは主に正式なフィンランド語を含んでいるため)。独自のドメイン言語用にKenLM言語モデルを学習し、デコードで使用することが有益な場合があります。
学習データ
このモデルは、以下のデータセットからの275.6時間のフィンランド語の文字起こし音声データでファインチューニングされています。
データセット | 時間 | 総時間の割合 |
---|---|---|
Common Voice 7.0 Finnish train + evaluation + other splits | 9.70時間 | 3.52 % |
Finnish parliament session 2 | 0.24時間 | 0.09 % |
VoxPopuli Finnish | 21.97時間 | 7.97 % |
CSS10 Finnish | 10.32時間 | 3.74 % |
Aalto Finnish Parliament ASR Corpus | 228.00時間 | 82.73 % |
Finnish Broadcast Corpus | 5.37時間 | 1.95 % |
データセットは、最大長が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 - 04
- train_batch_size: 32
- eval_batch_size: 32
- 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-300m
モデルは、以下のハイパーパラメータで初期化されました。
- 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.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 Finnish test split、Common Voice 9.0 Finnish test split および FLEURS ASR Finnish test split を使用して行われました。
このモデルの学習データには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のテスト
このモデルを評価するには、このリポジトリの eval.py
スクリプトを実行します。
python3 eval.py --model_id Finnish-NLP/wav2vec2-xlsr-300m-finnish-lm --dataset mozilla-foundation/common_voice_7_0 --config fi --split test
このモデル(表の3行目)は、他のモデルとそのパラメータ数と比較して、以下の単語誤り率(WER)と文字誤り率(CER)の結果を達成しています。
モデルパラメータ | WER (LMあり) | WER (LMなし) | CER (LMあり) | CER (LMなし) | |
---|---|---|---|---|---|
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-xlsr-300m-finnish-lm --dataset mozilla-foundation/common_voice_9_0 --config fi --split test
このモデル(表の3行目)は、他のモデルとそのパラメータ数と比較して、以下の単語誤り率(WER)と文字誤り率(CER)の結果を達成しています。
モデルパラメータ | WER (LMあり) | WER (LMなし) | CER (LMあり) | CER (LMなし) | |
---|---|---|---|---|---|
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-xlsr-300m-finnish-lm --dataset google/fleurs --config fi_fi --split test
このモデルは、以下の単語誤り率(WER)と文字誤り率(CER)の結果を達成しています。
データセット | WER | CER |
---|---|---|
FLEURS ASR Finnish test split | 17.72 | 6.78 |
🔧 技術詳細
モデルの概要
この音響モデルは、facebook/wav2vec2-xls-r-300m
をフィンランド語のASR用にファインチューニングしたものです。Wav2Vec2 XLS - Rは、多言語音声認識に適した事前学習モデルで、大量のラベルなし音声データで学習されています。
学習データの選択
学習データは、複数のフィンランド語の音声データセットから選択され、最大長20秒の音声サンプルにフィルタリングされています。これにより、モデルは短い音声に対して最適化されています。
デコード段階の言語モデル
デコード段階では、フィンランド語のKenLM言語モデルが使用されます。この言語モデルは、音声の文字起こしデータとフィンランド語版Wikipediaのサブセットで学習されています。
📄 ライセンス
このモデルはApache 2.0ライセンスの下で提供されています。



