🚀 Wav2Vec2-Large-Ru-Golos
Wav2Vec2モデルは、facebook/wav2vec2-large-xlsr-53に基づいており、Sberdevices Golosを使用してロシア語でファインチューニングされています。音声のピッチシフト、加速/減速、残響などの音声拡張を行っています。
このモデルを使用する際には、音声入力が16kHzでサンプリングされていることを確認してください。
🚀 クイックスタート
このモデルは、音声ファイルの文字起こしに使用できます。以下に、独立した音響モデルとして使用する方法を示します。
💻 使用例
基本的な使用法
from transformers import Wav2Vec2Processor, Wav2Vec2ForCTC
from datasets import load_dataset
import torch
processor = Wav2Vec2Processor.from_pretrained("bond005/wav2vec2-large-ru-golos")
model = Wav2Vec2ForCTC.from_pretrained("bond005/wav2vec2-large-ru-golos")
ds = load_dataset("bond005/sberdevices_golos_10h_crowd", split="test")
processed = processor(ds[0]["audio"]["array"], return_tensors="pt", padding="longest")
logits = model(processed.input_values, attention_mask=processed.attention_mask).logits
predicted_ids = torch.argmax(logits, dim=-1)
transcription = processor.batch_decode(predicted_ids)[0]
print(transcription)
高度な使用法
このコードスニペットは、Golosデータセットの「crowd」と「farfield」のテストデータでbond005/wav2vec2-large-ru-golosを評価する方法を示しています。
from datasets import load_dataset
from transformers import Wav2Vec2ForCTC, Wav2Vec2Processor
import torch
from jiwer import wer, cer
golos_crowd_test = load_dataset("bond005/sberdevices_golos_10h_crowd", split="test")
golos_crowd_test = golos_crowd_test.filter(
lambda it1: (it1["transcription"] is not None) and (len(it1["transcription"].strip()) > 0)
)
golos_farfield_test = load_dataset("bond005/sberdevices_golos_100h_farfield", split="test")
golos_farfield_test = golos_farfield_test.filter(
lambda it2: (it2["transcription"] is not None) and (len(it2["transcription"].strip()) > 0)
)
model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-base-960h").to("cuda")
processor = Wav2Vec2Processor.from_pretrained("facebook/wav2vec2-base-960h")
def map_to_pred(batch):
processed = processor(
batch["audio"]["array"], sampling_rate=batch["audio"]["sampling_rate"],
return_tensors="pt", padding="longest"
)
input_values = processed.input_values.to("cuda")
attention_mask = processed.attention_mask.to("cuda")
with torch.no_grad():
logits = model(input_values, attention_mask=attention_mask).logits
predicted_ids = torch.argmax(logits, dim=-1)
transcription = processor.batch_decode(predicted_ids)
batch["text"] = transcription[0]
return batch
crowd_result = golos_crowd_test.map(map_to_pred, remove_columns=["audio"])
crowd_wer = wer(crowd_result["transcription"], crowd_result["text"])
crowd_cer = cer(crowd_result["transcription"], crowd_result["text"])
print("Word error rate on the Crowd domain:", crowd_wer)
print("Character error rate on the Crowd domain:", crowd_cer)
farfield_result = golos_farfield_test.map(map_to_pred, remove_columns=["audio"])
farfield_wer = wer(farfield_result["transcription"], farfield_result["text"])
farfield_cer = cer(farfield_result["transcription"], farfield_result["text"])
print("Word error rate on the Farfield domain:", farfield_wer)
print("Character error rate on the Farfield domain:", farfield_cer)
結果 (WER, %):
"crowd" |
"farfield" |
10.144 |
20.353 |
結果 (CER, %):
"crowd" |
"farfield" |
2.168 |
6.030 |
ロシア語のLibrispeechやSOVA RuDevicesを含む他のデータセットでの評価スクリプトは、私のKaggleページhttps://www.kaggle.com/code/bond005/wav2vec2-ru-eval で確認できます。
📚 詳細ドキュメント
データセット
プロパティ |
詳細 |
データセット |
SberDevices/Golos、bond005/sova_rudevices、bond005/rulibrispeech |
評価指標 |
単語誤り率 (WER)、文字誤り率 (CER) |
タグ |
オーディオ、自動音声認識、音声、xlsr-fine-tuning-week |
モデル評価結果
- モデル名: XLSR Wav2Vec2 Russian by Ivan Bondarenko
- タスク: 音声認識 (自動音声認識)
- データセットと評価結果:
- Sberdevices Golos (crowd):
- Test WER: 10.144
- Test CER: 2.168
- Sberdevices Golos (farfield):
- Test WER: 20.353
- Test CER: 6.030
- Common Voice ru:
- Test WER: 18.548
- Test CER: 4.000
- Sova RuDevices:
- Test WER: 25.410
- Test CER: 7.965
- Russian Librispeech:
- Test WER: 21.872
- Test CER: 4.469
- Voxforge Ru:
- Test WER: 27.084
- Test CER: 6.986
📄 ライセンス
このモデルは、Apache-2.0ライセンスの下で提供されています。
引用
このモデルを引用する場合は、以下を使用できます。
@misc{bondarenko2022wav2vec2-large-ru-golos,
title={XLSR Wav2Vec2 Russian by Ivan Bondarenko},
author={Bondarenko, Ivan},
publisher={Hugging Face},
journal={Hugging Face Hub},
howpublished={\url{https://huggingface.co/bond005/wav2vec2-large-ru-golos}},
year={2022}
}