🚀 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團隊將開源所有印度語言的語音模型。