许可协议:Apache-2.0
语言:英语
数据集:
- Jzuluaga/atcosim_corpus
- Jzuluaga/uwb_atcc
标签:
- 音频
- 自动语音识别
- 英语航空管制通信
- 英语
- 训练生成
评估指标:
- 词错误率(WER)
模型索引:
- 名称:wav2vec2-xls-r-300m-en-atc-uwb-atcc-atcosim
结果:
- 任务:
类型:自动语音识别
名称:语音识别
数据集:
类型:Jzuluaga/uwb_atcc
名称:UWB-ATCC数据集(航空管制通信)
配置:测试集
分割:测试集
评估指标:
- 类型:词错误率
值:24.96
名称:测试集词错误率
已验证:否
- 类型:词错误率
值:17.9
名称:测试集词错误率(+语言模型)
已验证:否
- 任务:
类型:自动语音识别
名称:语音识别
数据集:
类型:Jzuluaga/atcosim_corpus
名称:ATCOSIM语料库(航空管制通信)
配置:测试集
分割:测试集
评估指标:
- 类型:词错误率
值:4.09
名称:测试集词错误率
已验证:否
- 类型:词错误率
值:2.53
名称:测试集词错误率(+语言模型)
已验证:否
wav2vec2-xls-r-300m-en-atc-uwb-atcc-and-atcosim
该模型是基于facebook/wav2vec2-xls-r-300m在两个语料库上微调的版本:
在评估集(合并了UWB-ATCC和ATCOSIM的两个测试集)上取得了以下结果:
论文:预训练的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仓库: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在领域偏移的ASR上表现如何?航空管制通信的广泛基准测试。我们在那里描述了如何使用我们的模型的分区。
- 我们使用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"
uwb_atcc_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(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
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={预训练的Wav2Vec2.0在领域偏移的ASR上表现如何?航空管制通信的广泛基准测试},
author={Zuluaga-Gomez, Juan and Prasad, Amrutha and Nigmatulina, Iuliia and Sarfjoo, Saeed and others},
journal={IEEE口语语言技术研讨会(SLT),多哈,卡塔尔},
year={2022}
}
以及,
@article{zuluaga2022bertraffic,
title={BERTraffic:基于BERT的航空管制通信中说话人角色和说话人变更联合检测},
author={Zuluaga-Gomez, Juan and Sarfjoo, Seyyed Saeed and Prasad, Amrutha and others},
journal={IEEE口语语言技术研讨会(SLT),多哈,卡塔尔},
year={2022}
}
以及,
@article{zuluaga2022atco2,
title={ATCO2语料库:用于航空管制通信自动语音识别和自然语言理解研究的大规模数据集},
author={Zuluaga-Gomez, Juan and Vesel{\`y}, Karel and Sz{\"o}ke, Igor and Motlicek, Petr and others},
journal={arXiv预印本 arXiv:2211.04054},
year={2022}
}
训练过程
训练超参数
训练过程中使用了以下超参数:
- 学习率:0.0001
- 训练批次大小:24
- 评估批次大小:12
- 随机种子:42
- 优化器:Adam,参数betas=(0.9,0.999),epsilon=1e-08
- 学习率调度器类型:线性
- 学习率预热步数:1000
- 训练步数:10000
- 混合精度训练:原生AMP
训练结果
训练损失 |
周期 |
步数 |
验证损失 |
词错误率 |
无记录 |
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