许可证: mit
数据集:
- Isma/alffa_wolof
语言:
- wo (沃洛夫语)
评估指标:
- wer (词错误率)
基础模型:
- facebook/mms-1b
任务标签:
- 自动语音识别
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("预测结果:")
print(processor.decode(pred_ids))
print("\n参考文本:")
print(dataset['train'][322]['transcription'].lower())
使用pipeline推理
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("预测结果:")
print(result['text'])
print("\n参考文本:")
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已分配内存: {torch.cuda.memory_allocated()}字节")
print(f"GPU缓存内存: {torch.cuda.memory_reserved()}字节")
else:
print(f"CPU内存使用率: {psutil.virtual_memory().percent}%")
训练超参数
训练时使用的超参数如下:
- 学习率: 0.0001
- 训练批次大小: 16
- 评估批次大小: 8
- 随机种子: 42
- 优化器: Adam(betas=(0.9,0.999),epsilon=1e-08)
- 学习率调度器类型: linear
- 学习率预热步数: 500
- 训练轮次: 20
- 混合精度训练: Native AMP
训练结果
训练损失 |
轮次 |
步数 |
验证损失 |
词错误率 |
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
用途与限制
- 用途: 该模型适用于沃洛夫语的语音转文本任务,可将沃洛夫语录音转录为文字。
- 限制: 模型在清晰音频上表现最佳,对嘈杂或低质量录音可能效果不佳。该模型专为沃洛夫语设计,对其他语言可能不适用。
作者信息