alt.freeweights.speech / distil-large-v3.5
From: distil-whisper <huggingface.co/distil-whisper>Newsgroups: alt.freeweights.speechSubject:

distil-large-v3.5

Date: 2026-11-15Commit: 728a769Signed: 2DC28CC7B26A283B ✓

Automatic speech recognition model with 756M parameters. Safetensors weights, 3.04 GB in all. Published by distil-whisper under MIT.

756M params3.04GBdistil-large-v3.5safetensorspermissive
FactsParams756MSize3.04 GBFormatssafetensorsTaskautomatic speech recognitionLicenseMITFrom sourcepermissive
$ fw get distil-whisper/distil-large-v3.5
# manifest sha256 e7859bd2e8ae… · 3.04 GB · 19 files
$ fw verify ./distil-large-v3.5 distil-whisper/distil-large-v3.5
From sourceHosted (signed)distil-whisper/distil-large-v3.5Last check: 2026-11-15 02:42 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Works with

Overview

Size
3.04 GB
Weights
3.03 GB (safetensors)
Parameters
756M
Formats
safetensors
Task
automatic speech recognition
License
MIT (permissive)
Files
19, each with a sha256
Publisher
distil-whisper
Added
2026-11-15
Section
alt.freeweights.speech
Lineage

Original release from the publisher.

Where these bytes come from
Publisher at the pinned commitโ†’You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-15 02:42 UTCpassed

Model card

From the publisher at commit 728a769. Shown as plain text with links; images open at the publisher.

Distil-Whisper: Distil-Large-v3.5#

Distil-Whisper is the knowledge-distilled version of OpenAI's Whisper-Large-v3, described in the paper Robust Knowledge Distillation via Large-Scale Pseudo Labelling. As the newest addition to the Distil-Whisper English family, Distil-Large-v3.5 maintains the high efficiency of its predecessors while delivering better performance.

Compared to earlier models, Distil-Large-v3.5 has been trained on over 4ร— more diverse public data (98k hours) and uses a "patient" teacher with an extended training schedule and aggressive data augmentation (SpecAugment) during distillation. This results in enhanced robustness and accuracy compared to previous Distil-Whisper models, making it suitable as a drop-in replacement.

ModelParams / MRel. RTFxShort-Form OOD WERLong-Form OOD WER
large-v3-turbo8091.07.3010.25
distil-large-v37561.447.5311.6
distil-large-v3.57561.467.0811.39

Why consider Distil-Large-v3.5 when Whisper-Large-v3-Turbo already exists?

  1. It offers a different balance between accuracy and efficiency, remains ~1.5x faster than Whisper-Large-v3-Turbo while performing slightly better on short-form transcription and falling ~1% behind on long-form transcription.
  2. It works perfectly as a draft model for speculative decoding with Whisper-Large-v3. By keeping the encoder frozen during training, we need to load just two extra decoder layers and forward the encoder only once. This achieves ~2x faster inference compared to Whisper-Large-v3 while maintaining identical outputs.

This model is a ๐Ÿค— collaborative effort between Bofeng Huang, Eustache Le Bihan, Steven Zheng, and Vaibhav Srivastav.

Table of Contents#

Performance#

The model was evaluated on both short and long-form transcriptions, using in-distribution (ID) and out-of-distribution (OOD) datasets to assess accuracy, generalizability, and robustness.

Note that Word Error Rate (WER) results shown here are post-normalization, which includes converting text to lowercase, removing symbols and punctuation, and more.

Short-Form Evaluation#

We've evaluated the model on 5 in-distribution (ID) test sets and 2 out-of-distribution (OOD) test sets for short-form transcription, as done in ๐Ÿค— Open ASR Leaderboard.

