FAQ

Audio & speech

Fine-tuning Whisper: audio pairs and transcription conventions

Paired audio and text, the sampling-rate requirement that is not optional, and why your transcription convention is a product decision.

Whisper fine-tuning data is audio with transcripts, which sounds simple until you notice that every decision about how you write the transcripts becomes a decision about what your model outputs.

The data shape, and the sampling rate

An ASR dataset is audio paired with its transcription. One field holds the waveform, one holds the text. There is no prompt and no chat template.

The non-negotiable part is sampling rate. Whisper expects audio at a specific rate, and feeding it anything else without resampling produces garbage rather than an error — the model receives a time-distorted signal and transcribes accordingly. Resample on load and assert the rate rather than trusting your source files, because a mixed-rate corpus is extremely common and the failure is silent.

Segment length matters too. The architecture processes fixed-length windows, so very long audio must be chunked and very short clips are padded. If your real inputs are long recordings, train on realistically segmented audio rather than on neat short clips, or the model will not have seen the thing it has to do.

the shape, and the assertion worth keeping
from datasets import load_dataset, Audio

TARGET_SR = 16_000      # what the model expects - check your checkpoint

ds = load_dataset("audiofolder", data_dir="./audio")
ds = ds.cast_column("audio", Audio(sampling_rate=TARGET_SR))   # resample on load

ex = ds["train"][0]
assert ex["audio"]["sampling_rate"] == TARGET_SR, "wrong rate - silent failure ahead"

# each row is just this:
#   {"audio": {"array": <waveform>, "sampling_rate": 16000},
#    "sentence": "the transcript exactly as you want it output"}
Diagram of the Whisper sequence-to-sequence speech recognition architecture.
Audio in, text out. Everything about your transcription convention — numbers, punctuation, disfluencies — becomes what the model emits. Image: openai/whisper · MIT repository

Your transcription convention is your output format

This is the decision people make by accident. The model reproduces whatever convention your transcripts use, so each of these is a product choice:

Numbers. “twenty-five” or “25”. Whichever your transcripts use is what you will get, forever.

Punctuation and capitalisation. Present or absent. Many ASR corpora are lowercase and unpunctuated, and a model trained on them produces unpunctuated output that then needs a separate restoration step.

Disfluencies. Whether “um”, false starts and repetitions are transcribed. Verbatim transcripts suit analysis and legal use; cleaned transcripts suit subtitles and notes.

Domain terms. Whether specialist vocabulary is spelled out, abbreviated or expanded.

Mixed conventions are worse than any single choice. A corpus assembled from several sources with different conventions teaches the model to vary unpredictably, which is the hardest failure to fix later. Normalise everything to one convention before training, and write that convention down.

Diagram: a waveform feeds an ASR box that outputs the spoken-form text 'on may third we paid one hundred and twenty three dollars', which continues to a TTS box and a loudspeaker. Arrows run down through an 'Inverse Text Normalization' box to the written form 'on may 3 we paid $123' and back up through a 'Text Normalization' box.
The same sentence in its two forms: as a recogniser hears it, 'on may third we paid one hundred and twenty three dollars', and as people write it, 'on may 3 we paid $123'. A fine-tuned model learns whichever form your transcripts use, so mixing the two in one corpus teaches it to switch between them unpredictably. Image: NVIDIA/NeMo-text-processing · Apache-2.0 repository

When fine-tuning is worth it

The base model is strong on general speech across many languages, so test it first — on your actual audio, not on a clean sample. If it already works, you are done, and that is the best outcome available.

A horizontal bar chart of normalised WER for Whisper Turbo, Small and Base. Hatched zero-shot bars read 110.2%, 120.4% and 171.4%; solid fine-tuned bars read 23.37%, 24.89% and 27.13%; a dotted line marks 100%.
Word error rate on the Common Voice Pashto test set for three Whisper sizes, out of the box (hatched) and after fine-tuning (solid). Zero-shot error rates are above 100% for all three; fine-tuning brings them down to 23 to 27%, cuts of 87 to 144 points. Languages the base model barely handles are where fine-tuning pays most. Image: Figure 1 of the paper · CC BY 4.0 · from Rahman 2026, “Fine-tuning Whisper for Pashto ASR: strategies and scale”, arXiv:2604.06507

Where fine-tuning reliably helps: domain vocabulary the model mis-transcribes, such as drug names, part numbers or legal terms; accents and dialects under-represented in pretraining; consistently poor channel conditions such as telephone audio, a specific noisy environment, or far-field microphones; low-resource languages; and enforcing your transcription convention.

Where it helps less: general accuracy on clean speech, which is already good, and anything that is really an audio quality problem. If the recording is unintelligible to a human listener, no fine-tune recovers the words. Our speech recognition datasets post covers choosing public data for the cases where you need to supplement your own.

Two horizontal bar charts of Whisper word or character error rate by language on a log scale, for large-v3 (filled bars) and large-v2 (outlined bars). On Common Voice 15, large-v3 ranges from 4.3% for Dutch and 4.7% for Spanish to above 50% for Swahili, Tamil and Albanian; on FLEURS, from 2.8% for Spanish to 50% for Bengali.
Test the base model first, and expect the answer to depend on the language: the same checkpoint is under 5% error on Spanish and around 50% on Swahili or Bengali. The languages at the bottom of each chart are where fine-tuning has the most room to help, and where it will need the most data. Image: openai/whisper · MIT repository

Practical notes

Hours of audio is the scale unit, and useful fine-tunes have been achieved with single-digit to low tens of hours for a narrow domain or accent. That is a tractable collection job, particularly if you already have recorded calls or meetings with any form of transcript.

If your transcripts came from a previous ASR system, be careful: you will be training the model to reproduce that system's errors. Correct a sample by hand and measure the error rate in your own labels before treating them as ground truth.

Evaluate with word error rate on held-out audio from the same conditions as deployment, and keep a slice of your hardest audio in the evaluation set specifically. Aggregate word error rate hides exactly the failures that matter — one critical mis-transcribed drug name barely moves the average and may be the entire point of the system.

Questions people ask

How many hours do I need?

Fewer than people expect for a narrow improvement: single-digit to low tens of hours can meaningfully help a specific domain, accent or channel. Broad general improvement needs far more and is rarely worth attempting against a strong pretrained model.

Can I fine-tune for a language the model barely supports?

Yes, and this is one of the most valuable uses, with published community results for various low-resource languages. Expect to need substantially more data than for a domain adaptation, and check whether the tokenizer handles the script adequately before you start.

Should I include the audio's speaker identity or other metadata?

Not for transcription — the task is audio to text and extra fields are ignored. Keep the metadata in your dataset anyway: it lets you analyse error rates by speaker, accent or condition, which is how you find out which part of your data needs more coverage.

Does Whisper handle overlapping speakers?

Poorly, as do most ASR models — the task is transcription, not separation. If your audio has simultaneous speech you need diarisation or source separation as a separate stage; fine-tuning on overlapping audio will not teach the model to untangle it.

Stop hunting. Start searching.

Tens of thousands of curated datasets, searchable in plain language — with the licence and size checked before you download anything.

Search Dataset Finder →