モデル概要
モデル特徴
モデル能力
使用事例
🚀 wav2vec2-xls-r-300m-en-atc-uwb-atcc-and-atcosim
このモデルは、facebook/wav2vec2-xls-r-300m を2つのコーパスでファインチューニングしたバージョンです。
このモデルは、評価セット(UWB-ATCCとATCOSIMの2つのテストセットを結合)で以下の結果を達成しています。
- 損失: 0.5595
- 単語誤り率 (Wer): 0.1687
著者: Juan Zuluaga-Gomez, Amrutha Prasad, Iuliia Nigmatulina, Saeed Sarfjoo, Petr Motlicek, Matthias Kleinert, Hartmut Helmke, Oliver Ohneiser, Qingran Zhan
概要: 最近の自己教師付き事前学習の研究では、大規模なラベルなし音声データを活用して、下流のタスク(例: 自動音声認識(ASR))でファインチューニングできる堅牢なエンドツーエンド(E2E)音響モデル(AM)を構築することに焦点が当てられています。しかし、事前学習とファインチューニングの段階でデータの特性が大きく異なる場合(ドメインシフトと呼ばれる)の性能への影響については、ほとんど研究されていません。我々は、完全に未知のドメインである航空交通管制(ATC)通信の下流ASRにおけるWav2Vec 2.0とXLS-Rモデルの堅牢性を分析することで、このシナリオを対象としています。我々は、信号対雑音比が5〜20dBのいくつかのオープンソースで挑戦的なATCデータベースでこれら2つのモデルをベンチマークしました。E2E音響モデルを少量のラベル付きデータでファインチューニングするだけで、ハイブリッドベースのASRベースラインと比較して、相対的な単語誤り率(WER)が20%〜40%削減されます。我々は、低リソースシナリオでのWERと、1つのATCデータセットに含まれる性別バイアスを分析しました。
コード — GitHubリポジトリ: https://github.com/idiap/w2v2-air-traffic
🚀 クイックスタート
モデルの使用方法
Google Colabノートブックを使用して、モデルを実行および評価できます。 評価用のColabノートブック
想定される用途と制限
このモデルは航空交通管制データでファインチューニングされています。LibriSpeechやCommonVoiceなどの他のデータセットでは、同じ性能を維持することは期待できません。
トレーニングと評価データ
論文 How Does Pre-trained Wav2Vec 2.0 Perform on Domain Shifted ASR? An Extensive Benchmark on Air Traffic Control Communications の表1(3ページ)を参照してください。ここでは、モデルの使用方法のパーティションについて説明しています。
- このモデルをファインチューニングするために、UWB-ATCC + ATCOSIMコーパスを使用しています。生データは以下からダウンロードできます。
- https://lindat.mff.cuni.cz/repository/xmlui/handle/11858/00-097C-0000-0001-CCA1-0
- https://www.spsc.tugraz.at/databases-and-tools/atcosim-air-traffic-control-simulation-speech-corpus.html
- 心配しないでください。我々は
Datasets format
でデータベースを用意しています。 - HuggingFace形式のデータベースを作成する場合は、data_loader_atc.py のデータローダースクリプトに従うことができます。
💻 使用例
基本的な使用法
言語モデルを使用する場合は、KenLMバインディングをインストールする必要があります。
conda activate your_environment
pip install https://github.com/kpu/kenlm/archive/master.zip
以下はコードのスニペットです。
from datasets import load_dataset, load_metric, Audio
import torch
from transformers import AutoModelForCTC, Wav2Vec2Processor, Wav2Vec2ProcessorWithLM
import torchaudio.functional as F
USE_LM = False
DATASET_ID = "Jzuluaga/uwb_atcc"
MODEL_ID = "Jzuluaga/wav2vec2-xls-r-300m-en-atc-uwb-atcc-and-atcosim"
# 1. データセットをロードする
# 'test'パーティションのみをロードしますが、'train'パーティションをロードする場合は、適宜変更できます
uwb_atcc_corpus_test = load_dataset(DATASET_ID, "test", split="test")
# 2. モデルをロードする
model = AutoModelForCTC.from_pretrained(MODEL_ID)
# 3. プロセッサをロードする。言語モデルを使用すると、より良い結果が得られます
if USE_LM:
processor = Wav2Vec2ProcessorWithLM.from_pretrained(MODEL_ID)
else:
processor = Wav2Vec2Processor.from_pretrained(MODEL_ID)
# 4. テストサンプルをフォーマットする
sample = next(iter(uwb_atcc_corpus_test))
file_sampling_rate = sample['audio']['sampling_rate']
# 必要に応じてリサンプリングする
if file_sampling_rate != 16000:
resampled_audio = F.resample(torch.tensor(sample["audio"]["array"]), file_sampling_rate, 16000).numpy()
else:
resampled_audio = torch.tensor(sample["audio"]["array"]).numpy()
input_values = processor(resampled_audio, return_tensors="pt").input_values
# 5. モデルで順伝播を実行する
with torch.no_grad():
logits = model(input_values).logits
# プロセッサで文字起こしを取得する
if USE_LM:
transcription = processor.batch_decode(logits.numpy()).text
else:
pred_ids = torch.argmax(logits, dim=-1)
transcription = processor.batch_decode(pred_ids)
# 出力を表示する
print(transcription)
📚 ドキュメント
引用方法
このコードを研究に使用する場合は、以下の論文を引用してください。
@article{zuluaga2022how,
title={How Does Pre-trained Wav2Vec2. 0 Perform on Domain Shifted ASR? An Extensive Benchmark on Air Traffic Control Communications},
author={Zuluaga-Gomez, Juan and Prasad, Amrutha and Nigmatulina, Iuliia and Sarfjoo, Saeed and others},
journal={IEEE Spoken Language Technology Workshop (SLT), Doha, Qatar},
year={2022}
}
また、
@article{zuluaga2022bertraffic,
title={BERTraffic: BERT-based Joint Speaker Role and Speaker Change Detection for Air Traffic Control Communications},
author={Zuluaga-Gomez, Juan and Sarfjoo, Seyyed Saeed and Prasad, Amrutha and others},
journal={IEEE Spoken Language Technology Workshop (SLT), Doha, Qatar},
year={2022}
}
さらに、
@article{zuluaga2022atco2,
title={ATCO2 corpus: A Large-Scale Dataset for Research on Automatic Speech Recognition and Natural Language Understanding of Air Traffic Control Communications},
author={Zuluaga-Gomez, Juan and Vesel{\`y}, Karel and Sz{\"o}ke, Igor and Motlicek, Petr and others},
journal={arXiv preprint arXiv:2211.04054},
year={2022}
}
トレーニング手順
トレーニングハイパーパラメータ
トレーニング中に使用されたハイパーパラメータは以下の通りです。
- 学習率 (learning_rate): 0.0001
- トレーニングバッチサイズ (train_batch_size): 24
- 評価バッチサイズ (eval_batch_size): 12
- 乱数シード (seed): 42
- オプティマイザ (optimizer): Adam(ベータ=(0.9, 0.999)、イプシロン=1e-08)
- 学習率スケジューラの種類 (lr_scheduler_type): 線形
- 学習率スケジューラのウォームアップステップ (lr_scheduler_warmup_steps): 1000
- トレーニングステップ数 (training_steps): 10000
- 混合精度トレーニング (mixed_precision_training): ネイティブAMP
トレーニング結果
トレーニング損失 | エポック | ステップ | 検証損失 | 単語誤り率 (Wer) |
---|---|---|---|---|
記録なし | 0.63 | 500 | 3.0458 | 1.0 |
2.9181 | 1.27 | 1000 | 1.1503 | 0.4723 |
2.9181 | 1.9 | 1500 | 0.8275 | 0.3500 |
0.7646 | 2.53 | 2000 | 0.6990 | 0.2845 |
0.7646 | 3.17 | 2500 | 0.5828 | 0.2509 |
0.5394 | 3.8 | 3000 | 0.5363 | 0.2487 |
0.5394 | 4.44 | 3500 | 0.5467 | 0.2171 |
0.4558 | 5.07 | 4000 | 0.5290 | 0.2090 |
0.4558 | 5.7 | 4500 | 0.4992 | 0.2046 |
0.3773 | 6.34 | 5000 | 0.4934 | 0.2052 |
0.3773 | 6.97 | 5500 | 0.4700 | 0.1983 |
0.3301 | 7.6 | 6000 | 0.4938 | 0.1874 |
0.3301 | 8.24 | 6500 | 0.5364 | 0.1893 |
0.2938 | 8.87 | 7000 | 0.5170 | 0.1830 |
0.2938 | 9.51 | 7500 | 0.5408 | 0.1815 |
0.2674 | 10.14 | 8000 | 0.5581 | 0.1733 |
0.2674 | 10.77 | 8500 | 0.5389 | 0.1719 |
0.24 | 11.41 | 9000 | 0.5344 | 0.1714 |
0.24 | 12.04 | 9500 | 0.5503 | 0.1686 |
0.211 | 12.67 | 10000 | 0.5595 | 0.1687 |
フレームワークバージョン
- Transformers: 4.24.0
- Pytorch: 1.13.0+cu117
- Datasets: 2.6.1
- Tokenizers: 0.13.2
📄 ライセンス
このモデルはApache-2.0ライセンスの下で提供されています。



