openai/whisper
Lore
A timeline of the Whisper repository, derived from git log and the CHANGELOG.md. Tag dates are taken from the changelog (the slugs vYYYYMMDD are the release dates).
Eras
Sep 2022 — Initial public release
The repository's earliest commit (6e3be77e) lands on 2022-09-21. The first public push includes the encoder/decoder Transformer (model.py), the transcribe() loop, the GPT-2 / multilingual tokenizers, beam-search decoding, and a CLI. The first large checkpoint is published alongside the paper and blog post. The original tokenizer used HuggingFace transformers; this is replaced soon after.
Jan 2023 — v20230117, first PyPI release
The first versioned release (tag v20230117) ships to PyPI as openai-whisper. Subsequent rapid releases through Q1 2023 add output formats (TSV, --output_format), formatter pre-commit configuration, and printing fixes for non-UTF-8 environments.
Mar 2023 — Word timestamps and tiktoken
Two large changes land within a few weeks of each other:
v20230306: word-level timestamps (#869). Addswhisper/timing.py, the Triton DTW + median-filter kernels inwhisper/triton_ops.py, and the_ALIGNMENT_HEADSper-model masks inwhisper/__init__.py.v20230314: switches from HuggingFace tokenizers totiktoken(#1044), reducing dependencies and improving start-up time. TheTokenizerclass inwhisper/tokenizer.pywrapstiktoken.Encodingand reattaches Whisper's special tokens.
Sep 2023 — v20230918, decoding hardening
A round of robustness fixes: better timestamp heuristics (#1461), word-timing tweaks (#1559), avoidance of cache rearrangement (#1483), and pre-commit (black, isort, flake8) gets enforced via .pre-commit-config.yaml (#1528).
Nov 2023 — large-v3, 128 mel channels
v20231106 ships the large-v3 checkpoint (#1761). n_mels becomes a per-model parameter so large-v3 can use 128 mel filters instead of 80 (#2049). whisper/assets/mel_filters.npz gains a mel_128 array alongside mel_80.
Sep 2024 — large-v3-turbo
Two releases land in late September 2024:
v20240927: hallucination skip during word-timestamps (#1838), Triton requirements relaxed (#2307).v20240930: shipslarge-v3-turbo(aliasturbo) (#2361), an optimizedlarge-v3with fewer decoder layers; introduces SDPA (PyTorchscaled_dot_product_attention) toMultiHeadAttention(#2359).
turbo becomes the default CLI model.
2025 — Maintenance and supply-chain hardening
v20250625 (the current release) bundles:
- Switch
torch.loadtoweights_only=Truefor security (#2451). - Triton kernel update for newer Triton versions (
#2588). - Migration from
setup.pytopyproject.toml(#2435, PEP 621). - Python 3.13 added to CI (
#2487). - Dependabot enabled for GitHub Actions (
#2486), and pre-commit hooks pinned to immutable commit hashes (commitscba3768in Mar 2026 and04f449bin Apr 2026).
Q1 2026 — Pinned actions
The two most recent commits on main (Mar–Apr 2026) pin GitHub Actions and pre-commit references to immutable commits. No code changes to the model or pipeline.
Longest-standing code
These files have been present essentially since the first public commit and have changed little in shape:
| File / module | First seen | Notes |
|---|---|---|
whisper/model.py |
Sep 2022 | Encoder/decoder Transformer; only major change was SDPA. |
whisper/audio.py |
Sep 2022 | Hyperparameters and log_mel_spectrogram. Stable. |
whisper/decoding.py |
Sep 2022 | DecodingOptions, beam search, logit filters. Iterative refinement but same shape. |
whisper/normalizers/english.py |
Sep 2022 | Big tables of number/spelling normalization for evaluation. Untouched in years. |
Deprecated / replaced
- HuggingFace
transformerstokenizer → replaced bytiktokeninv20230314(#1044). ffmpeg-pythonPython dependency → dropped inv20230918(#1242);whisper/audio.pycallsffmpegviasubprocess.rundirectly.setup.pypackaging → replaced bypyproject.tomlinv20250625(#2435).- Python 3.7 → support dropped in
v20230306(#889). - Pinned
tiktokenversion → unpinned inv20231105(#1759).
Major rewrites
There have not been any from-scratch rewrites of the core model or pipeline. The encoder/decoder code in whisper/model.py is essentially the original 2022 design with surgical additions:
- KV cache hooks (early 2023).
set_alignment_heads()and_ALIGNMENT_HEADSmap (Mar 2023, with word timestamps).disable_sdpa()context manager andMultiHeadAttention.use_sdpaflag (Sep 2024).n_melsbecoming a per-model dimension (Nov 2023).
Likewise transcribe() has accreted features (carry initial prompt, clip timestamps, hallucination-silence skipping) on the same skeleton — its docstring still notes "This loop is obscurely flattened to make the diff readable. A later commit should turn this into a simpler nested loop."
Growth trajectory
- 2022: 57 commits — initial release plus rapid iteration.
- 2023: 79 commits — peak activity. Word timestamps, tiktoken switch,
large-v3. - 2024: 14 commits —
turbo, SDPA, NumPy 2 / PyTorch 2.4 compatibility. - 2025: 16 commits —
pyproject.tomlmigration, security fixes,weights_only=True. - 2026 YTD: 2 commits — supply-chain pins.
167 unique committers in git log so far. Single biggest contributor by commits to the core Python files is Jong Wook Kim, who appears as the top author of model.py, transcribe.py, decoding.py, tokenizer.py, timing.py, and the original audio.py.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.