🚀 Wav2vec 2.0を用いたベトナム語音声認識
このプロジェクトは、Wav2vec 2.0モデルを用いてベトナム語の音声認識を行うものです。様々なデータセットを用いてモデルを微調整し、有望な結果を得ています。
🔍 モデル情報
プロパティ |
詳細 |
言語 |
ベトナム語 |
データセット |
VIVOS、COMMON VOICE、FOSD、VLSP 100h |
評価指標 |
WER (Word Error Rate) |
パイプラインタグ |
自動音声認識 |
タグ |
オーディオ、音声、Transformer、wav2vec2、自動音声認識、ベトナム語 |
ライセンス |
CC-BY-NC-4.0 |
🚀 クイックスタート
このセクションでは、モデルの使用方法の基本的な流れを説明します。
✨ 主な機能
- ベトナム語の音声を文字に変換する自動音声認識機能。
- 様々なデータセットを用いて微調整されたモデル。
📦 インストール
このモデルを使用するには、必要なライブラリをインストールする必要があります。以下のコマンドを使用してください。
pip install transformers librosa torch datasets
💻 使用例
基本的な使用法
from transformers import Wav2Vec2Processor, Wav2Vec2ForCTC
import librosa
import torch
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
processor = Wav2Vec2Processor.from_pretrained("khanhld/wav2vec2-base-vietnamese-160h")
model = Wav2Vec2ForCTC.from_pretrained("khanhld/wav2vec2-base-vietnamese-160h")
model.to(device)
def transcribe(wav):
input_values = processor(wav, sampling_rate=16000, return_tensors="pt").input_values
logits = model(input_values.to(device)).logits
pred_ids = torch.argmax(logits, dim=-1)
pred_transcript = processor.batch_decode(pred_ids)[0]
return pred_transcript
wav, _ = librosa.load('path/to/your/audio/file', sr = 16000)
print(f"transcript: {transcribe(wav)}")
高度な使用法
from transformers import Wav2Vec2Processor, Wav2Vec2ForCTC
from datasets import load_dataset
import torch
import re
from datasets import load_dataset, load_metric, Audio
wer = load_metric("wer")
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
processor = Wav2Vec2Processor.from_pretrained("khanhld/wav2vec2-base-vietnamese-160h")
model = Wav2Vec2ForCTC.from_pretrained("khanhld/wav2vec2-base-vietnamese-160h")
model.to(device)
model.eval()
test_dataset = load_dataset("mozilla-foundation/common_voice_8_0", "vi", split="test", use_auth_token="your_huggingface_auth_token")
test_dataset = test_dataset.cast_column("audio", Audio(sampling_rate=16000))
chars_to_ignore = r'[,?.!\-;:"“%\'�]'
def preprocess(batch):
audio = batch["audio"]
batch["input_values"] = audio["array"]
batch["transcript"] = re.sub(chars_to_ignore, '', batch["sentence"]).lower()
return batch
def inference(batch):
input_values = processor(batch["input_values"],
sampling_rate=16000,
return_tensors="pt").input_values
logits = model(input_values.to(device)).logits
pred_ids = torch.argmax(logits, dim=-1)
batch["pred_transcript"] = processor.batch_decode(pred_ids)
return batch
test_dataset = test_dataset.map(preprocess)
result = test_dataset.map(inference, batched=True, batch_size=1)
print("WER: {:2f}".format(100 * wer.compute(predictions=result["pred_transcript"], references=result["transcript"])))
📚 ドキュメント
ベンチマークWER結果
🔧 技術詳細
このモデルは、Wav2vec2ベースのモデルを約160時間のベトナム語音声データセットで微調整しています。データセットには、VIOS、COMMON VOICE、FOSD、VLSP 100h が含まれています。現在、言語モデルはASRシステムに組み込まれていませんが、依然として有望な結果を得ています。
📄 ライセンス
このプロジェクトは、CC-BY-NC-4.0ライセンスの下で公開されています。
📖 引用
@mics{Duy_Khanh_Finetune_Wav2vec_2_0_2022,
author = {Duy Khanh, Le},
doi = {10.5281/zenodo.6542357},
license = {CC-BY-NC-4.0},
month = {5},
title = {{Finetune Wav2vec 2.0 For Vietnamese Speech Recognition}},
url = {https://github.com/khanld/ASR-Wa2vec-Finetune},
year = {2022}
}
📞 連絡先