DatasetSize / hlarge-v3large-v3-turbodistil-v3distil-v3.5
AMI8.6815.9516.1315.1614.63
Gigaspeech35.3610.0210.1410.089.84
LS Clean5.402.012.102.542.37
LS Other5.343.914.245.195.04
Tedlium2.613.863.573.863.64
------------------------------------
Earnings225.4311.2911.6311.7911.29
SPGISpeech100.002.942.973.272.87
------------------------------------
ID Average7.157.247.377.10
OOD Average7.127.307.537.08
Average7.147.257.417.10

Note: ID/OOD classification is based on distil-v3 and distil-v3.5 training data. Large-v3 and large-v3-turbo training corpus details are unknown, so this categorization might not represent their true in-domain vs. out-of-domain performance.

Long-Form Evaluation#

We've evaluated the model on 1 in-distribution (ID) test sets and 4 out-of-distribution (OOD) test sets for long-form transcription, using the sequential decoding algorithm (condition_on_prev_tokens=False, return_timestamps=True).

DatasetSize / hlarge-v3-turbodistil-v2distil-v3distil-v3.5
tedlium-long-form2.473.079.663.94.63
------------------------------------------
meanwhile1.015.0316.757.046.79
earnings2139.269.8415.0910.5410.6
earnings22119.8913.3219.1115.0614.19
rev1616.1612.8221.1513.7613.98
------------------------------------------
ID Average3.079.663.94.63
OOD Average10.2518.0311.611.39
Average8.8216.3510.0610.04

Note: ID/OOD classification is based on distil-v3 and distil-v3.5 training data. Large-v3 and large-v3-turbo training corpus details are unknown, so this categorization might not represent their true in-domain vs. out-of-domain performance.

Below are the Real Time Factor (RTFx) measurements showing that Distil-Large-v3.5 is approximately 1.5x faster than Whisper-Large-v3-Turbo on long-form transcription.

Datasetlarge-v3-turbodistil-v2distil-v3distil-v3.5
tedlium-long-form34.3327.9644.9545.19
meanwhile26.5528.0140.8442.48
earnings2135.2536.6654.6954.3
earnings2239.0842.0957.2858.8
rev1633.8623.8745.4345.91
-------------------------------------
Average33.8131.7248.6449.34

Transformers Usage#

Distil-Large-v3.5 is supported in the Hugging Face ๐Ÿค— Transformers library from version 4.39 onwards. To run the model, first install the latest version of Transformers. For this example, we'll also install ๐Ÿค— Datasets to load a toy audio dataset from the Hugging Face Hub:

pip install --upgrade pip
pip install --upgrade transformers accelerate datasets[audio]
Short-Form Transcription#

The model can be used with the pipeline class to transcribe short-form audio files (< 30-seconds) as follows:

import torch
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor, pipeline
from datasets import load_dataset


device = "cuda:0" if torch.cuda.is_available() else "cpu"
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32

model_id = "distil-whisper/distil-large-v3.5"

model = AutoModelForSpeechSeq2Seq.from_pretrained(
    model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True
)
model.to(device)

processor = AutoProcessor.from_pretrained(model_id)

pipe = pipeline(
    "automatic-speech-recognition",
    model=model,
    tokenizer=processor.tokenizer,
    feature_extractor=processor.feature_extractor,
    max_new_tokens=128,
    torch_dtype=torch_dtype,
    device=device,
)

dataset = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
sample = dataset[0]["audio"]

result = pipe(sample)
print(result["text"])

To transcribe a local audio file, simply pass the path to your audio file when you call the pipeline:

- result = pipe(sample)
+ result = pipe("audio.mp3")

For segment-level timestamps, pass the argument return_timestamps=True and return the "chunks" output:

result = pipe(sample, return_timestamps=True)
print(result["chunks"])

For more control over the generation parameters, use the model + processor API directly:

Ad-hoc generation arguments can be passed to model.generate, including num_beams for beam-search, return_timestamps for segment-level timestamps, and prompt_ids for prompting. See the docstrings for more details.

