What Is Whisper?
Whisper is OpenAI's automatic speech recognition (ASR) model, open-sourced in September 2022. Trained on 680,000 hours of internet audio, it supports transcription and translation in 99 languages with near-human accuracy.
Available as:
- Free local tool (requires Python + recommended GPU).
- OpenAI API (~$0.006/minute).
- Third-party integrations (Descript, Adobe Premiere, CapCut, etc.).
Available Models
| Model | Parameters | RAM | Speed | Accuracy |
|---|---|---|---|---|
tiny |
39M | 1 GB | Very fast | Basic |
base |
74M | 1 GB | Fast | Good |
small |
244M | 2 GB | Moderate | Very good |
medium |
769M | 5 GB | Slow | Excellent |
large-v3 |
1550M | 10 GB | Slow | Best available |
For CPU-only use: small offers the best quality/speed balance.
Local Installation
pip install openai-whisper
# FFmpeg (required)
sudo apt install ffmpeg # Ubuntu/Debian
brew install ffmpeg # macOS
Basic Transcription
# Transcribe (auto-detects language)
whisper audio.mp3
# Specify language (faster and more accurate)
whisper audio.mp3 --language English
# Generate SRT subtitles
whisper audio.mp3 --output_format srt
# All formats: .txt, .srt, .vtt, .tsv, .json
whisper audio.mp3 --output_format all
# Use specific model
whisper audio.mp3 --model large-v3 --language English
Python Transcription
import whisper
model = whisper.load_model("small")
result = model.transcribe("audio.mp3", language="en")
print(result["text"])
def transcribe_to_srt(audio_path, output_path, language=None):
model = whisper.load_model("small")
result = model.transcribe(audio_path, language=language)
with open(output_path, "w", encoding="utf-8") as f:
for i, seg in enumerate(result["segments"], 1):
def ts(s):
h, m = int(s//3600), int((s%3600)//60)
return f"{h:02d}:{m:02d}:{int(s%60):02d},{int((s%1)*1000):03d}"
f.write(f"{i}\n{ts(seg['start'])} --> {ts(seg['end'])}\n{seg['text'].strip()}\n\n")
transcribe_to_srt("video.mp4", "subtitles.srt", language="en")
OpenAI API (No Local Setup)
from openai import OpenAI
client = OpenAI()
with open("audio.mp3", "rb") as f:
transcript = client.audio.transcriptions.create(
model="whisper-1",
file=f,
language="en",
response_format="srt"
)
print(transcript)
Cost: ~$0.006/minute. One hour of audio ≈ $0.36.
Supported Formats
MP3, MP4, M4A, WAV, FLAC, OGG, WEBM, MPEG, MPGA.
Pre-process with FFmpeg:
# Extract audio from video
ffmpeg -i video.mp4 -vn -ar 16000 -ac 1 audio.wav
# Normalize volume
ffmpeg -i audio.mp3 -af "loudnorm" audio_normalized.mp3
Quality Tips
- Specify language — improves accuracy and reduces hallucinations.
- Use
large-v3for critical transcriptions. - Normalize audio before transcribing.
- Segment long audio — Whisper performs best under 30 minutes.
- Review proper nouns — may make errors with specific names.
Conclusion
Whisper is the most accurate free automatic transcription tool available. For privacy-sensitive projects or heavy usage, run locally with small or medium. For occasional use, the OpenAI API offers the best quality-to-effort ratio.
Related conversions
Audio format pairs that come up most often: