wrice/whisper-tiny-grpo-0029b82-cv22-tiny-sft
whisper-tiny-grpo-0029b82-cv22-tiny-sft
A Whisper model fine-tuned with GRPO (Group Relative Policy Optimization) using a blended error-rate reward. Trained with whisper-rl.
Best validation (overall across 77 languages): WER 0.602, CER 0.253
Training data
Fine-tuned on cv22_index — all 77 Common Voice locales, streamed and decoded on the fly from the full training split. Each clip's language is pinned from its Common Voice locale during training.
Performance per language
Validation WER and CER at the best checkpoint, per Common Voice locale (also in the Evaluation Results metadata above):
How it was trained
Instead of cross-entropy against a single reference, for each audio clip the policy samples a group of num_generations transcriptions, scores each by a negated blend of word error rate, character error rate, and length / repetition penalties, and is nudged toward the better candidates with a clipped policy-gradient objective regularized by a per-token KL penalty to the frozen base model. Advantages are the group-relative, standardized rewards (A = (r - mean) / (std + eps)), so no value network is needed. The clip's language is pinned from its Common Voice locale, and the policy's own greedy transcriptions are scored as validation WER and CER.
Hyperparameters
Training curves
Pulled from the Weights & Biases run (static snapshot):
Usage
from transformers import pipeline
asr = pipeline("automatic-speech-recognition", model="wrice/whisper-tiny-grpo-0029b82-cv22-tiny-sft")
print(asr("audio.wav")["text"])Limitations
A proof-of-concept GRPO recipe, not a tuned production system. WER and CER are reported on a held-out Common Voice validation slice after text normalization; real-world performance varies by domain, accent, language, and audio quality.