import torch
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor
from datasets import Audio, load_dataset


device = "cuda:0" if torch.cuda.is_available() else "cpu"
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32

model_id = "distil-whisper/distil-large-v3.5"

model = AutoModelForSpeechSeq2Seq.from_pretrained(
    model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True
)
model.to(device)

processor = AutoProcessor.from_pretrained(model_id)

dataset = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
dataset = dataset.cast_column("audio", Audio(processor.feature_extractor.sampling_rate))
sample = dataset[0]["audio"]

input_features = processor(
  sample["array"], sampling_rate=sample["sampling_rate"], return_tensors="pt"
).input_features

input_features = input_features.to(device, dtype=torch_dtype)

gen_kwargs = {
  "max_new_tokens": 128,
  "num_beams": 1,
  "return_timestamps": False,
}

pred_ids = model.generate(input_features, **gen_kwargs)
pred_text = processor.batch_decode(pred_ids, skip_special_tokens=True, decode_with_timestamps=gen_kwargs["return_timestamps"])

print(pred_text)
Sequential Long-Form#

Unlike previous Distil-Whisper releases, Distil-Large-v3 and Distil-Large-v3.5 is specifically designed to be compatible with OpenAI's sequential long-form transcription algorithm. This algorithm uses a sliding window for buffered inference of long audio files (> 30-seconds), and returns more accurate transcriptions compared to the chunked long-form algorithm.

The sequential long-form algorithm should be used in either of the following scenarios:

  1. Transcription accuracy is the most important factor, and latency is less of a consideration
  2. You are transcribing batches of long audio files, in which case the latency of sequential is comparable to chunked, while being up to 0.5% WER more accurate

If you are transcribing single long audio files and latency is the most important factor, you should use the chunked algorithm described below. For a detailed explanation of the different algorithms, refer to Sections 5 of the Distil-Whisper paper.

The pipeline class can be used to transcribe long audio files with the sequential algorithm as follows:

import torch
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor, pipeline
from datasets import load_dataset


device = "cuda:0" if torch.cuda.is_available() else "cpu"
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32

model_id = "distil-whisper/distil-large-v3.5"

model = AutoModelForSpeechSeq2Seq.from_pretrained(
    model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True
)
model.to(device)

processor = AutoProcessor.from_pretrained(model_id)

pipe = pipeline(
    "automatic-speech-recognition",
    model=model,
    tokenizer=processor.tokenizer,
    feature_extractor=processor.feature_extractor,
    max_new_tokens=128,
    torch_dtype=torch_dtype,
    device=device,
)

dataset = load_dataset("distil-whisper/librispeech_long", "clean", split="validation")
sample = dataset[0]["audio"]

result = pipe(sample)
print(result["text"])

For more control over the generation parameters, use the model + processor API directly:

import torch
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor
from datasets import Audio, load_dataset


device = "cuda:0" if torch.cuda.is_available() else "cpu"
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32

model_id = "distil-whisper/distil-large-v3.5"

model = AutoModelForSpeechSeq2Seq.from_pretrained(
    model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True
)
model.to(device)

processor = AutoProcessor.from_pretrained(model_id)

dataset = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
dataset = dataset.cast_column("audio", Audio(processor.feature_extractor.sampling_rate))
sample = dataset[0]["audio"]

inputs = processor(
    sample["array"],
    sampling_rate=sample["sampling_rate"],
    return_tensors="pt",
    truncation=False,
    padding="longest",
    return_attention_mask=True,
)
inputs = inputs.to(device, dtype=torch_dtype)

gen_kwargs = {
    "max_new_tokens": 448,
    "num_beams": 1,
    "condition_on_prev_tokens": False,
    "compression_ratio_threshold": 1.35,  # zlib compression ratio threshold (in token space)
    "temperature": (0.0, 0.2, 0.4, 0.6, 0.8, 1.0),
    "logprob_threshold": -1.0,
    "no_speech_threshold": 0.6,
    "return_timestamps": True,
}

