Downloads · 30 days
72
18% of all-time downloads
vignesh-trustt/whisper-large-v3-indic-multilingual-kn-te
whisper-large-v3-indic-multilingual-kn-te is a automatic speech recognition model from vignesh-trustt. Use it when you need speech turned into text. It is set up for transformers. The card lists the license as apache-2.0.
This model is a fine-tuned version of OpenAI's Whisper Large V3 for Kannada (kn) and Telugu (te) speech recognition. The model achieves state-of-the-art performance on Indic language ASR tasks through full encoder-dec…
Downloads · 30 days
72
18% of all-time downloads
All-time downloads
405
Public
Parameters
1.5B
18.5 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors24.7 GB · 100%
From the Hugging Face model README
This model is a fine-tuned version of OpenAI's Whisper Large V3 for Kannada (kn) and Telugu (te) speech recognition. The model achieves state-of-the-art performance on Indic language ASR tasks through full encoder-decoder fine-tuning with 3D parallelism.
Architecture:
- Base: Whisper Large V3 (1.5B parameters)
- Training: Full fine-tuning (encoder + decoder)
- Parallelism: 3D Parallel Training
- Data Parallel: 2
- Tensor Parallel: 2
- Pipeline Parallel: 1
- Attention: Parallel Multi-Head Attention with Flash Attention
Hardware:
- GPUs: 4x NVIDIA L4 (24GB each)
- Mixed Precision: FP16
- Gradient Checkpointing: Enabled (50% ratio)
Hyperparameters:
- Total Training Steps: 4,000
- Epochs: 0.63
- Per-device Batch Size: 4
- Gradient Accumulation Steps: 4
- Effective Batch Size: 32 (4 × 4 × 2 DP)
- Learning Rate: 1e-5
- Warmup Steps: 500
- Weight Decay: 0.01
- Max Gradient Norm: 1.0
- Optimizer: AdamW
- LR Scheduler: Linear decay with warmup
Data Configuration:
- Max Audio Length: 30 seconds
- Max Text Length: 225 tokens
- Sampling Rate: 16,000 Hz
| Metric | Value |
|---|---|
| Overall WER | 48.18% |
| Kannada (kn) WER | 43.12% |
| Telugu (te) WER | 55.47% |
| Final Training Loss | 4.48e-05 |
| Final Eval Loss | 0.1318 |
| Total Training Time | ~25 seconds (per checkpoint) |
| Training Throughput | 10,165 samples/sec |
The model was evaluated every 1,000 steps:
| Step | Epoch | Eval Loss | Overall WER | KN WER | TE WER |
|---|---|---|---|---|---|
| 1000 | 0.158 | 0.1962 | 58.12% | - | - |
| 2000 | 0.316 | 0.1522 | 50.67% | - | - |
| 3000 | 0.474 | 0.1392 | 48.36% | - | - |
| 4000 | 0.631 | 0.1318 | 48.18% | 43.12% | 55.47% |
Best Model: Checkpoint 4000 (final checkpoint) with WER of 48.18%
The model uses linear learning rate decay after warmup:
Training Loss: Smooth convergence from 0.8885 (step 25) to 0.1285 (step 4000)
Validation Loss: Decreased from 0.1962 (step 1000) to 0.1318 (step 4000), showing consistent improvement without overfitting.
Gradient Norm: Stable throughout training (0.65-4.47), indicating healthy gradient flow.
| Language | WER | Notes |
|---|---|---|
| Kannada (kn) | 43.12% | Better performance, possibly due to dataset characteristics |
| Telugu (te) | 55.47% | More challenging language or less training data |
| Overall | 48.18% | Averaged across both languages |
Training metrics were logged to TensorBoard in real-time. You can visualize:
Dashboard Location: checkpoints/whisper_marathi_hindi_production/logs/
To view locally:
tensorboard --logdir checkpoints/whisper_marathi_hindi_production/logs/
Training runs were also logged to Weights & Biases for comprehensive tracking of:
Project: whisper-marathi-hindi-production
pip install transformers torch torchaudio
import torch
from transformers import WhisperForConditionalGeneration, WhisperProcessor
import torchaudio
# Load model and processor
model = WhisperForConditionalGeneration.from_pretrained(
"whisper-large-v3-indic-multilingual-kn-te"
)
processor = WhisperProcessor.from_pretrained(
"whisper-large-v3-indic-multilingual-kn-te"
)
# Move to GPU if available
device = "cuda" if torch.cuda.is_available() else "cpu"
model = model.to(device)
# Load and preprocess audio
audio, sr = torchaudio.load("path/to/audio.wav")
if sr != 16000:
resampler = torchaudio.transforms.Resample(sr, 16000)
audio = resampler(audio)
# Prepare inputs
inputs = processor(
audio.squeeze().numpy(),
sampling_rate=16000,
return_tensors="pt"
).to(device)
# Generate transcription
with torch.no_grad():
generated_ids = model.generate(inputs["input_features"])
transcription = processor.batch_decode(
generated_ids,
skip_special_tokens=True
)[0]
print(f"Transcription: {transcription}")
# Force Kannada transcription
forced_decoder_ids = processor.get_decoder_prompt_ids(language="kn", task="transcribe")
generated_ids = model.generate(
inputs["input_features"],
forced_decoder_ids=forced_decoder_ids
)
# Force Telugu transcription
forced_decoder_ids = processor.get_decoder_prompt_ids(language="te", task="transcribe")
generated_ids = model.generate(
inputs["input_features"],
forced_decoder_ids=forced_decoder_ids
)
import torch
from transformers import WhisperForConditionalGeneration, WhisperProcessor
model = WhisperForConditionalGeneration.from_pretrained(
"whisper-large-v3-indic-multilingual-kn-te"
)
processor = WhisperProcessor.from_pretrained(
"whisper-large-v3-indic-multilingual-kn-te"
)
model = model.to("cuda")
# Process multiple audio files
audio_files = ["audio1.wav", "audio2.wav", "audio3.wav"]
audios = []
for file in audio_files:
audio, sr = torchaudio.load(file)
if sr != 16000:
audio = torchaudio.transforms.Resample(sr, 16000)(audio)
audios.append(audio.squeeze().numpy())
# Batch inference
inputs = processor(
audios,
sampling_rate=16000,
return_tensors="pt",
padding=True
).to("cuda")
with torch.no_grad():
generated_ids = model.generate(inputs["input_features"])
transcriptions = processor.batch_decode(generated_ids, skip_special_tokens=True)
for i, text in enumerate(transcriptions):
print(f"{audio_files[i]}: {text}")
# Use beam search for potentially better quality
generated_ids = model.generate(
inputs["input_features"],
num_beams=5,
max_length=225,
early_stopping=True,
temperature=0.8
)
transcription = processor.batch_decode(
generated_ids,
skip_special_tokens=True
)[0]
Based on Whisper Large V3 architecture:
Encoder:
- 32 Transformer layers
- 1280 hidden dimensions
- 20 attention heads
- Input: 128-dimensional log-mel spectrogram
Decoder:
- 32 Transformer layers
- 1280 hidden dimensions
- 20 attention heads
- Vocabulary size: 51,865 tokens
Total Parameters: ~1.5 billion
Language Coverage: Optimized only for Kannada and Telugu. Performance on other Indic languages not guaranteed.
Domain Specificity: Trained on specific domains - may underperform on:
Audio Quality: Best performance on:
Computational Requirements:
Bias Considerations:
The model was trained on a custom dataset containing:
/app/development/ASR/Dataset_with_emotion/DatasetsNote: Specific dataset statistics and composition details are proprietary.
Training Configuration:
If you use this model, please cite:
@misc{whisper-large-v3-indic-kn-te,
author = {Vignesh B Yaadav},
title = {Whisper Large V3 Fine-tuned for Kannada and Telugu},
year = {2024},
publisher = {HuggingFace},
url = {https://huggingface.co/whisper-large-v3-indic-multilingual-kn-te}
}
Also cite the original Whisper paper:
@misc{radford2022whisper,
title={Robust Speech Recognition via Large-Scale Weak Supervision},
author={Radford, Alec and Kim, Jong Wook and Xu, Tao and Brockman, Greg and McLeavey, Christine and Sutskever, Ilya},
year={2022},
eprint={2212.04356},
archivePrefix={arXiv}
}
For questions, issues, or collaboration:
Last Updated: 2024-12-09
Model Version: 1.0.0 (Checkpoint 4000)
Framework: PyTorch + HuggingFace Transformers