モデル概要
モデル特徴
モデル能力
使用事例
🚀 wav2vec2-xls-r-300m-en-atc-atcosim
このモデルは、facebook/wav2vec2-xls-r-300m を ATCOSIMコーパス でファインチューニングしたバージョンです。
(より良いATCデータ用のASRモデルはこちらで入手できます: https://huggingface.co/Jzuluaga/wav2vec2-xls-r-300m-en-atc-uwb-atcc-and-atcosim)
評価セットでは、以下の結果を達成しています。
- 損失: 0.0988
- 単語誤り率 (WER): 0.0736
著者: Juan Zuluaga-Gomez, Amrutha Prasad, Iuliia Nigmatulina, Saeed Sarfjoo, Petr Motlicek, Matthias Kleinert, Hartmut Helmke, Oliver Ohneiser, Qingran Zhan
概要: 最近の自己教師付き事前学習の研究では、大規模なラベルなし音声データを活用して、ロバストなエンドツーエンド(E2E)音響モデル(AM)を構築することに焦点が当てられています。これらのモデルは、後に自動音声認識(ASR)などの下流タスクでファインチューニングすることができます。しかし、事前学習とファインチューニングの段階でデータの特性が大きく異なる場合(ドメインシフトと呼ばれる)のパフォーマンスへの影響を調査した研究はほとんどありません。我々は、まったく未知のドメインである航空交通管制(ATC)通信の下流ASRにおけるWav2Vec 2.0とXLS - Rモデルのロバスト性を分析することで、このシナリオを対象としています。我々は、信号対雑音比が5dBから20dBのいくつかのオープンソースで挑戦的なATCデータベースでこれら2つのモデルをベンチマークしています。E2E音響モデルを少量のラベル付きデータでファインチューニングするだけで、ハイブリッドベースのASRベースラインと比較して、相対的な単語誤り率(WER)が20%から40%削減されます。我々は、低リソースシナリオでのWERと、1つのATCデータセットに含まれる性別バイアスを分析しています。
コード — GitHubリポジトリ: https://github.com/idiap/w2v2-air-traffic
🚀 クイックスタート
このモデルは、航空交通管制データでファインチューニングされています。使用方法や評価については、以下のセクションを参照してください。
✨ 主な機能
- 航空交通管制(ATC)通信の自動音声認識に特化したモデルです。
- facebook/wav2vec2-xls-r-300m をベースにファインチューニングされています。
- 評価セットで良好な単語誤り率(WER)を達成しています。
📦 インストール
言語モデルを使用する場合、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/atcosim_corpus"
MODEL_ID = "Jzuluaga/wav2vec2-xls-r-300m-en-atc-atcosim"
# 1. データセットをロード
# 'test'パーティションのみをロードしますが、'train'パーティションをロードする場合は適宜変更してください
atcosim_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(atcosim_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)
📚 ドキュメント
意図された用途と制限
このモデルは航空交通管制データでファインチューニングされているため、LibriSpeechやCommonVoiceなどの他のデータセットでは同じパフォーマンスを維持することは期待できません。
トレーニングと評価データ
論文 How Does Pre-trained Wav2Vec 2.0 Perform on Domain Shifted ASR? An Extensive Benchmark on Air Traffic Control Communications の表1(3ページ)を参照してください。ここでは、モデルの使用方法のパーティションについて説明しています。
- このモデルのファインチューニングにはATCOSIMデータセットを使用しています。生データはこちらからダウンロードできます: https://www.spsc.tugraz.at/databases-and-tools/atcosim-air-traffic-control-simulation-speech-corpus.html
- 心配しないでください、我々はデータベースを
Datasetsフォーマット
で用意しています。こちら ATCOSIM CORPUS on HuggingFace で、トレイン/テストパーティションを確認し、オーディオを聴くことができます。 - HuggingFaceフォーマットのデータベースを準備する場合は、data_loader_atc.py のデータローダースクリプトに従ってください。
独自の推論スクリプトの作成
上記のコードスニペットを参考に、独自の推論スクリプトを作成することができます。
🔧 技術詳細
トレーニングハイパーパラメータ
トレーニング中に使用されたハイパーパラメータは以下の通りです。
- 学習率: 0.0005
- トレーニングバッチサイズ: 24
- 評価バッチサイズ: 24
- シード: 42
- 勾配累積ステップ: 4
- 総トレーニングバッチサイズ: 96
- オプティマイザ: Adam(ベータ=(0.9, 0.999)、イプシロン=1e - 08)
- 学習率スケジューラタイプ: 線形
- 学習率スケジューラウォームアップステップ: 500
- トレーニングステップ: 20000
- 混合精度トレーニング: Native AMP
トレーニング結果
トレーニング損失 | エポック | ステップ | 検証損失 | 単語誤り率 (WER) |
---|---|---|---|---|
1.9105 | 6.41 | 500 | 0.1622 | 0.1531 |
0.1119 | 12.82 | 1000 | 0.0971 | 0.0936 |
0.0614 | 19.23 | 1500 | 0.1002 | 0.0983 |
0.044 | 25.64 | 2000 | 0.1011 | 0.0929 |
0.0366 | 32.05 | 2500 | 0.0932 | 0.0828 |
0.0315 | 38.46 | 3000 | 0.0926 | 0.0880 |
0.0297 | 44.87 | 3500 | 0.0972 | 0.0882 |
0.0216 | 51.28 | 4000 | 0.0911 | 0.0774 |
0.0211 | 57.69 | 4500 | 0.0982 | 0.0891 |
0.0187 | 64.1 | 5000 | 0.1009 | 0.0863 |
0.02 | 70.51 | 5500 | 0.0953 | 0.0852 |
0.0163 | 76.92 | 6000 | 0.1028 | 0.0804 |
0.0128 | 83.33 | 6500 | 0.0930 | 0.0856 |
0.0127 | 89.74 | 7000 | 0.0892 | 0.0676 |
0.0116 | 96.15 | 7500 | 0.0857 | 0.0753 |
0.0139 | 102.56 | 8000 | 0.1078 | 0.0481 |
0.0107 | 108.97 | 8500 | 0.0955 | 0.0683 |
0.0096 | 115.38 | 9000 | 0.0846 | 0.0697 |
0.0089 | 121.79 | 9500 | 0.0854 | 0.0675 |
0.0084 | 128.21 | 10000 | 0.0875 | 0.0779 |
0.0074 | 134.62 | 10500 | 0.0840 | 0.0770 |
0.0061 | 141.03 | 11000 | 0.0903 | 0.0754 |
0.0076 | 147.44 | 11500 | 0.0872 | 0.0769 |
0.0069 | 153.85 | 12000 | 0.0891 | 0.0772 |
0.0061 | 160.26 | 12500 | 0.0971 | 0.0774 |
0.0049 | 166.67 | 13000 | 0.0984 | 0.0726 |
0.0045 | 173.08 | 13500 | 0.0952 | 0.0765 |
0.0039 | 179.49 | 14000 | 0.1015 | 0.0762 |
0.0031 | 185.9 | 14500 | 0.0937 | 0.0712 |
0.0032 | 192.31 | 15000 | 0.0982 | 0.0635 |
0.0028 | 198.72 | 15500 | 0.0981 | 0.0743 |
0.0024 | 205.13 | 16000 | 0.1019 | 0.0712 |
0.0024 | 211.54 | 16500 | 0.0957 | 0.0732 |
0.002 | 217.95 | 17000 | 0.0941 | 0.0732 |
0.0015 | 224.36 | 17500 | 0.1009 | 0.0717 |
0.0017 | 230.77 | 18000 | 0.0955 | 0.0730 |
0.0013 | 237.18 | 18500 | 0.0989 | 0.0732 |
0.0013 | 243.59 | 19000 | 0.0967 | 0.0738 |
0.0011 | 250.0 | 19500 | 0.0980 | 0.0734 |
0.0008 | 256.41 | 20000 | 0.0988 | 0.0736 |
フレームワークバージョン
- Transformers 4.24.0
- Pytorch 1.13.0+cu117
- Datasets 2.6.1
- Tokenizers 0.13.2
📄 ライセンス
このモデルはApache 2.0ライセンスの下で提供されています。
引用
このコードを研究に使用する場合は、以下の論文を引用してください。
@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}
}