pred_ids = model.generate(**i   nputs, **gen_kwargs)
pred_text = processor.batch_decode(pred_ids, skip_special_tokens=True, decode_with_timestamps=False)

print(pred_text)
Chunked Long-Form#

Distil-Large-v3.5 remains compatible with the Transformers chunked long-form algorithm. This algorithm should be used when a single large audio file is being transcribed and the fastest possible inference is required. In such circumstances, the chunked algorithm is up to 9x faster than OpenAI's sequential long-form implementation (see Table 7 of the Distil-Whisper paper).

To enable chunking, pass the chunk_length_s parameter to the pipeline. For Distil-Large-v3.5, a chunk length of 25-seconds is optimal. To activate batching over long audio files, pass the argument batch_size:

import torch
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor, pipeline
from datasets import load_dataset


device = "cuda:0" if torch.cuda.is_available() else "cpu"
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32

model_id = "distil-whisper/distil-large-v3.5"

model = AutoModelForSpeechSeq2Seq.from_pretrained(
    model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True
)
model.to(device)

processor = AutoProcessor.from_pretrained(model_id)

pipe = pipeline(
    "automatic-speech-recognition",
    model=model,
    tokenizer=processor.tokenizer,
    feature_extractor=processor.feature_extractor,
    max_new_tokens=128,
    chunk_length_s=25,
    batch_size=16,
    torch_dtype=torch_dtype,
    device=device,
)

dataset = load_dataset("distil-whisper/librispeech_long", "clean", split="validation")
sample = dataset[0]["audio"]

result = pipe(sample)
print(result["text"])
Speculative Decoding#

Distil-Large-v3.5 can be used as an assistant to Whisper-Large-v3 for speculative decoding. Speculative decoding mathematically ensures that exactly the same outputs as Whisper are obtained, while being 2 times faster. This makes it the perfect drop-in replacement for existing Whisper pipelines, since the same outputs are guaranteed.

In the following code-snippet, we load the assistant Distil-Whisper model standalone to the main Whisper pipeline. We then specify it as the "assistant model" for generation:

from transformers import pipeline, AutoModelForCausalLM, AutoModelForSpeechSeq2Seq, AutoProcessor
import torch
from datasets import load_dataset

device = "cuda:0" if torch.cuda.is_available() else "cpu"
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32

assistant_model_id = "distil-whisper/distil-large-v3.5"

assistant_model = AutoModelForCausalLM.from_pretrained(
    assistant_model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True
)
assistant_model.to(device)

model_id = "openai/whisper-large-v3"

model = AutoModelForSpeechSeq2Seq.from_pretrained(
    model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True
)
model.to(device)

processor = AutoProcessor.from_pretrained(model_id)

pipe = pipeline(
    "automatic-speech-recognition",
    model=model,
    tokenizer=processor.tokenizer,
    feature_extractor=processor.feature_extractor,
    max_new_tokens=128,
    generate_kwargs={"assistant_model": assistant_model},
    torch_dtype=torch_dtype,
    device=device,
)

dataset = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
sample = dataset[0]["audio"]

result = pipe(sample)
print(result["text"])

For more details on speculative decoding, refer to the blog post Speculative Decoding for 2x Faster Whisper Inference.

Additional Speed & Memory Improvements#

You can apply additional speed and memory improvements to Distil-Whisper to further reduce the inference speed and VRAM requirements. These optimisations primarily target the attention kernel, swapping it from an eager implementation to a more efficient flash attention version.

Flash Attention 2#

We recommend using Flash-Attention 2 if your GPU allows for it. To do so, you first need to install Flash Attention:

pip install flash-attn --no-build-isolation

Then pass attn_implementation="flash_attention_2" to from_pretrained:

- model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True)
+ model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True, attn_implementation="flash_attention_2")
Torch Scale-Product-Attention (SDPA)#

