模型概述
模型特點
模型能力
使用案例
🚀 wav2vec2-xls-r-300m-en-atc-uwb-atcc-and-atcosim
本模型是 facebook/wav2vec2-xls-r-300m 在兩個語料庫上的微調版本:
該模型在評估集(UWB-ATCC 和 ATCOSIM 兩個測試集合並)上取得了以下結果:
- 損失值:0.5595
- 詞錯誤率(Wer):0.1687
論文:預訓練的 Wav2Vec 2.0 在領域遷移的自動語音識別中表現如何?空中交通管制通信的全面基準測試
作者:Juan Zuluaga - Gomez、Amrutha Prasad、Iuliia Nigmatulina、Saeed Sarfjoo、Petr Motlicek、Matthias Kleinert、Hartmut Helmke、Oliver Ohneiser、Qingran Zhan
摘要:近期關於自監督預訓練的工作主要集中在利用大規模無標籤語音數據構建魯棒的端到端(E2E)聲學模型(AM),這些模型隨後可在下游任務(如自動語音識別(ASR))上進行微調。然而,很少有工作研究在預訓練和微調階段數據屬性存在顯著差異(即領域遷移)時對性能的影響。我們針對這一情況,分析了 Wav2Vec 2.0 和 XLS - R 模型在完全未見領域(空中交通管制(ATC)通信)的下游 ASR 任務中的魯棒性。我們在幾個開源且具有挑戰性的 ATC 數據庫上對這兩個模型進行了基準測試,這些數據庫的信噪比在 5 到 20 dB 之間。通過僅使用較小比例的標記數據微調端到端聲學模型,與基於混合的 ASR 基線相比,相對詞錯誤率(WER)降低了 20% 到 40%。我們分析了低資源場景下的 WER 以及一個 ATC 數據集所攜帶的性別偏差。
代碼 — GitHub 倉庫:https://github.com/idiap/w2v2-air-traffic
🚀 快速開始
模型使用
你可以使用我們的 Google Colab 筆記本運行和評估我們的模型:https://github.com/idiap/w2v2-air-traffic/blob/master/src/eval_xlsr_atc_model.ipynb
預期用途和限制
本模型在空管數據上進行了微調。我們預計它在其他一些數據集(如 LibriSpeech 或 CommonVoice)上不會保持相同的性能。
訓練和評估數據
詳見我們論文中的表 1(第 3 頁):預訓練的 Wav2Vec 2.0 在領域遷移的自動語音識別中表現如何?空中交通管制通信的全面基準測試。我們在那裡描述瞭如何使用我們模型的分區情況。
- 我們使用 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 格式
: - 如果你想將數據庫整理成 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}
}
訓練過程
訓練超參數
訓練期間使用了以下超參數:
- 學習率:0.0001
- 訓練批次大小:24
- 評估批次大小:12
- 隨機種子:42
- 優化器:Adam,β=(0.9, 0.999),ε = 1e - 08
- 學習率調度器類型:線性
- 學習率調度器熱身步數:1000
- 訓練步數:10000
- 混合精度訓練:Native 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 許可證。
🔍 模型信息
屬性 | 詳情 |
---|---|
模型類型 | wav2vec2 - xls - r - 300m - en - atc - uwb - atcc - and - atcosim |
訓練數據 | UWB - ATCC 語料庫和 ATCOSIM 語料庫 |
標籤 | 音頻、自動語音識別、en - atc、英語、由訓練器生成 |
評估指標 | 詞錯誤率(Wer) |



