Evaluated on the held-out test split of the Unified Urdu Speech ASR dataset.
1from transformers import pipeline
2
3asr = pipeline(
4 "automatic-speech-recognition",
5 model = "abidanoaman/whisper-tiny-urdu-merged-data",
6 device = 0, # 0 = GPU, -1 = CPU
7)
8
9result = asr("your_urdu_audio.wav")
10print(result["text"])
1import torch
2import torchaudio
3from transformers import WhisperForConditionalGeneration, WhisperProcessor
4
5model = WhisperForConditionalGeneration.from_pretrained("abidanoaman/whisper-tiny-urdu-merged-data")
6processor = WhisperProcessor.from_pretrained("abidanoaman/whisper-tiny-urdu-merged-data")
7device = "cuda" if torch.cuda.is_available() else "cpu"
8model = model.to(device)
9
10# Load and preprocess audio
11waveform, sr = torchaudio.load("your_urdu_audio.wav")
12if waveform.shape[0] > 1: # stereo → mono
13 waveform = torch.mean(waveform, dim=0, keepdim=True)
14if sr != 16000:
15 waveform = torchaudio.transforms.Resample(sr, 16000)(waveform)
16waveform = waveform.squeeze().numpy()
17
18# Transcribe
19inputs = processor(waveform, sampling_rate=16000, return_tensors="pt")
20input_features = inputs.input_features.to(device)
21
22with torch.no_grad():
23 pred_ids = model.generate(
24 input_features,
25 language = "urdu",
26 task = "transcribe",
27 max_new_tokens = 225,
28 )
29
30transcription = processor.batch_decode(pred_ids, skip_special_tokens=True)[0]
31print(transcription)
1from transformers import (
2 WhisperForConditionalGeneration,
3 WhisperProcessor,
4 Seq2SeqTrainer,
5 Seq2SeqTrainingArguments,
6 EarlyStoppingCallback,
7)
8
9model = WhisperForConditionalGeneration.from_pretrained("abidanoaman/whisper-tiny-urdu-merged-data")
10processor = WhisperProcessor.from_pretrained("abidanoaman/whisper-tiny-urdu-merged-data")
11
12# Re-apply generation config
13model.generation_config.language = "urdu"
14model.generation_config.task = "transcribe"
15model.generation_config.suppress_tokens = []
16
17# Optional: unfreeze CNN layers if adapting to a new domain
18# for param in model.model.encoder.conv1.parameters():
19# param.requires_grad = True
20# for param in model.model.encoder.conv2.parameters():
21# param.requires_grad = True
22
23# Then set up your dataset, collator, and Seq2SeqTrainer as before.
24# See resume_config.json for the full training configuration.