If your GPU does not support Flash Attention, we recommend making use of PyTorch scaled dot-product attention (SDPA). This attention implementation is activated by default for PyTorch versions 2.1.1 or greater. To check whether you have a compatible PyTorch version, run the following Python code snippet:

from transformers.utils import is_torch_sdpa_available

print(is_torch_sdpa_available())

If the above returns True, you have a valid version of PyTorch installed and SDPA is activated by default. If it returns False, you need to upgrade your PyTorch version according to the official instructions

Once a valid PyTorch version is installed, SDPA is activated by default. It can also be set explicitly by specifying attn_implementation="sdpa" as follows:

- model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True)
+ model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True, attn_implementation="sdpa")

For more information about how to use the SDPA refer to the Transformers SDPA documentation.

Torch compile#

Coming soon...

4-bit and 8-bit Inference#

Coming soon...

Library Integrations#

Whisper.cpp#

Distil-Large-v3.5 can be run with the Whisper.cpp package with the original sequential long-form transcription algorithm.

Steps for getting started:

  1. Clone and build the Whisper.cpp repository:
git clone https://github.com/ggerganov/whisper.cpp.git
cd whisper.cpp
make
  1. Install the Hugging Face Hub Python package:
pip install --upgrade huggingface_hub

And download the GGML weights for Distil-Large-v3.5 using the following Python snippet:

from huggingface_hub import hf_hub_download

hf_hub_download(repo_id='distil-whisper/distil-large-v3.5-ggml', filename='ggml-model.bin', local_dir='./models')

Note that if you do not have a Python environment set-up, you can also download the weights directly with wget:

wget https://huggingface.co/distil-whisper/distil-large-v3.5-ggml/resolve/main/ggml-model.bin -P ./models
  1. Run inference using the provided sample audio:
./main -m ./models/ggml-model.bin -l en -f /path/to/audio/file --print-colors
Faster-Whisper#

Faster-Whisper is a reimplementation of Whisper using CTranslate2, a fast inference engine for Transformer models.

First, install the Faster-Whisper package according to the official instructions. For this example, we'll also install ๐Ÿค— Datasets to load a toy audio dataset from the Hugging Face Hub:

pip install --upgrade pip
pip install --upgrade git+https://github.com/SYSTRAN/faster-whisper datasets[audio]

The following code snippet loads the Distil-Large-v3.5 model and runs inference on an example file from the LibriSpeech ASR dataset:

import torch
from faster_whisper import WhisperModel
from datasets import load_dataset

# define our torch configuration
device = "cuda" if torch.cuda.is_available() else "cpu"
compute_type = "float16" if torch.cuda.is_available() else "float32"

# load model on GPU if available, else cpu
model = WhisperModel("distil-whisper/distil-large-v3.5-ct2", device=device, compute_type=compute_type)

# load toy dataset for example
dataset = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
sample = dataset[1]["audio"]["path"]

segments, info = model.transcribe(sample, beam_size=5, language="en")

for segment in segments:
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))

To transcribe a local audio file, simply pass the path to the audio file as the audio argument to transcribe:

segments, info = model.transcribe("audio.mp3", beam_size=5, language="en")
OpenAI Whisper#

To use the model in the original Whisper format, first ensure you have the openai-whisper package installed. For this example, we'll also install ๐Ÿค— Datasets to load a toy audio dataset from the Hugging Face Hub:

pip install --upgrade pip
pip install --upgrade openai-whisper datasets[audio]

The following code-snippet demonstrates how to transcribe a sample file from the LibriSpeech dataset loaded using ๐Ÿค— Datasets:

from datasets import load_dataset
from huggingface_hub import hf_hub_download
import whisper

model_path = hf_hub_download(repo_id="distil-whisper/distil-large-v3.5-openai", filename="model.bin")
model = whisper.load_model(model_path)

