语言: 波斯语
数据集:
标签:
许可证: mit
微件示例:
- 示例标题: Common Voice 样本1
音频链接: https://datasets-server.huggingface.co/assets/common_voice/--/fa/train/0/audio/audio.mp3
- 示例标题: Common Voice 样本2
音频链接: https://datasets-server.huggingface.co/assets/common_voice/--/fa/train/1/audio/audio.mp3
模型索引:
- 名称: Sharif-wav2vec2
成果:
- 任务:
名称: 自动语音识别
类型: automatic-speech-recognition
数据集:
名称: Common Voice 语料库6.1(清洁版)
类型: common_voice_6_1
配置: clean
拆分: test
参数:
语言: fa
指标:
Sharif-wav2vec2
这是Sharif Wav2vec2针对波斯语的微调版本。基础模型经过微调过程,使用了108小时的Commonvoice波斯语样本,采样率为16kHz。随后,我们使用kenlm工具包训练了一个5gram模型,并将其应用于处理器中,从而提高了在线ASR的准确率。
使用方法
使用该模型时,请确保您的语音输入采样率为16kHz。使用前,您可能需要安装以下依赖项:
pip install pyctcdecode
pip install pypi-kenlm
测试时,您可以使用Hugging Face托管的推理API(提供了Common Voice的示例)。转录给定的语音可能需要一些时间;或者您可以使用以下代码在本地运行:
import tensorflow
import torchaudio
import torch
import numpy as np
from transformers import AutoProcessor, AutoModelForCTC
processor = AutoProcessor.from_pretrained("SLPL/Sharif-wav2vec2")
model = AutoModelForCTC.from_pretrained("SLPL/Sharif-wav2vec2")
speech_array, sampling_rate = torchaudio.load("path/to/your.wav")
speech_array = speech_array.squeeze().numpy()
features = processor(
speech_array,
sampling_rate=processor.feature_extractor.sampling_rate,
return_tensors="pt",
padding=True)
with torch.no_grad():
logits = model(
features.input_values,
attention_mask=features.attention_mask).logits
prediction = processor.batch_decode(logits.numpy()).text
print(prediction[0])
评估
评估时,您可以使用以下代码。请确保您的数据集格式如下,以避免任何冲突:
路径 |
参考文本 |
path/to/audio_file.wav |
"转录文本" |
同时,请确保在运行前已安装pip install jiwer
。
import tensorflow
import torchaudio
import torch
import librosa
from datasets import load_dataset,load_metric
import numpy as np
from transformers import Wav2Vec2ForCTC, Wav2Vec2Processor
from transformers import Wav2Vec2ProcessorWithLM
model = Wav2Vec2ForCTC.from_pretrained("SLPL/Sharif-wav2vec2")
processor = Wav2Vec2ProcessorWithLM.from_pretrained("SLPL/Sharif-wav2vec2")
def speech_file_to_array_fn(batch):
speech_array, sampling_rate = torchaudio.load(batch["path"])
speech_array = speech_array.squeeze().numpy()
speech_array = librosa.resample(
np.asarray(speech_array),
sampling_rate,
processor.feature_extractor.sampling_rate)
batch["speech"] = speech_array
return batch
def predict(batch):
features = processor(
batch["speech"],
sampling_rate=processor.feature_extractor.sampling_rate,
return_tensors="pt",
padding=True
)
with torch.no_grad():
logits = model(
features.input_values,
attention_mask=features.attention_mask).logits
batch["prediction"] = processor.batch_decode(logits.numpy()).text
return batch
dataset = load_dataset(
"csv",
data_files={"test":"dataset.eval.csv"},
delimiter=",")["test"]
dataset = dataset.map(speech_file_to_array_fn)
result = dataset.map(predict, batched=True, batch_size=4)
wer = load_metric("wer")
print("WER: {:.2f}".format(wer.compute(
predictions=result["prediction"],
references=result["reference"])))
Common Voice 6.1上的结果(WER):
引用
如果您想引用此模型,可以使用以下格式:
?
贡献
感谢@sarasadeghii和@sadrasabouri添加此模型。