Wav2vec2 Large 960h Lv60 Self En Atc Uwb Atcc
基於facebook/wav2vec2-large-960h-lv60-self模型在UWB-ATCC航空交通管制通信數據集上微調的語音識別模型
下載量 115
發布時間 : 11/30/2022
模型概述
該模型專門用於航空交通管制(ATC)通信場景的英語語音識別,在領域偏移情況下表現出色
模型特點
領域適應性強
針對航空交通管制通信場景優化,在領域偏移情況下仍保持高性能
低資源高效
僅需少量標註數據微調即可顯著提升性能
支持語言模型集成
可結合KenLM語言模型進一步提升識別準確率
模型能力
英語航空交通管制語音識別
噪聲環境下的語音識別
領域特定術語識別
使用案例
航空交通管制
ATC通信轉錄
將航空管制員與飛行員之間的語音通信轉換為文本
詞錯誤率(WER)17.2(無LM)/13.72(帶LM)
航空語音數據分析
支持航空安全研究和通信效率分析
🚀 wav2vec2-large-960h-lv60-self-en-atc-uwb-atcc
本模型是 facebook/wav2vec2-large-960h-lv60-self 在 UWB-ATCC 語料庫 上的微調版本。它可用於空中交通管制通信的自動語音識別任務,在相關評估集上取得了較好的效果。
模型信息
屬性 | 詳情 |
---|---|
模型類型 | wav2vec2-large-960h-lv60-self-en-atc-uwb-atcc |
基礎模型 | facebook/wav2vec2-large-960h-lv60-self |
訓練數據 | UWB-ATCC 語料庫、ATCOSIM 語料庫 |
評估指標 | 字錯率(WER) |
許可證 | Apache-2.0 |
評估結果
本模型在評估集上取得了以下結果:
- 損失值:0.7287
- 字錯率(WER):0.1756
論文信息
- 標題:How Does Pre-trained Wav2Vec 2.0 Perform on Domain Shifted ASR? An Extensive Benchmark on Air Traffic Control Communications
- 作者: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 基線相比,相對字錯率(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
編寫推理腳本
如果你使用語言模型,需要使用以下命令安裝 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. 加載處理器,我們提供支持語言模型的選項,這可能會產生更好的結果
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)
✨ 主要特性
- 基於預訓練的 wav2vec2 模型進行微調,適用於空中交通管制通信的自動語音識別任務。
- 在多個 ATC 數據集上進行了評估,取得了較好的字錯率(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/uwb_atcc"
MODEL_ID = "Jzuluaga/wav2vec2-large-960h-lv60-self-en-atc-uwb-atcc"
# 1. 加載數據集
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)
高級用法
# 可根據實際需求調整 USE_LM 參數,使用語言模型以獲得更好的識別效果
USE_LM = True
# 其餘代碼與基礎用法相同
📚 詳細文檔
預期用途與限制
本模型在空中交通管制數據上進行了微調。我們預計它在其他數據集(如 LibriSpeech 或 CommonVoice)上可能無法保持相同的性能。
訓練和評估數據
詳情請參閱我們論文中的表 1(第 3 頁):How Does Pre-trained Wav2Vec 2.0 Perform on Domain Shifted ASR? An Extensive Benchmark on Air Traffic Control Communications。我們在論文中描述瞭如何使用我們模型的分區情況。
- 我們使用 UWB - ATCC 語料庫對該模型進行微調。你可以在此處下載原始數據:https://lindat.mff.cuni.cz/repository/xmlui/handle/11858/00 - 097C - 0000 - 0001 - CCA1 - 0
- 不過,不用擔心,我們已經將數據庫準備成
Datasets 格式
。可查看 HuggingFace 上的 UWB - ATCC 語料庫。你可以滾動查看訓練/測試分區,甚至可以收聽一些音頻。 - 如果你想準備一個 HuggingFace 格式的數據庫,可以參考以下數據加載腳本:data_loader_atc.py。
訓練過程
訓練超參數
訓練過程中使用了以下超參數:
- 學習率:0.0001
- 訓練批次大小:24
- 評估批次大小:12
- 隨機種子:42
- 優化器:Adam(β1 = 0.9,β2 = 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 許可證。
🔗 引用
如果你在研究中使用了此代碼,請引用我們的論文:
@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}
}
Voice Activity Detection
MIT
基於pyannote.audio 2.1版本的語音活動檢測模型,用於識別音頻中的語音活動時間段
語音識別
V
pyannote
7.7M
181
Wav2vec2 Large Xlsr 53 Portuguese
Apache-2.0
這是一個針對葡萄牙語語音識別任務微調的XLSR-53大模型,基於Common Voice 6.1數據集訓練,支持葡萄牙語語音轉文本。
語音識別 其他
W
jonatasgrosman
4.9M
32
Whisper Large V3
Apache-2.0
Whisper是由OpenAI提出的先進自動語音識別(ASR)和語音翻譯模型,在超過500萬小時的標註數據上訓練,具有強大的跨數據集和跨領域泛化能力。
語音識別 支持多種語言
W
openai
4.6M
4,321
Whisper Large V3 Turbo
MIT
Whisper是由OpenAI開發的最先進的自動語音識別(ASR)和語音翻譯模型,經過超過500萬小時標記數據的訓練,在零樣本設置下展現出強大的泛化能力。
語音識別
Transformers 支持多種語言