dataset = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
sample = dataset[0]["audio"]["path"]

result = model.transcribe(sample, language="en")
print(result["text"])

Note that the model weights will be downloaded and saved to your cache the first time you run the example. Subsequently, you can re-use the same example, and the weights will be loaded directly from your cache without having to download them again.

To transcribe a local audio file, simply pass the path to the audio file as the audio argument to transcribe:

result = model.transcribe("audio.mp3", language="en")
print(result["text"])

The Distil-Whisper model can also be used with the OpenAI Whisper CLI. Refer to the following instructions for details.

Candle#

Through an integration with Hugging Face Candle ๐Ÿ•ฏ๏ธ, Distil-Whisper is available in the Rust library ๐Ÿฆ€

Benefit from:

  • Optimised CPU backend with optional MKL support for Linux x86 and Accelerate for Macs
  • Metal support for efficiently running on Macs
  • CUDA backend for efficiently running on GPUs, multiple GPU distribution via NCCL
  • WASM support: run Distil-Whisper in a browser

Steps for getting started:

  1. Install candle-core as explained here
  2. Clone the candle repository locally:
git clone https://github.com/huggingface/candle.git
  1. Enter the example directory for Whisper:
cd candle/candle-examples/examples/whisper
  1. Run an example:
cargo run --example whisper --release --features symphonia -- --model distil-large-v3
  1. To specify your own audio file, add the --input flag:
cargo run --example whisper --release --features symphonia -- --model distil-large-v3 --input audio.wav

Tip: for compiling using Apple Metal, specify the metal feature when you run the example:

cargo run --example whisper --release --features="symphonia,metal" -- --model distil-large-v3

Note that if you encounter the error:

error: target `whisper` in package `candle-examples` requires the features: `symphonia`
Consider enabling them by passing, e.g., `--features="symphonia"`

You should clean your cargo installation:

cargo clean

And subsequently recompile:

cargo run --example whisper --release --features symphonia -- --model distil-large-v3

Training#

Training Details#

Distil-Whisper inherits the encoder-decoder architecture from Whisper. The encoder maps a sequence of speech vector inputs to a sequence of hidden-state vectors. The decoder auto-regressively predicts text tokens, conditional on all previous tokens and the encoder hidden-states. Consequently, the encoder is only run forward once, whereas the decoder is run as many times as the number of tokens generated. In practice, this means the decoder accounts for over 90% of total inference time. Thus, to optimise for latency, the focus is on minimising the inference time of the decoder.

Distil-Large-v3.5 builds on techniques from previous Distil-Whisper models, particularly the training procedure introduced in Distil-Large-v2 for teacher model distillation and the sample packing method from Distil-Large-v3 that improves long-form transcription with sequential decoding. Beyond these established approaches, we've made several significant enhancements:

  • Significantly expanded training data: We've increased our training dataset from 22,000 hours in the previous version to over 98,000 hours of high-quality public data, largely thanks to the Yodas dataset which provides diverse content from YouTube.
  • Implemented a "patient" teacher with aggressive data augmentation (SpecAugment): This allowed us to extend the training schedule substantially to 80 epochs compared to just 11 in the previous version. The model continues to show improvement, with evaluation loss still slightly decreasing even at this extended duration.
  • Reduced the probability of appending previous prompt in training data: We initially set this at 50%, but discovered the model struggled with transcribing text that included previous context, possibly due to decoder size limitations. We subsequently reduced this to 20%, which improved the overall performance while still serving as a form of data augmentation.
  • Increased batch size and learning rate: We implemented a much larger batch size of 4,096 packed segments, substantially bigger than the 256 used in the previous version. We also tested alternative learning rate schedulers including cosine, wsd, and scheduler-free optimizers, but found the linear approach still performed best.

We also revised the segment packing order to create more logically structured packed segments and adopted BPE dropout as regularization, which we found slightly degraded performance on short-form transcription but improved results for long-form content.

