🚀 W2v-BERT 2.0 語音編碼器
W2v-BERT 2.0 語音編碼器是我們 Seamless 模型的核心組件。我們按照 論文 第 3.2.1 節的描述,將基於 Conformer 的 W2v-BERT 2.0 語音編碼器 進行開源。
該模型在 450 萬小時的無標籤音頻數據上進行了預訓練,涵蓋了超過 143 種語言。若要將其用於自動語音識別(ASR)或音頻分類等下游任務,則需要進行微調。
該模型及其訓練得到了 🤗 Transformers 的支持,更多信息請參閱 文檔。
🚀 快速開始
支持語言
本模型支持以下語言:
- af、am、ar、as、az、be、bn、bs、bg、ca、cs、zh、cy、da、de、el、en、et、fi、fr、or、om、ga、gl、gu、ha、he、hi、hr、hu、hy、ig、id、is、it、jv、ja、kn、ka、kk、mn、km、ky、ko、lo、ln、lt、lb、lg、lv、ml、mr、mk、mt、mi、my、nl、nb、ne、ny、oc、pa、ps、fa、pl、pt、ro、ru、sk、sl、sn、sd、so、es、sr、sv、sw、ta、te、tg、tl、th、tr、uk、ur、uz、vi、wo、xh、yo、ms、zu、ary、arz、yue、kea
許可證
本項目採用 MIT 許可證。
✨ 主要特性
- 基於 Conformer 架構,是 Seamless 模型的核心。
- 在 450 萬小時的無標籤音頻數據上預訓練,支持超 143 種語言。
- 需微調後用於下游任務,如自動語音識別(ASR)或音頻分類。
- 得到 🤗 Transformers 的支持。
📦 安裝指南
本 README 未提及具體安裝步驟,你可參考以下相關鏈接中的安裝說明:
💻 使用示例
基礎用法
本模型是一個沒有任何建模頭的原始檢查點,因此需要微調才能用於 ASR 等下游任務。不過,你可以使用以下代碼片段從頂層提取音頻嵌入:
from transformers import AutoFeatureExtractor, Wav2Vec2BertModel
import torch
from datasets import load_dataset
dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
dataset = dataset.sort("id")
sampling_rate = dataset.features["audio"].sampling_rate
processor = AutoProcessor.from_pretrained("facebook/w2v-bert-2.0")
model = Wav2Vec2BertModel.from_pretrained("facebook/w2v-bert-2.0")
inputs = processor(dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
高級用法
在完成 安裝步驟 後,可在 Seamless Communication 中使用該模型,以下是如何對語音編碼器進行前向傳播的示例:
import torch
from fairseq2.data.audio import AudioDecoder, WaveformToFbankConverter
from fairseq2.memory import MemoryBlock
from fairseq2.nn.padding import get_seqs_and_padding_mask
from pathlib import Path
from seamless_communication.models.conformer_shaw import load_conformer_shaw_model
audio_wav_path, device, dtype = ...
audio_decoder = AudioDecoder(dtype=torch.float32, device=device)
fbank_converter = WaveformToFbankConverter(
num_mel_bins=80,
waveform_scale=2**15,
channel_last=True,
standardize=True,
device=device,
dtype=dtype,
)
collater = Collater(pad_value=1)
model = load_conformer_shaw_model("conformer_shaw", device=device, dtype=dtype)
model.eval()
with Path(audio_wav_path).open("rb") as fb:
block = MemoryBlock(fb.read())
decoded_audio = audio_decoder(block)
src = collater(fbank_converter(decoded_audio))["fbank"]
seqs, padding_mask = get_seqs_and_padding_mask(src)
with torch.inference_mode():
seqs, padding_mask = model.encoder_frontend(seqs, padding_mask)
seqs, padding_mask = model.encoder(seqs, padding_mask)
📚 詳細文檔
若要了解更多關於該模型的使用信息,請參考以下資源:
📄 許可證
本項目採用 MIT 許可證。