W
openai
4.0M
2,317
Wav2vec2 Large Xlsr 53 Russian
Apache-2.0
基於facebook/wav2vec2-large-xlsr-53模型微調的俄語語音識別模型,支持16kHz採樣率的語音輸入
語音識別 其他
W
jonatasgrosman
3.9M
54
Wav2vec2 Large Xlsr 53 Chinese Zh Cn
Apache-2.0
基於facebook/wav2vec2-large-xlsr-53模型微調的中文語音識別模型,支持16kHz採樣率的語音輸入。
語音識別 中文
W
jonatasgrosman
3.8M
110
Wav2vec2 Large Xlsr 53 Dutch
Apache-2.0
基於facebook/wav2vec2-large-xlsr-53微調的荷蘭語語音識別模型,在Common Voice和CSS10數據集上訓練,支持16kHz音頻輸入。
語音識別 其他
W
jonatasgrosman
3.0M
12
Wav2vec2 Large Xlsr 53 Japanese
Apache-2.0
基於facebook/wav2vec2-large-xlsr-53模型微調的日語語音識別模型,支持16kHz採樣率的語音輸入
語音識別 日語
W
jonatasgrosman
2.9M
33
Mms 300m 1130 Forced Aligner
基於Hugging Face預訓練模型的文本與音頻強制對齊工具,支持多種語言,內存效率高
語音識別
Transformers 支持多種語言

M
MahmoudAshraf
2.5M
50
Wav2vec2 Large Xlsr 53 Arabic
Apache-2.0
基於facebook/wav2vec2-large-xlsr-53微調的阿拉伯語語音識別模型,在Common Voice和阿拉伯語語音語料庫上訓練
語音識別 阿拉伯語
W
jonatasgrosman
2.3M
37
精選推薦AI模型
Llama 3 Typhoon V1.5x 8b Instruct
專為泰語設計的80億參數指令模型,性能媲美GPT-3.5-turbo,優化了應用場景、檢索增強生成、受限生成和推理任務
大型語言模型
Transformers 支持多種語言

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一個基於SODA數據集訓練的超小型對話模型,專為邊緣設備推理設計,體積僅為Cosmo-3B模型的2%左右。
對話系統
Transformers 英語

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基於RoBERTa架構的中文抽取式問答模型,適用於從給定文本中提取答案的任務。
問答系統 中文
R
uer
2,694
98