语言: 蒙古语
数据集:
- 通用语音
标签:
- 音频
- 自动语音识别
- 语音
- XLSR微调周
许可证: Apache-2.0
模型索引:
- 名称: Salim Shaikh的蒙古语XLSR Wav2Vec2
结果:
- 任务:
名称: 语音识别
类型: 自动语音识别
数据集:
名称: 通用语音蒙古语版
类型: 通用语音
参数: {mn}
指标:
- 名称: 测试WER
类型: 词错误率
值: 38.14
蒙古语Wav2Vec2-Large-XLSR-53模型
基于facebook/wav2vec2-large-xlsr-53在通用语音数据集上对蒙古语进行微调。使用本模型时,请确保语音输入采样率为16kHz。
使用方式
该模型可直接使用(无需语言模型),如下所示:
import torchaudio
from datasets import load_dataset, load_metric
from transformers import (
Wav2Vec2ForCTC,
Wav2Vec2Processor,
)
import torch
import re
import sys
模型名称 = "sammy786/wav2vec2-large-xlsr-mongolian"
设备 = "cuda"
忽略字符正则 = '[\\,\\?\\.\\!\\-\\;\\:\\"\\“\\%\\‘\\”\\�\\)\\(\\*)]'
模型 = Wav2Vec2ForCTC.from_pretrained(模型名称).to(设备)
处理器 = Wav2Vec2Processor.from_pretrained(模型名称)
数据集 = load_dataset("common_voice", "mn", split="test", data_dir="./cv-corpus-6.1-2020-12-11")
重采样器 = torchaudio.transforms.Resample(原频率=48_000, 新频率=16_000)
def 映射到数组(批次):
语音, _ = torchaudio.load(批次["path"])
批次["speech"] = 重采样器.forward(语音.squeeze(0)).numpy()
批次["sampling_rate"] = 重采样器.new_freq
批次["sentence"] = re.sub(忽略字符正则, '', 批次["sentence"]).lower() + " "
return 批次
数据集 = 数据集.map(映射到数组)
def 映射到预测(批次):
特征 = 处理器(批次["speech"], sampling_rate=批次["sampling_rate"][0], padding=True, return_tensors="pt")
输入值 = 特征.input_values.to(设备)
注意力掩码 = 特征.attention_mask.to(设备)
with torch.no_grad():
逻辑值 = 模型(输入值, attention_mask=注意力掩码).logits
预测id = torch.argmax(逻辑值, dim=-1)
批次["predicted"] = 处理器.batch_decode(预测id)
批次["target"] = 批次["sentence"]
return 批次
结果 = 数据集.map(映射到预测, batched=True, batch_size=1, remove_columns=list(数据集.features.keys()))
词错误率 = load_metric("wer")
print(词错误率.compute(predictions=结果["predicted"], references=结果["target"]))
测试结果: 38.14%