モデル概要
モデル特徴
モデル能力
使用事例
🚀 wav2vec2-large-960h-lv60-self-en-atc-uwb-atcc
このモデルは、facebook/wav2vec2-large-960h-lv60-self を UWB-ATCCコーパス でファインチューニングしたバージョンです。音声認識タスクに特化しており、航空交通管制(ATC)通信データに対して高い性能を発揮します。
評価セットでは、以下の結果を達成しています。
- 損失: 0.7287
- 単語誤り率(WER): 0.1756
著者: 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モデルの堅牢性を分析することで、このシナリオを対象としています。我々は、信号対雑音比が5dBから20dBのいくつかのオープンソースで挑戦的なATCデータベースでこれら2つのモデルをベンチマークします。ハイブリッドベースのASRベースラインと比較して、ラベル付きデータの一部でE2E音響モデルを微調整するだけで、相対的な単語誤り率(WER)が20%から40%削減されます。低リソースシナリオでのWERと、1つのATCデータセットに含まれる性別バイアスを分析します。
コード — GitHubリポジトリ: https://github.com/idiap/w2v2-air-traffic
🚀 クイックスタート
使用方法
Google 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コーパスを使用しています。生データはここからダウンロードできます: UWB-ATCC生データ
- 心配しないでください。我々はデータベースを
Datasetsフォーマット
で用意しています。HuggingFace上のUWB-ATCCコーパス を参照してください。トレイン/テストパーティションを確認し、音声を聴くこともできます。 - HuggingFaceフォーマットのデータベースを作成する場合は、データローダースクリプト を参照してください。
独自の推論スクリプトの作成
言語モデルを使用する場合は、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-large-960h-lv60-self-en-atc-uwb-atcc"
# 1. データセットの読み込み
# 'test'パーティションのみ読み込みますが、'train'パーティションを読み込む場合は適宜変更してください
uwb_atcc_corpus_test = load_dataset(DATASET_ID, "test", split="test")
# 2. モデルの読み込み
model = AutoModelForCTC.from_pretrained(MODEL_ID)
# 3. プロセッサの読み込み、LMを使用する場合はより良い結果が得られます
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}
}
学習手順
学習ハイパーパラメータ
学習中に使用されたハイパーパラメータは以下の通りです。
- 学習率: 0.0001
- トレインバッチサイズ: 24
- 評価バッチサイズ: 12
- シード: 42
- オプティマイザ: Adam(ベータ=(0.9, 0.999)、イプシロン=1e - 08)
- 学習率スケジューラの種類: 線形
- 学習率スケジューラのウォームアップステップ: 1000
- 学習ステップ: 10000
- 混合精度学習: Native AMP
学習結果
学習損失 | エポック | ステップ | 検証損失 | 単語誤り率(WER) |
---|---|---|---|---|
ログなし | 1.06 | 500 | 2.9016 | 0.9995 |
2.877 | 2.12 | 1000 | 0.9812 | 0.3485 |
2.877 | 3.18 | 1500 | 0.7842 | 0.2732 |
0.7834 | 4.25 | 2000 | 0.6962 | 0.2192 |
0.7834 | 5.31 | 2500 | 0.6527 | 0.2042 |
0.6084 | 6.37 | 3000 | 0.6220 | 0.1972 |
0.6084 | 7.43 | 3500 | 0.6442 | 0.1934 |
0.5147 | 8.49 | 4000 | 0.6793 | 0.1950 |
0.5147 | 9.55 | 4500 | 0.6432 | 0.1920 |
0.4566 | 10.62 | 5000 | 0.6605 | 0.1853 |
0.4566 | 11.68 | 5500 | 0.6393 | 0.1866 |
0.4155 | 12.74 | 6000 | 0.6918 | 0.1803 |
0.4155 | 13.8 | 6500 | 0.6514 | 0.1791 |
0.372 | 14.86 | 7000 | 0.7010 | 0.1851 |
0.372 | 15.92 | 7500 | 0.6824 | 0.1786 |
0.3368 | 16.99 | 8000 | 0.6895 | 0.1780 |
0.3368 | 18.05 | 8500 | 0.7150 | 0.1759 |
0.3244 | 19.11 | 9000 | 0.7141 | 0.1759 |
0.3244 | 20.17 | 9500 | 0.7225 | 0.1756 |
0.2981 | 21.23 | 10000 | 0.7287 | 0.1756 |
フレームワークバージョン
- Transformers 4.24.0
- Pytorch 1.13.0+cu117
- Datasets 2.6.1
- Tokenizers 0.13.2
📄 ライセンス
このプロジェクトは、Apache 2.0ライセンスの下でライセンスされています。



