Model reference · open weights
CrisperWhisper2.0_large is an open-weight audio or speech model from nyralabs. CrisperWhisper2.0_large (BF16) weighs 3.1 GB; the smallest configuration that runs it is RTX 3060 12 GB.
Summary of the nyralabs/CrisperWhisper2.0_large model card, 2026-10-01
What it is
| Released by | nyralabs |
|---|---|
| Released | 2026-07-15 |
| Parameters | 1.5B |
| VRAM | 3.1 GB for the weights |
What it runs on
| Card | One stream | Memory |
|---|---|---|
| RTX 3060 12 GB | fits | 11.6 GB |
| RTX 4060 Ti 16 GB | fits | 15.4 GB |
| RTX 3090 24 GB | fits | 23.4 GB |
| RTX 4090 24 GB | fits | 23.4 GB |
| RTX 5090 32 GB | fits | 31.0 GB |
| L40S 48 GB | fits | 44.0 GB |
| A100 80 GB | fits | 78.2 GB |
| H100 80 GB | fits | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | fits | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | fits | 107 GB |
| H200 141 GB | fits | 138 GB |
| B200 180 GB | fits | 176 GB |
From the model card
The most accurate verbatim speech recognition you can run in production: controllable, multilingual, and timed to the word.
Release post · Paper · Full documentation · Models · Benchmark · Benchmark repo
Most speech-to-text systems never actually decide whether to write down what was said or what was meant. They inherit that choice from their training data and apply it inconsistently. CrisperWhisper 2.0 makes it an explicit, controllable choice. One recording, two transcripts:
Verbatim, exactly what was said, in one consistent format:
[um] so we we need to, to reschedule the th- thursday meeting to [uh] march third at nine thirty [laughter]Intended, the clean version the speaker meant, with numbers, dates, and emails formatted the way you'd write them:
So we need to reschedule the Thursday meeting to March 3 at 9:30.
On top of that:
The Nyra Verbatim Speech Benchmark scores fillers, repetitions, cut-offs, and vocal sounds as separate, typed metrics. Its headline number is disfluency F1: how reliably a system writes down the disfluencies that were actually spoken, without inventing ones that weren't. Averaged over ten languages:
| # | System | Disfluency F1 |
|---|---|---|
| 1 | CrisperWhisper 2.0 Pro | 93.5 |
| 2 | CrisperWhisper 2.0 | 87.8 |
| 3 | ElevenLabs Scribe v2 | 79.2 |
| 4 | Microsoft MAI-Transcribe-1.5 | 77.5 |
| 5 | CrisperWhisper 1.0* | 64.8 |
| 6 | Inworld STT | 59.5 |
| 7 | xAI Grok Speech-to-Text | 42.8 |
| 8 | Deepgram Nova-3 | 37.8 |
| 9 | Fish Audio ASR | 35.0 |
| 10 | AssemblyAI Universal-3 Pro | 30.5 |
two languages. English and German use human-labeled evaluation sets; the other eight languages use synthetic verbatim sets. Per-language breakdowns and how the metric is computed are in the benchmark post.
Mean absolute word-boundary error on read speech (TIMIT), lower is better:
| # | System | Boundary error |
|---|---|---|
| 1 | CrisperWhisper 2.0 | 29.6 ms |
| 2 | xAI Grok Speech-to-Text | 37.1 ms |
| 3 | CTC-seg | 49.3 ms |
| 4 | ElevenLabs Scribe v2 | 51.3 ms |
| 5 | NeMo-FA | 60.0 ms |
| 6 | Deepgram Nova-3 | 63.3 ms |
| 7 | WhisperX | 64.8 ms |
| 8 | Cartesia Ink-Whisper | 69.4 ms |
| 9 | Canary | 85.5 ms |
are extracted from supervised cross-attention, plus results on conversational speech, are in the aligner post.
# NVIDIA GPU (Linux): fastest, includes speculative decoding.
# An NVIDIA driver is all you need; CUDA libraries arrive via pip.
pip install "crisperwhisper[ct2]"
# Pure PyTorch: runs anywhere torch does (macOS, Windows, CPU)
pip install "crisperwhisper[transformers]"
from crisperwhisper import CrisperWhisperModel
model = CrisperWhisperModel() # nyralabs/CrisperWhisper2.0_large
# or pick a size: CrisperWhisperModel("turbo") # turbo / medium / small
# Verbatim transcription (default): every filler, repetition, stutter,
# false start, and vocal event
result = model.transcribe("meeting.wav", language="en")
print(result.text)
# Intended: the clean, readable version
clean = model.transcribe("meeting.wav", language="en", mode="intended")
# Word-level timestamps
result = model.transcribe("meeting.wav", language="en", word_timestamps=True)
for w in result.words:
print(f"{w.start:6.2f}-{w.end:6.2f} {w.word}")
# Verbatimize: upgrade an existing clean transcript with the
# disfluencies that are actually in the audio
result = model.verbatimize("clip.wav", "I think we should ship it Friday.")
Audio longer than 30 seconds is handled automatically (see
longform below). The first load of a model
downloads it from HuggingFace and, on the ct2 backend, converts it once
into a local cache.
| Shorthand | HuggingFace ID | Notes |
|---|---|---|
"large" (default) | nyralabs/CrisperWhisper2.0_large | Best open quality |
"turbo" | `nyralabs/CrisperWhisp |
Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.