🚀 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 许可证。