🚀 W2v-BERT 2.0 音声エンコーダ
我々は、論文の3.2.1節に記載されているConformerベースのW2v-BERT 2.0音声エンコーダをオープンソース化しています。このエンコーダは、我々のSeamlessモデルの核心部分です。
このモデルは、143以上の言語をカバーする450万時間のラベルなし音声データで事前学習されています。自動音声認識(ASR)や音声分類などの下流タスクに使用するには、ファインチューニングが必要です。
モデル名 |
パラメータ数 |
チェックポイント |
W2v-BERT 2.0 |
6億 |
チェックポイント |
このモデルとその学習は🤗 Transformersでサポートされており、詳細はドキュメントを参照してください。
🚀 クイックスタート
🤗 Transformersの使用方法
これはモデリングヘッドのないベアチェックポイントであり、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の使用方法
このモデルは、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ライセンスの下で公開されています。