🚀 Wav2Vec2-Base-960h
FacebookのWav2Vec2をベースに、16kHzサンプリングの音声データである960時間分のLibrispeechデータセットで事前学習とファインチューニングを行ったモデルです。このモデルを使用する際には、入力音声も16kHzでサンプリングされていることを確認してください。
🚀 クイックスタート
このモデルは、音声ファイルの文字起こしに使用できます。以下に、モデルを単独の音響モデルとして使用する例を示します。
基本的な使用法
from transformers import Wav2Vec2Processor, Wav2Vec2ForCTC
from datasets import load_dataset
import soundfile as sf
import torch
processor = Wav2Vec2Processor.from_pretrained("facebook/wav2vec2-base-960h")
model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-base-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)
✨ 主な機能
このモデルは、自動音声認識(Automatic Speech Recognition, ASR)タスクに特化しており、事前学習とファインチューニングにより、高い精度で音声を文字起こしすることができます。
📚 ドキュメント
論文情報
- 論文
- 著者: Alexei Baevski, Henry Zhou, Abdelrahman Mohamed, Michael Auli
概要
この論文では、音声データのみから強力な表現を学習し、その後に文字起こしデータでファインチューニングすることで、概念的により単純でありながら、最良の半教師あり学習手法を上回る性能を達成できることを初めて示しています。wav2vec 2.0は、潜在空間で音声入力をマスクし、共同で学習される潜在表現の量子化に基づいて定義された対照的なタスクを解きます。Librispeechのすべてのラベル付きデータを使用した実験では、クリーン/その他のテストセットでそれぞれ1.8/3.3のWER(Word Error Rate)を達成しています。ラベル付きデータの量を1時間に減らした場合でも、wav2vec 2.0は100時間のサブセットで以前の最先端手法を上回り、ラベル付きデータの使用量は100分の1です。たった10分のラベル付きデータと53,000時間のラベルなしデータでの事前学習でも、4.8/8.2のWERを達成しています。これは、限られた量のラベル付きデータでも音声認識が可能であることを示しています。
評価
以下のコードスニペットは、facebook/wav2vec2-base-960hをLibriSpeechの「clean」と「other」のテストデータで評価する方法を示しています。
from datasets import load_dataset
from transformers import Wav2Vec2ForCTC, Wav2Vec2Processor
import torch
from jiwer import wer
librispeech_eval = load_dataset("librispeech_asr", "clean", split="test")
model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-base-960h").to("cuda")
processor = Wav2Vec2Processor.from_pretrained("facebook/wav2vec2-base-960h")
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):
📄 ライセンス
このモデルは、Apache-2.0ライセンスの下で公開されています。
🔧 技術詳細
- モデルタイプ: 事前学習済み音声認識モデル
- 学習データ: 960時間分のLibrispeechデータセット(16kHzサンプリングの音声データ)
属性 |
详情 |
モデルタイプ |
事前学習済み音声認識モデル |
学習データ |
960時間分のLibrispeechデータセット(16kHzサンプリングの音声データ) |