🚀 Wav2Vec2 Vakyansh印地语模型
本模型是用于自动语音识别的预训练模型,在多语言预训练模型上微调而来,可直接用于印地语语音识别任务。
🚀 快速开始
你可以通过以下链接查看模型的相关演示和使用方法:
✨ 主要特性
- 基于多语言预训练模型 CLSRIL - 23 进行微调。
- 可直接用于印地语语音识别,无需语言模型。
- 在4200小时的印地语标注数据上进行训练。
📦 安装指南
文档未提及具体安装步骤,可参考相关依赖库的安装方式,确保环境中安装了 soundfile
、torch
、transformers
、datasets
、torchaudio
等库。
💻 使用示例
基础用法
import soundfile as sf
import torch
from transformers import Wav2Vec2ForCTC, Wav2Vec2Processor
import argparse
def parse_transcription(wav_file):
processor = Wav2Vec2Processor.from_pretrained("Harveenchadha/vakyansh-wav2vec2-hindi-him-4200")
model = Wav2Vec2ForCTC.from_pretrained("Harveenchadha/vakyansh-wav2vec2-hindi-him-4200")
audio_input, sample_rate = sf.read(wav_file)
input_values = processor(audio_input, sampling_rate=sample_rate, return_tensors="pt").input_values
logits = model(input_values).logits
predicted_ids = torch.argmax(logits, dim=-1)
transcription = processor.decode(predicted_ids[0], skip_special_tokens=True)
print(transcription)
高级用法
import torch
import torchaudio
from datasets import load_dataset, load_metric
from transformers import Wav2Vec2ForCTC, Wav2Vec2Processor
import re
test_dataset = load_dataset("common_voice", "hi", split="test")
wer = load_metric("wer")
processor = Wav2Vec2Processor.from_pretrained("Harveenchadha/vakyansh-wav2vec2-hindi-him-4200")
model = Wav2Vec2ForCTC.from_pretrained("Harveenchadha/vakyansh-wav2vec2-hindi-him-4200")
model.to("cuda")
resampler = torchaudio.transforms.Resample(48_000, 16_000)
chars_to_ignore_regex = '[\,\?\.\!\-\;\:\"\“]'
def speech_file_to_array_fn(batch):
batch["sentence"] = re.sub(chars_to_ignore_regex, '', batch["sentence"]).lower()
speech_array, sampling_rate = torchaudio.load(batch["path"])
batch["speech"] = resampler(speech_array).squeeze().numpy()
return batch
test_dataset = test_dataset.map(speech_file_to_array_fn)
def evaluate(batch):
inputs = processor(batch["speech"], sampling_rate=16_000, return_tensors="pt", padding=True)
with torch.no_grad():
logits = model(inputs.input_values.to("cuda")).logits
pred_ids = torch.argmax(logits, dim=-1)
batch["pred_strings"] = processor.batch_decode(pred_ids, skip_special_tokens=True)
return batch
result = test_dataset.map(evaluate, batched=True, batch_size=8)
print("WER: {:2f}".format(100 * wer.compute(predictions=result["pred_strings"], references=result["sentence"])))
📚 详细文档
预训练模型
本模型在多语言预训练模型 CLSRIL - 23 上进行微调,原始的fairseq检查点可在 [这里](https://github.com/Open - Speech - EkStep/vakyansh - models) 找到。使用此模型时,请确保语音输入的采样率为16kHz。
注意:此模型的结果未使用语言模型,因此在某些情况下可能会出现较高的字错率(WER)。
数据集
该模型在4200小时的印地语标注数据上进行训练,目前这些标注数据未公开。
训练脚本
模型使用Ekstep的Vakyansh团队搭建的实验平台进行训练,训练仓库可查看 [这里](https://github.com/Open - Speech - EkStep/vakyansh - wav2vec2 - experimentation)。如果你想查看在wandb上的训练日志,可点击 [此处](https://wandb.ai/harveenchadha/hindi_finetuning_multilingual?workspace=user - harveenchadha)。
评估
在Common Voice的印地语测试数据上对模型进行评估,测试结果的字错率(WER)为33.17%。
🔧 技术细节
模型基于Wav2Vec2架构,在多语言预训练模型基础上针对印地语语音识别任务进行微调。使用 Wav2Vec2ForCTC
进行语音识别,Wav2Vec2Processor
进行音频预处理和转录结果解码。评估指标采用字错率(WER)。
📄 许可证
本模型采用MIT许可证。
信息表格
属性 |
详情 |
模型类型 |
Wav2Vec2 Vakyansh印地语模型 |
训练数据 |
4200小时的印地语标注数据(未公开) |
评估指标 |
字错率(WER) |
测试WER |
33.17% |
常用提示信息
⚠️ 重要提示
使用此模型时,确保语音输入的采样率为16kHz。模型结果未使用语言模型,可能会出现较高的WER。
💡 使用建议
在使用模型进行语音识别时,可根据实际需求考虑是否结合语言模型以降低WER。
致谢
感谢Ekstep基金会使该项目成为可能,Vakyansh团队将开源所有印度语言的语音模型。