🚀 wav2vec2-xls-r-300m-wolof-lm
沃洛夫语是在塞内加尔及周边国家使用的语言,该语言的相关资源较少,在文本和语音领域的资料更是稀缺。本项目旨在为此做出贡献,此仓库便应运而生。
本模型是 facebook/wav2vec2-xls-r-300m 的微调版本,使用了基于 ALFFA_PUBLIC 中最大可用语音数据集微调的语言模型。
该模型在评估集上取得了以下成绩:
- 损失率(Loss):0.367826
- 字错率(Wer):0.212565
✨ 主要特性
📦 安装指南
文档未提供安装步骤,此章节跳过。
💻 使用示例
基础用法
import librosa
import warnings
from transformers import AutoProcessor, AutoModelForCTC
from datasets import Dataset, DatasetDict
from datasets import load_metric
wer_metric = load_metric("wer")
wolof = pd.read_csv('Test.csv')
wolof = DatasetDict({'test': Dataset.from_pandas(wolof)})
chars_to_ignore_regex = '[\"\?\.\!\-\;\:\(\)\,]'
def remove_special_characters(batch):
batch["transcription"] = re.sub(chars_to_ignore_regex, '', batch["transcription"]).lower() + " "
return batch
wolof = wolof.map(remove_special_characters)
processor = AutoProcessor.from_pretrained("abdouaziiz/wav2vec2-xls-r-300m-wolof-lm")
model = AutoModelForCTC.from_pretrained("abdouaziiz/wav2vec2-xls-r-300m-wolof-lm")
warnings.filterwarnings("ignore")
def speech_file_to_array_fn(batch):
speech_array, sampling_rate = librosa.load(batch["file"], sr = 16000)
batch["speech"] = speech_array.astype('float16')
batch["sampling_rate"] = sampling_rate
batch["target_text"] = batch["transcription"]
return batch
wolof = wolof.map(speech_file_to_array_fn, remove_columns=wolof.column_names["test"], num_proc=1)
def map_to_result(batch):
model.to("cuda")
input_values = processor(
batch["speech"],
sampling_rate=batch["sampling_rate"],
return_tensors="pt"
).input_values.to("cuda")
with torch.no_grad():
logits = model(input_values).logits
pred_ids = torch.argmax(logits, dim=-1)
batch["pred_str"] = processor.batch_decode(pred_ids)[0]
return batch
results = wolof["test"].map(map_to_result)
print("Test WER: {:.3f}".format(wer_metric.compute(predictions=results["pred_str"], references=results["transcription"])))
高级用法
文档未提供高级用法示例,此部分跳过。
📚 详细文档
模型描述
训练数据时长为 16.8 小时,我们将其划分为 10,000 个音频文件用于训练,3,339 个用于测试。
训练和评估数据
我们每 1500 步评估一次模型并记录日志,每 33340 步保存一次模型。
训练超参数
训练过程中使用了以下超参数:
属性 |
详情 |
学习率(learning_rate) |
1e-4 |
训练批次大小(train_batch_size) |
3 |
评估批次大小(eval_batch_size) |
8 |
总训练批次大小(total_train_batch_size) |
64 |
总评估批次大小(total_eval_batch_size) |
64 |
优化器(optimizer) |
Adam(betas=(0.9, 0.999),epsilon=1e-08) |
学习率调度器类型(lr_scheduler_type) |
线性(linear) |
学习率调度器热身步数(lr_scheduler_warmup_steps) |
1000 |
训练轮数(num_epochs) |
10.0 |
训练结果
步数(Step) |
训练损失(Training Loss) |
验证损失(Validation Loss) |
字错率(Wer) |
1500 |
2.854200 |
0.642243 |
0.543964 |
3000 |
0.599200 |
0.468138 |
0.429549 |
4500 |
0.468300 |
0.433436 |
0.405644 |
6000 |
0.427000 |
0.384873 |
0.344150 |
7500 |
0.377000 |
0.374003 |
0.323892 |
9000 |
0.337000 |
0.363674 |
0.306189 |
10500 |
0.302400 |
0.349884 |
0.283908 |
12000 |
0.264100 |
0.344104 |
0.277120 |
13500 |
0.254000 |
0.341820 |
0.271316 |
15000 |
0.208400 |
0.326502 |
0.260695 |
16500 |
0.203500 |
0.326209 |
0.250313 |
18000 |
0.159800 |
0.323539 |
0.239851 |
19500 |
0.158200 |
0.310694 |
0.230028 |
21000 |
0.132800 |
0.338318 |
0.229283 |
22500 |
0.112800 |
0.336765 |
0.224145 |
24000 |
0.103600 |
0.350208 |
0.227073 |
25500 |
0.091400 |
0.353609 |
0.221589 |
27000 |
0.084400 |
0.367826 |
0.212565 |
🔧 技术细节
文档未提供更多技术细节,此章节跳过。
📄 许可证
本项目采用 MIT 许可证。