🚀 Data2Vec-Audio-Large-960h
FacebookのData2Vec は、16kHzの音声オーディオで960時間のLibrispeechデータセットを用いて事前学習とファインチューニングを行った大規模モデルです。このモデルを使用する際には、入力音声も16kHzでサンプリングされていることを確認してください。
論文
著者: Alexei Baevski, Wei-Ning Hsu, Qiantong Xu, Arun Babu, Jiatao Gu, Michael Auli
概要
自己教師付き学習の一般的な考え方はモダリティを問わず同じですが、実際のアルゴリズムや目的関数は大きく異なります。これは、それぞれのモダリティを念頭に開発されたためです。一般的な自己教師付き学習に近づくために、私たちはdata2vecというフレームワークを提案します。このフレームワークは、音声、自然言語処理、コンピュータビジョンのいずれにも同じ学習方法を使用します。核心的なアイデアは、標準的なTransformerアーキテクチャを使用した自己蒸留の設定で、入力のマスクされたビューに基づいて、入力データ全体の潜在表現を予測することです。data2vecは、本質的に局所的な単語、ビジュアルトークン、人間の音声の単位などのモダリティ固有のターゲットを予測するのではなく、入力全体の情報を含む文脈化された潜在表現を予測します。音声認識、画像分類、自然言語理解の主要なベンチマークでの実験は、新しい最先端技術または主要なアプローチに対する競争力のある性能を示しています。
元のモデルは https://github.com/pytorch/fairseq/tree/main/examples/data2vec で確認できます。
🚀 クイックスタート
このモデルは、音声認識タスクに使用できます。使用する際には、入力音声が16kHzでサンプリングされていることを確認してください。
✨ 主な機能
- 16kHzの音声オーディオに対して事前学習とファインチューニングが行われた大規模モデル。
- 音声、自然言語処理、コンピュータビジョンに同じ学習方法を適用できるフレームワーク。
📦 インストール
このモデルはHugging FaceのTransformersライブラリを通じて利用できます。必要な依存関係をインストールすることで使用可能です。
💻 使用例
基本的な使用法
from transformers import Wav2Vec2Processor, Data2VecAudioForCTC
from datasets import load_dataset
import torch
processor = Wav2Vec2Processor.from_pretrained("facebook/data2vec-audio-large-960h")
model = Data2VecAudioForCTC.from_pretrained("facebook/data2vec-audio-large-960h")
ds = load_dataset("patrickvonplaten/librispeech_asr_dummy", "clean", split="validation")
input_values = processor(ds[0]["audio"]["array"], return_tensors="pt", padding="longest").input_values
logits = model(input_values).logits
predicted_ids = torch.argmax(logits, dim=-1)
transcription = processor.batch_decode(predicted_ids)
高度な使用法
このコードスニペットは、facebook/data2vec-audio-large-960h をLibriSpeechの "clean" と "other" のテストデータで評価する方法を示しています。
from transformers import Wav2Vec2Processor, Data2VecAudioForCTC
from datasets import load_dataset
import torch
from jiwer import wer
processor = Wav2Vec2Processor.from_pretrained("facebook/data2vec-audio-large-960h").to("cuda")
model = Data2VecAudioForCTC.from_pretrained("facebook/data2vec-audio-large-960h")
librispeech_eval = load_dataset("librispeech_asr", "clean", split="test")
def map_to_pred(batch):
input_values = processor(batch["audio"]["array"], return_tensors="pt", padding="longest").input_values
with torch.no_grad():
logits = model(input_values.to("cuda")).logits
predicted_ids = torch.argmax(logits, dim=-1)
transcription = processor.batch_decode(predicted_ids)
batch["transcription"] = transcription
return batch
result = librispeech_eval.map(map_to_pred, batched=True, batch_size=1, remove_columns=["audio"])
print("WER:", wer(result["text"], result["transcription"]))
結果 (WER):
"clean" |
"other" |
1.89 |
4.07 |
📚 ドキュメント
🔧 技術詳細
事前学習方法

詳細な情報については、公式論文 を参照してください。
📄 ライセンス
このモデルはApache 2.0ライセンスの下で提供されています。