🚀 wav2vec2-large-mms-1b-wolof
このモデルは、facebook/mms-1b-all を Isma/alffa_wolof データセットでファインチューニングしたバージョンです。ウォロフ語の自動音声認識 (ASR) を行うように設計されています。
📚 ドキュメント
モデルの説明
このモデルは、音声認識タスク用にファインチューニングされた Wav2Vec 2.0 アーキテクチャに基づいています。ベースモデルである facebook/mms-1b-all は、汎用的な ASR のために多言語コーパスで学習されました。このファインチューニングされたバージョンは、ウォロフ語の音声録音を含む Waxal Wolof データセットで特別に学習されています。
学習と評価データ
このモデルは、ウォロフ語の音声サンプルを含む Isma/alffa_wolof データセットで学習されました。このデータセットは、ウォロフ語の音声の特定の音韻特性に対する精度を向上させるためにモデルをファインチューニングするために使用されます。
手動での推論
! pip install datasets
from datasets import load_dataset, Audio
dataset = load_dataset("perrynelson/waxal-wolof", trust_remote_code=True)
dataset
from IPython.display import Audio, display
Audio(dataset['train'][322]['audio']['array'], rate=16000)
from transformers import Wav2Vec2ForCTC, Wav2Vec2Processor
import torch
model_id = "bilalfaye/wav2vec2-large-mms-1b-wolof"
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = Wav2Vec2ForCTC.from_pretrained(model_id,
target_lang="wol",
torch_dtype=torch.float16
).to(device)
processor = Wav2Vec2Processor.from_pretrained(model_id)
processor.tokenizer.set_target_lang("wol")
input_dict = processor(
dataset['train'][322]["audio"]["array"],
sampling_rate=16_000,
return_tensors="pt",
padding=True
)
input_values = input_dict.input_values.to(device, dtype=torch.float16)
logits = model(input_values).logits
pred_ids = torch.argmax(logits, dim=-1)[0]
print("Prediction:")
print(processor.decode(pred_ids))
print("\nReference:")
print(dataset['train'][322]['transcription'].lower())
パイプラインを使用した推論
from transformers import pipeline
import torch
model_id = "bilalfaye/wav2vec2-large-mms-1b-wolof"
device = 0 if torch.cuda.is_available() else -1
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32
pipe = pipeline(
task="automatic-speech-recognition",
model=model_id,
processor=model_id,
device=device,
torch_dtype=torch_dtype,
framework="pt"
)
audio_array = dataset['train'][322]["audio"]["array"]
result = pipe(audio_array)
print("Prediction:")
print(result['text'])
print("\nReference:")
print(dataset['train'][322]['transcription'].lower())
メモリの解放
import gc
import torch
import psutil
if torch.cuda.is_available():
torch.cuda.empty_cache()
torch.cuda.reset_peak_memory_stats()
gc.collect()
if torch.cuda.is_available():
print(f"GPU Memory Allocated: {torch.cuda.memory_allocated()} bytes")
print(f"GPU Memory Cached: {torch.cuda.memory_reserved()} bytes")
else:
print(f"CPU Memory Usage: {psutil.virtual_memory().percent}%")
学習のハイパーパラメータ
学習中に以下のハイパーパラメータが使用されました。
- learning_rate: 0.0001
- train_batch_size: 16
- eval_batch_size: 8
- seed: 42
- optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
- lr_scheduler_type: linear
- lr_scheduler_warmup_steps: 500
- num_epochs: 20
- mixed_precision_training: Native AMP
学習結果
学習損失 |
エポック |
ステップ |
検証損失 |
Wer |
0.3793 |
14.0 |
12250 |
0.1517 |
0.1888 |
0.3709 |
15.0 |
13125 |
0.1512 |
0.1882 |
0.3702 |
16.0 |
14000 |
0.1499 |
0.1858 |
0.367 |
17.0 |
14875 |
0.1492 |
0.1848 |
0.3656 |
18.0 |
15750 |
0.1493 |
0.1842 |
フレームワークのバージョン
- Transformers 4.41.2
- Pytorch 2.4.0+cu121
- Datasets 3.2.0
- Tokenizers 0.19.1
想定される用途と制限
- 想定される用途: このモデルは、ウォロフ語の音声テキスト変換タスクに使用することを想定しています。ウォロフ語の音声録音を書面テキストに変換するために使用できます。
- 制限: このモデルは、クリーンな音声で最適な性能を発揮し、ノイズの多いまたは低品質の録音では苦労する可能性があります。このモデルはウォロフ語専用に設計されており、他の言語ではうまく機能しない可能性があります。
作者情報
📄 ライセンス
このモデルは MIT ライセンスの下で提供されています。