许可证:apache-2.0
语言:英语
数据集:
- Jzuluaga/atcosim_corpus
标签:
- 音频
- 自动语音识别
- 英语航空管制(en-atc)
- 英语
- 训练生成
评估指标:
- 词错误率(wer)
模型索引:
- 名称:wav2vec2-xls-r-300m-en-atc-atcosim
结果:
- 任务:
类型:自动语音识别
名称:语音识别
数据集:
类型:Jzuluaga/atcosim_corpus
名称:ATCOSIM数据集(航空交通管制通信)
配置:测试集
拆分:测试集
评估指标:
- 类型:词错误率(wer)
值:7.36
名称:测试集词错误率
已验证:否
wav2vec2-xls-r-300m-en-atc-atcosim
该模型是基于facebook/wav2vec2-xls-r-300m在ATCOSIM语料库上微调的版本。
(此处可获取更优的航空管制数据ASR模型:链接)


在评估集上的表现如下:
论文:预训练Wav2Vec 2.0在领域偏移的ASR中表现如何?航空交通管制通信的广泛基准测试。
作者: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之间)上对这两个模型进行基准测试。仅用少量标注数据微调E2E声学模型,即可获得相比基于混合模型的ASR基线20%至40%的相对词错误率(WER)降低。我们还分析了低资源场景下的WER及某ATC数据集中的性别偏差。
代码库:GitHub链接
使用方式
可通过我们的Google Colab笔记本来运行和评估模型:链接
预期用途与限制
该模型专为航空交通管制数据微调,不保证在LibriSpeech或CommonVoice等其他数据集上保持同等性能。
训练与评估数据
参见论文中的表1(第3页):[链接](https://arxiv.org/abs/2203.16822)。我们详细描述了模型分区的使用方法。
自定义推理脚本
若使用语言模型,需安装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"
atcosim_corpus_test = load_dataset(DATASET_ID, "test", split="test")
model = AutoModelForCTC.from_pretrained(MODEL_ID)
if USE_LM:
processor = Wav2Vec2ProcessorWithLM.from_pretrained(MODEL_ID)
else:
processor = Wav2Vec2Processor.from_pretrained(MODEL_ID)
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
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.0005
- 训练批次大小:24
- 评估批次大小:24
- 随机种子:42
- 梯度累积步数:4
- 总训练批次大小:96
- 优化器:Adam(beta1=0.9,beta2=0.999,epsilon=1e-08)
- 学习率调度器类型:线性
- 预热步数:500
- 总训练步数:20000
- 混合精度训练:原生AMP
训练结果
训练损失 |
周期 |
步数 |
验证损失 |
词错误率 |
1.9105 |
6.41 |
500 |
0.1622 |
0.1531 |
...(后续数据省略) |
|
|
|
|
框架版本
- Transformers 4.24.0
- PyTorch 1.13.0+cu117
- Datasets 2.6.1
- Tokenizers 0.13.2