The model was trained using 64 H100 GPUs on the Jean Zay cluster, with the entire training process taking three days.

The Tensorboard training logs can be found here.

Training Data#

We initially gathered over 196,000 hours of public data from sources like Common Voice, LibriSpeech , VoxPopuli , TED-LIUM , People's Speech, GigaSpeech , AMI , and notably, Yodas. This diverse dataset is essential for ensuring our distilled model remains robust across various audio distributions and noise conditions.

We packed the collected examples into roughly 30-second segments, with each segment containing only one speaker. To maintain high quality and consistent formatting across datasets, we pseudo-labelled these training segments using Whisper-Large-v3. We then normalized both the Whisper pseudo-labels and the ground truth labels provided by each dataset, and calculated the WER between them. We discarded any examples with a WER exceeding 10%, resulting in approximately 98,000 hours of high-quality training data.

The filtered data can be found in this multilingual dataset for reproduction and further filtering.

Reproducing Distil-Whisper#

Training and evaluation code to reproduce Distil-Whisper is available under the Distil-Whisper repository.

License#

Distil-Whisper inherits the MIT license from OpenAI's Whisper model.

Citation#

If you use this model, please consider citing the Distil-Whisper paper:

@misc{gandhi2023distilwhisper,
      title={Distil-Whisper: Robust Knowledge Distillation via Large-Scale Pseudo Labelling}, 
      author={Sanchit Gandhi and Patrick von Platen and Alexander M. Rush},
      year={2023},
      eprint={2311.00430},
      archivePrefix={arXiv},
      primaryClass={cs.CL}
}

Acknowledgements#

Files

19 files ยท 3.04 GBWeights 3.03 GB (safetensors). Sizes and sha256 from the signed manifest.
Hide all 19 files with their sha256
FileSizesha256
.eval_results/open_asr_leaderboard.yaml2.13 KB3e2ebed5aae40ca75f0f5298f19cba74969becac5bd8e44226260823d68cfc99
.gitattributes1.52 KB11ad7efa24975ee4b0c3c3a38ed18737f0658a5f75a0a96787b576a78a023361
.gitignore30 B844f2547f2e78b5426408b554295bca26838f3fe8ad298f3d2cf5002e2689b33
README.md34.8 KB47b5c920fe91b05e354b19813e0c4de3a01ca2e6bf4488b4cb18ad25ab180779
added_tokens.json34.6 KB3c51f66c4c21f9e126970078f11ae77a78c74aee8df606ee9daba86e467108e0
config.json1.25 KB515a10a9979258d3fc71cf79b2cd055c189f07d78879a15bd9bc282673308b85
generation_config.json4.25 KBb521c66612bd95be36c154f2d3904f6e4ea3be481a18a48f293d66791f60cf98
hf-whisper-distil-multi-v0.2/events.out.tfevents.1732842515.jzxh112.1688663.02.47 MB863b76006344851ce892b9bdbf2b6c12d3d92334e5c17384055b07447a0fcc3e
hf-whisper-distil-multi-v0.2/events.out.tfevents.1732907831.jzxh108.2302919.02.77 MB120a08be9c2b54b4fa34882e38751eea8e22fa1405f1d1367b72bda2510e522c
hf-whisper-distil-multi-v0.2/events.out.tfevents.1732979739.jzxh108.2370161.02.74 MB034f019d7f779fbfd3cdd247bf5804491352340af5699c64d05b2f36ca37d3cf
hf-whisper-distil-multi-v0.2/events.out.tfevents.1733051636.jzxh108.2446481.0795 KB8ecd835d6826b95e208d9a27f8247bb3cbd5739396f8865a38af72633e1a5323
hf-whisper-distil-multi-v0.2/events.out.tfevents.1733072730.jzxh108.2472375.0871 KBc72b0219d9eb52dcccc0942612168659c7afd2fe40fb89077e18a4011a0aef9c
merges.txt494 KB2df2990a395e35e8dfbc7511e08c12d56018d8d04691e0133e5d63b21e154dc6
model.safetensors3.03 GB76ec9f754fc4b4810845dc36b71d1897c1342e702810c179e1569690084cfb0c
preprocessor_config.json340 B7ccc62c6f2765af1f3b46c00c9b5894426835a05021c8b9c01eecb6dfb542711
special_tokens_map.json2.19 KBbaea4ea09372eb4fca86b4e4346139fd73cb807d5087e9de0948e971739c3e74
tokenizer.json2.48 MBb3c8202bbf06d8ee4232c5984baa563784ac4737e2e7fdc42fa180200d3cfcdb
tokenizer_config.json283 KBc86c7398ba7f81f784569ea0ae165e252c4a006acc56906f04e5ee3300cf043e
vocab.json836 KB6788c80b082e9b0d1393147d3a3e62ba19285ac0c82ace8e5ef00f37ead58971
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
728a7691f3 pinned now2026-11-15 02:42 UTC19 files ยท 3.04 GB

