Convert audio for Whisper. 16 kHz mono WAV, one click.

Drop any audio or video file — MP3, M4A, MP4, OGG, FLAC, WAV. We output exactly what OpenAI Whisper, whisper.cpp, and faster-whisper want internally: 16-bit PCM WAV at 16 kHz, mono. No FFmpeg command to memorize, no Python script, no upload. The file never leaves your browser.

drop your audio or video here

Any common format. Output is always 16 kHz mono WAV — no options to pick.

Why this format, exactly

OpenAI's Whisper model was trained on 16 kHz mono audio. Every implementation — the official Python package, whisper.cpp, faster-whisper, MLX-Whisper — converts its input to 16 kHz mono internally before the first transformer layer. You can feed it 48 kHz stereo MP3 and it'll work, but the runtime spends extra cycles resampling and downmixing. For batch jobs, sensitive recordings, or the whisper.cpp CLI (which strictly requires 16-bit PCM WAV at 16 kHz), pre-converting is the clean answer.

Whisper input format spec

What this is good for

Command examples

Once you've downloaded the WAV:

# whisper.cpp
./main -m models/ggml-base.en.bin -f your-file.wav

# OpenAI Python package
whisper your-file.wav --model base.en

# faster-whisper (Python)
from faster_whisper import WhisperModel
WhisperModel("base.en").transcribe("your-file.wav")

Why 16 kHz mono, specifically

Whisper resamples everything to 16 kHz mono before it does anything else — that is the rate its log-Mel spectrogram front end is built around, and it is not configurable. Handing it a 48 kHz stereo file does not give the model more to work with; it gives it the same thing after an extra conversion step you have paid to upload and it has paid to perform.

Doing that conversion here means the file you send is roughly a sixth the size for identical transcription output. On the hosted API, which bills per minute of audio rather than per megabyte, the saving is in upload time and failed requests rather than in the bill. On a local run of whisper.cpp on a laptop it removes a resampling pass from every run.

The 25 MB API limit

OpenAI's hosted transcription endpoint rejects files over 25 MB, and this is the single most common reason people end up on a page like this one. At 16 kHz mono 16-bit WAV, that ceiling is about thirteen minutes of audio; as MP3 at 64 kbps it is over fifty. If you are close to the limit, exporting MP3 rather than WAV is the easier fix, and it costs you nothing in accuracy at speech bitrates.

For anything genuinely long — a lecture, a deposition, a two-hour interview — split it first with the splitter and transcribe the pieces. Cut on silence rather than at a fixed length so no word lands on a boundary.

What actually improves accuracy

Not the sample rate, and not the bitrate above about 64 kbps. What helps is the recording itself: a microphone close to the speaker, one speaker at a time, and a room that is not reverberant. Whisper handles accents and background noise remarkably well and handles heavy reverb and overlapping speech badly, and no amount of preprocessing fixes either.

Two preparation steps do measurably help. Trimming dead air with the silence remover reduces the model's tendency to hallucinate text during long silences — a well-documented failure mode where it emits a stray subtitle line or a repeated phrase into nothing. And if the recording is very quiet, normalizing it first gives the front end a healthier signal to work from.

What does not help is speeding the audio up to save time. Stretched speech measurably hurts accuracy on anything unclear, and the model is not billed by wall-clock time in a way you control.

Which model size to run

For clean English speech, base.en is usually enough and runs comfortably on a laptop CPU. small.en is the sweet spot for interviews with some crosstalk. The full large-v3 is worth the wait for accented speech, technical vocabulary or anything multilingual, but it wants a GPU to be pleasant. The English-only .en variants are more accurate than their multilingual counterparts at the same size, so use them when you know the language.

FAQ

What audio format does Whisper expect?

16 kHz mono 16-bit PCM WAV. Higher rates and stereo are resampled and downmixed internally, so pre-converting saves runtime cycles and (for whisper.cpp) avoids hard format errors.

Why convert to mono?

Whisper is a speech model — it doesn't use stereo information. Mono cuts the file size in half and avoids decoding ambiguity in the C++ implementations.

Why 16 kHz?

Whisper was trained on 16 kHz audio. Anything higher gets downsampled. Lower would lose information the model expects.

Will this work with whisper.cpp?

Yes. whisper.cpp's CLI requires 16-bit PCM WAV at 16 kHz, which is exactly the output here. Run ./main -f your-file.wav and it'll work.

Will this work with the OpenAI Whisper API?

Yes. The API accepts MP3, M4A, WAV, and several others, but 16 kHz mono WAV uploads faster and is the canonical input. The 25 MB request limit covers about 4 hours of audio at this format.

What about ElevenLabs, Deepgram, AssemblyAI?

All accept this format too. Their docs may suggest other formats — most accept 16 kHz mono WAV as a safe lowest-common-denominator. Check each provider for any service-specific limits.

How big a file can I process here?

Around 500 MB input on a typical laptop — that's many hours of voice. For longer files, chunk with our Audio Cutter first.

Does my audio get uploaded?

No. The conversion runs entirely in your browser tab. Useful for interviews, medical, legal, or journalism recordings you don't want touching a third-party converter before they hit your model.