モデル概要
モデル特徴
モデル能力
使用事例
🚀 Wav2Vec2 XLS - R を用いたフィンランド語の自動音声認識
この音響モデルは、[facebook/wav2vec2 - xls - r - 1b](https://huggingface.co/facebook/wav2vec2 - xls - r - 1b) をフィンランド語の自動音声認識(ASR)用にファインチューニングしたバージョンです。このモデルは、259.57時間のフィンランド語の音声文字起こしデータを用いてファインチューニングされています。Wav2Vec2 XLS - R は この論文 で紹介され、[このページ](https://github.com/pytorch/fairseq/tree/main/examples/wav2vec#wav2vec - 20) で最初に公開されました。
このリポジトリには、音響モデルのデコード段階で使用されるフィンランド語のKenLM言語モデルも含まれています。
注意: このモデルは [Finnish - NLP/wav2vec2 - xlsr - 1b - finnish - lm](https://huggingface.co/Finnish - NLP/wav2vec2 - xlsr - 1b - finnish - lm) モデルとまったく同じです。つまり、このモデルは Finnish - NLP
Hugging Face組織にコピー/移動されただけです。
注意: このモデルには、さらに16時間のデータでより長くファインチューニングされた、より良いV2バージョンがあります: [Finnish - NLP/wav2vec2 - xlsr - 1b - finnish - lm - v2](https://huggingface.co/Finnish - NLP/wav2vec2 - xlsr - 1b - finnish - lm - v2)
✨ 主な機能
- フィンランド語の自動音声認識に特化したモデルです。
- デコード段階でKenLM言語モデルを使用しています。
📚 ドキュメント
モデルの説明
Wav2Vec2 XLS - R は、Facebook AIによる大規模な多言語音声事前学習モデルです。VoxPopuli、MLS、CommonVoice、BABEL、VoxLingua107を含む436,000時間のラベルなし音声データで事前学習されています。このモデルは、128言語でwav2vec 2.0の目的関数を使用しています。
事前学習モデルについての詳細は、[このブログ](https://ai.facebook.com/blog/xls - r - self - supervised - speech - processing - for - 128 - languages) と この論文 を参照してください。
このモデルは、事前学習モデル(10億パラメータのバリアント)をフィンランド語の自動音声認識用にファインチューニングしたものです。
使用目的と制限
使用方法
このモデルの使用方法の詳細な例については、このリポジトリ内の [run - finnish - asr - models.ipynb](https://huggingface.co/aapot/wav2vec2 - xlsr - 1b - finnish - lm/blob/main/run - finnish - asr - models.ipynb) ノートブックを参照してください。
制限とバイアス
このモデルは、最大長が20秒の音声サンプルでファインチューニングされているため、おそらく同程度の短い音声に最適に動作します。ただし、もっと長い音声でも試してみることができます。非常に長い音声ファイルでメモリ不足のエラーが発生した場合は、[このブログ記事](https://huggingface.co/blog/asr - chunking) で紹介されている音声チャンキング方法を使用することができます。
ファインチューニングに使用されたデータの大部分はフィンランド議会のデータセットから取得されたため、このモデルは、方言を含む日常会話など、非常に異なるドメインにはうまく汎化できない可能性があります。また、データセットの音声は成人男性が主体であるため、このモデルは、例えば子供や女性の音声に対してはうまく機能しない可能性があります。
デコード段階で使用されるフィンランド語のKenLM言語モデルは、音声文字起こしのテキストデータで学習されています。したがって、デコーダの言語モデルは、例えば方言を含む日常会話のような非常に異なる言語には汎化できない可能性があります。独自のKenLM言語モデルをドメイン言語用に学習させ、デコードで使用することが有益な場合があります。
学習データ
このモデルは、以下のデータセットからの259.57時間のフィンランド語の音声文字起こしデータでファインチューニングされています。
データセット | 時間 | 総時間の割合 |
---|---|---|
[Common Voice 7.0 Finnish train + evaluation + other splits](https://huggingface.co/datasets/mozilla - foundation/common_voice_7_0) | 9.70時間 | 3.74 % |
Finnish parliament session 2 | 0.24時間 | 0.09 % |
VoxPopuli Finnish | 5.94時間 | 2.29 % |
CSS10 Finnish | 10.32時間 | 3.98 % |
[Aalto Finnish Parliament ASR Corpus](http://urn.fi/urn:nbn:fi:lb - 2021051903) | 228.00時間 | 87.84 % |
[Finnish Broadcast Corpus](http://urn.fi/urn:nbn:fi:lb - 2016042502) | 5.37時間 | 2.07 % |
データセットは、最大長が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の学習データは、音声学習データのテキスト文字起こしでした。
学習ハイパーパラメータ
学習中に使用されたハイパーパラメータは以下の通りです。
- 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: 5
- 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.968 | 0.18 | 500 | 0.4870 | 0.4720 |
0.6557 | 0.36 | 1000 | 0.2450 | 0.2931 |
0.647 | 0.54 | 1500 | 0.1818 | 0.2255 |
0.5297 | 0.72 | 2000 | 0.1698 | 0.2354 |
0.5802 | 0.9 | 2500 | 0.1581 | 0.2355 |
0.6351 | 1.07 | 3000 | 0.1689 | 0.2336 |
0.4626 | 1.25 | 3500 | 0.1719 | 0.3099 |
0.4526 | 1.43 | 4000 | 0.1434 | 0.2069 |
0.4692 | 1.61 | 4500 | 0.1645 | 0.2192 |
0.4584 | 1.79 | 5000 | 0.1483 | 0.1987 |
0.4234 | 1.97 | 5500 | 0.1499 | 0.2178 |
0.4243 | 2.15 | 6000 | 0.1345 | 0.2070 |
0.4108 | 2.33 | 6500 | 0.1383 | 0.1850 |
0.4048 | 2.51 | 7000 | 0.1338 | 0.1811 |
0.4085 | 2.69 | 7500 | 0.1290 | 0.1780 |
0.4026 | 2.87 | 8000 | 0.1239 | 0.1650 |
0.4033 | 3.04 | 8500 | 0.1346 | 0.1657 |
0.3986 | 3.22 | 9000 | 0.1310 | 0.1850 |
0.3867 | 3.4 | 9500 | 0.1273 | 0.1741 |
0.3658 | 3.58 | 10000 | 0.1219 | 0.1672 |
0.382 | 3.76 | 10500 | 0.1306 | 0.1698 |
0.3847 | 3.94 | 11000 | 0.1230 | 0.1577 |
0.3691 | 4.12 | 11500 | 0.1310 | 0.1615 |
0.3593 | 4.3 | 12000 | 0.1296 | 0.1622 |
0.3619 | 4.48 | 12500 | 0.1285 | 0.1601 |
0.3361 | 4.66 | 13000 | 0.1261 | 0.1569 |
0.3603 | 4.84 | 13500 | 0.1235 | 0.1533 |
フレームワークバージョン
- 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](https://huggingface.co/datasets/mozilla - foundation/common_voice_7_0) を使用して行われました。
このモデルを評価するには、このリポジトリ内の eval.py
スクリプトを実行します。
python3 eval.py --model_id aapot/wav2vec2 - xlsr - 1b - finnish - lm --dataset mozilla - foundation/common_voice_7_0 --config fi --split test
このモデル(表の2行目)は、他のモデルと比較して、以下のWER(単語誤り率)とCER(文字誤り率)の結果を達成しています。
WER (LMあり) | WER (LMなし) | CER (LMあり) | CER (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 |
チームメンバー
- Aapo Tanskanen, Hugging Faceプロフィール, LinkedInプロフィール
- Rasmus Toivanen, Hugging Faceプロフィール, LinkedInプロフィール
詳細については、自由にお問い合わせください 🤗
📄 ライセンス
このモデルはApache 2.0ライセンスの下で提供されています。