Use it

$ fw get distil-whisper/distil-large-v3.5
# manifest sha256 e7859bd2e8ae… · 3.04 GB · 19 files
$ fw verify ./distil-large-v3.5 distil-whisper/distil-large-v3.5
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/distil-whisper/distil-large-v3.5.json --dir ./distil-large-v3.5 $ python3 fw.py verify ./distil-large-v3.5 ./distil-whisper__distil-large-v3.5.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download distil-whisper/distil-large-v3.5 --revision 728a7691f3ff1d3d971528d3203a6e9559165d41 --local-dir ./distil-large-v3.5
transformersSpeech recognition with the transformers pipeline.
import os os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com" from transformers import pipeline asr = pipeline("automatic-speech-recognition", model="distil-whisper/distil-large-v3.5", revision="728a7691f3ff1d3d971528d3203a6e9559165d41") print(asr("audio.wav")["text"])

License

Name
MIT License
Id
MIT
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-15
Text in
README.md
Text sha256
47b5c920fe91b05e354b19813e0c4de3a01ca2e6bf4488b4cb18ad25ab180779
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: distil-whisper <huggingface.co/distil-whisper>Newsgroups: alt.freeweights.speechSubject: distil-large-v3.5Date: 2026-11-15Commit: 728a769Signed: 2DC28CC7B26A283B ✓
Upstream
distil-whisper/distil-large-v3.5
Pinned commit
728a7691f3ff1d3d971528d3203a6e9559165d41
Manifest
distil-large-v3.5.json ยท .minisig
Manifest sha256
e7859bd2e8ae5f5fa732575dc98ee40ac8e5b2f642f8403a6fc2d710f7ebc9af
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 02:42 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/distil-whisper/distil-large-v3.5.json $ curl -O https://freeweights.allternit.com/manifests/distil-whisper/distil-large-v3.5.json.minisig $ minisign -Vm distil-large-v3.5.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

1 model in the catalog name this one as their parent.

Quantizations
1
Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download distil-whisper/distil-large-v3.5
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. distil-large-v3.5.json. Provenance. Takedown history: none.

Variants

1 quantized or adapter build of distil-large-v3.5. Each has its own license check and page.

From: MIT <huggingface.co/MIT>Subject: ast-finetuned-audioset-10-10-0.4593
From: onnx-community <huggingface.co/onnx-community>Subject: ast-finetuned-audioset-10-10-0.4593-ONNX
From: Edge0 <huggingface.co/Edge0>Subject: Audio8-TTS-Preview-0.6b
From: Edge0 <huggingface.co/Edge0>Subject: Audio8-TTS-Realistic-Air
From: facebook <huggingface.co/facebook>Subject: audiobox-aesthetics
From: mlx-community <huggingface.co/mlx-community>Subject: chatterbox-4bit