Skip to page content
SAVRN
Search Plan a project

Open-weight model · Speech recognition

VibeVoice-ASR-DFlash2-Drafter

by Nikita Davidchuk Ar4ikov/VibeVoice-ASR-DFlash2-Drafter

VibeVoice-ASR-DFlash2-Drafter is an open-weight model for speech recognition from Nikita Davidchuk, released under MIT License. It has 831M parameters and a 131,072-token context. At 16-bit it needs about 2 GB of GPU memory, which fits on 1x MI300X from $1.85 an hour, at the lowest prices in the SAVRN Index.

A DFlash 2 block drafter for VibeVoice-ASR (7B) (Ar4ikov/VibeVoice-ASR-AWQ-W4A16-ASYM), for speculative decoding in vibevoice.c.

Parameters831M
Context131,072
Weights1.7 GB
Licensemit
AccessOpen weights
Monthly Downloads—

Runs On

What it takes to serve VibeVoice-ASR-DFlash2-Drafter (831M parameters): the memory its weights need at each precision, and the cheapest way to rent enough data-center GPUs to hold them.

PrecisionWeightsMemory neededCheapest setupPer hourAlso fits
16-bit 1.7 GB 2.0 GB 1x MI300X (192 GB)
Vultr
$1.85 1x H100 $1.99 · 1x MI325X $2.00
8-bit 0.8 GB 1.0 GB 1x MI300X (192 GB)
Vultr
$1.85 1x H100 $1.99 · 1x MI325X $2.00
4-bit 0.4 GB 0.5 GB 1x MI300X (192 GB)
Vultr
$1.85 1x H100 $1.99 · 1x MI325X $2.00

Memory is the weights at that precision plus 20% for the runtime and a short context; a long context needs more. Prices are the lowest on-demand hourly rates in the SAVRN Index, read Oct 18, 2026.

VibeVoice-ASR-DFlash2-Drafter on every accelerator the SAVRN Index prices, at every precision

Model Card

By Nikita Davidchuk, published under mit, revision 795e2a5df698.

A DFlash 2 block drafter for VibeVoice-ASR (7B) (Ar4ikov/VibeVoice-ASR-AWQ-W4A16-ASYM), for speculative decoding in vibevoice.c. It proposes 8 tokens in one pass; vibevoice.c checks them in one pass of the model and keeps the ones the model agrees with, plus one of its own. the model's own one-token decode step, so the transcript with this drafter is byte-for-byte the transcript without it — words, timestamps, speakers. The drafter only changes how many passes it takes. One thing changes with --draft: vibevoice.c then attends with flashinfer (--attn auto picks it), because flashinfer checks several rows in one pass over the cache where the default fa2 walks it once per row. The transcript…

Read Nikita Davidchuk's full model card

A DFlash 2 block drafter for VibeVoice-ASR (7B) (Ar4ikov/VibeVoice-ASR-AWQ-W4A16-ASYM), for speculative decoding in vibevoice.c. It proposes 8 tokens in one pass; vibevoice.c checks them in one pass of the model and keeps the ones the model agrees with, plus one of its own.

The check is exact: every checked row is computed with the arithmetic of the model's own one-token decode step, so the transcript with this drafter is byte-for-byte the transcript without it — words, timestamps, speakers. The drafter only changes how many passes it takes.

One thing changes with --draft: vibevoice.c then attends with flashinfer (--attn auto picks it), because flashinfer checks several rows in one pass over the cache where the default fa2 walks it once per row. The transcript is then byte-for-byte that of --attn flashinfer without a drafter — on this model the default's words, with a timestamp 10 ms apart on a 32-minute file. --attn fa2 --draft keeps the default's transcript bit for bit, and gains less on long recordings.

Use

Needs vibevoice.c with DFlash 2 support: branch dflash2 (PR #48), in the next release. The model and this drafter in one download: Ar4ikov/VibeVoice-ASR-AWQ-W4A16-ASYM-DFlash2 (the INT4 drafter in drafter/, used without --draft).

vv_cli --model ./VibeVoice-ASR-AWQ-W4A16-ASYM --audio talk.wav --draft ./VibeVoice-ASR-DFlash2-Drafter
vv_cli serve --model ./VibeVoice-ASR-AWQ-W4A16-ASYM --draft ./VibeVoice-ASR-DFlash2-Drafter --slots 4
flag
--draft <dir> this repository
--draft-block <n> rows of the drafted block the model checks per pass (the drafter drafts 8; without the flag: 4 or 8, whichever keeps more tokens per ms)
--draft-check exact\|fast exact (default): the transcript without a drafter on the same --attn, bit for bit; fast: flashinfer attention and prefill projections for the check, the greedy transcript within rounding
--draft-quant int4\|f16 how the runtime holds a BF16 drafter (INT4 by default)

It drafts for any VibeVoice-ASR (7B) checkpoint of the same model — microsoft/VibeVoice-ASR, scerz/VibeVoice-ASR-4bit — since it reads only the model's hidden states, embedding and LM head; it was trained on the AWQ checkpoint's transcripts, so that is where it drafts best. On NF4 (bitsandbytes) and INT8 weights only --draft-check fast pays: their decode step has no multi-row twin, so an exact check would cost a step per row, and vibevoice.c declines the drafter there with a pointer to fast.

Results

vibevoice.c b72be15 (branch dflash2), RTX 3090, VibeVoice-ASR-AWQ-W4A16-ASYM, greedy decoding, decode tokens per second:

plain drafted speedup tokens per block same transcript
20 held-out clips (AMI, VoxConverse, earnings calls, LibriSpeech, FLEURS) 148 tok/s 566 tok/s 3.84x 5.33 20/20
2-minute file, 2 speakers 151 tok/s 547 tok/s 3.63x 4.87 yes
32-minute file 123 tok/s 290 tok/s 2.36x 3.57 yes

Plain = the same binary without --draft, both with flashinfer attention, which --draft picks by default; --draft-check exact with the check width it measures. Against the default without a drafter (fa2): 3.82x on the 2-minute file, 2.73x on the 32-minute file.

The drafter

  • DFlash 2: 5 Qwen3-style layers (hidden 3584, 28/4 heads, intermediate 9472), 831M parameters, block 8.
  • KV injection: for every position the model has processed, the outputs of its layers 1, 7, 13, 19 and 25 are concatenated, projected (fc) and normalized; every drafter layer turns them into keys and values. The drafter reads the model's own view of the audio and of the transcript so far.
  • Two-tap dynamic convolution around attention and MLP (per-row kernels predicted from the row), and a candidate selector that re-ranks the model head's top 16 per row with a pairwise predecessor/successor term (rank 256).
  • The embedding and the LM head are the model's, frozen. The drafter scores a draft vocabulary of 32768 ids (draft_vocab): the ids its training transcripts use, plus every stop id.
  • Accepted drafts on 43 held-out clips' traces: 5.273 tokens per block of 8 (the selector's, with every earlier draft right).

Training

Self-distillation: the drafter learns what this model writes, timestamps and speaker ids included. tools/dflash in vibevoice.c holds the pipeline:

  1. ~390 hours of audio, 8228 training clips and 43 held out, from LibriSpeech, FLEURS (8 languages), SOVA, AMI, earnings calls and VoxConverse — audio only; the datasets' own text is never used.
  2. The model's own greedy transcripts of every clip (vv_dflash_data gen).
  3. Traces: every position's token, its role and the five tapped layers' outputs, replayed through the runtime (vv_dflash_data trace).
  4. train.py (PyTorch, flex attention): anchors at generated positions, rows 1..7 scored against the next 7 tokens with weights e^(-k/4); cross-entropy of the head plus the selector's; AdamW, cosine schedule, BF16.

Limits

  • vibevoice.c only: the checkpoint keeps the published DFlash 2 names, but the KV injection, the selector and the draft vocabulary are as vibevoice.c implements them (docs/DFLASH.md).
  • CUDA only (the CPU path and Metal decode without the drafter). Greedy only.
  • Audio the corpus covered little (Mandarin, Russian) keeps fewer drafts; the runtime then falls back to plain steps and stays near plain speed.

License

MIT, like VibeVoice.

Configuration

Architecture
DFlash2DraftModel
Context length (tokens)
131,072
Layers
5
Hidden size
3,584
Feed-forward size
9,472
Attention heads
28
Key/value heads
4
Head dimension
128
Vocabulary size
152,064
RoPE base
1e+06
Model type
qwen3

Identity and Version

Repository
Ar4ikov/VibeVoice-ASR-DFlash2-Drafter
Publisher
Nikita Davidchuk
Task
Speech recognition
Modality
Audio
Library
vibevoice.c
Parameters
831M parameters
Languages
Not stated by the source
Revision
795e2a5df698ecf54b99bd629aca50758d062be9
First published
2026-09-25
Last updated
2026-09-26

Files and Weights

4 files, 1.7 GB in total. The weights are 1 file totalling 1.7 GB in safetensors.

Weights1 file · 1.7 GB
Configuration1 file · 979 B
Documentation1 file · 6.2 KB
Repository1 file · 1.5 KB
Every file
FileTypeSizeSHA-256
model.safetensorsWeights1.7 GB 68e8e7471c01
config.jsonConfiguration979 B —
README.mdDocumentation6.2 KB —
.gitattributesRepository1.5 KB —

License and Download

License
mit
Access
Open weights, no gate
Download size
1.7 GB
Download from Nikita Davidchuk

Released by Nikita Davidchuk through its official repository on Hugging Face. Read the license.

Built From

  • Derived from Ar4ikov/VibeVoice-ASR-AWQ-W4A16-ASYM

Memory Requirements

PrecisionWeights in memory
As published1.7 GB
16-bit1.7 GB
8-bit0.8 GB
4-bit0.4 GB

Weights only, from the published parameter count; the key-value cache and runtime add to this.

Questions About VibeVoice-ASR-DFlash2-Drafter

How much GPU memory does VibeVoice-ASR-DFlash2-Drafter need?

About 2 GB at 16-bit and 0.5 GB at 4-bit: the weights (831M parameters) plus a working margin. A long context needs more.

What is the cheapest GPU to run VibeVoice-ASR-DFlash2-Drafter on?

At 16-bit, 1x MI300X from $1.85 an hour; at 4-bit, 1x MI300X from $1.85 an hour, at the lowest on-demand prices the SAVRN Index lists.

Can I use VibeVoice-ASR-DFlash2-Drafter commercially?

Yes. VibeVoice-ASR-DFlash2-Drafter is released under MIT License. The MIT License is a short permissive license. It permits commercial use, modification and redistribution, provided the copyright notice and permission notice are included.

What is VibeVoice-ASR-DFlash2-Drafter's context length?

131,072 tokens, from the maximum position embeddings in its published configuration.

Similar Models

A DFlash 2 block drafter for VibeVoice-ASR (7B) (Ar4ikov/VibeVoice-ASR-AWQ-W4A16-ASYM), for speculative decoding in vibevoice.c. It proposes 8 tokens in one pass; vibevoice.c checks them in one pass of the model and keeps the ones the model agrees with, plus one of its own. the model's own one-token decode step, so the transcript with this drafter is byte-for-byte the transcript without it — words, timestamps, speakers. The drafter only changes how many passes it takes. One thing changes with --draft: vibevoice.c then attends with flashinfer (--attn auto picks it), because flashinfer checks several rows in one pass over the cache where the default fa2 walks it once per row. The transcript…

Open weights mit 832M parameters 131,072 tokens vibevoice.c

Model · Speech recognition

whisper-large-v3-turbo

OpenAI

Whisper is a state-of-the-art model for automatic speech recognition (ASR) and speech translation, proposed in the paper Robust Speech Recognition via Large-Scale Weak Supervision by Alec Radford et al. from OpenAI. Trained on >5M hours of labeled data, Whisper demonstrates a strong ability to generalise to many datasets and domains in a zero-shot setting. Whisper large-v3-turbo is a finetuned version of a pruned Whisper large-v3. In other words, it's the exact same model, except that the number of decoding layers have reduced from 32 to 4. As a result, the model is way faster, at the expense of a minor quality degradation. You can find more details about it in this GitHub discussion.…

Open weights mit 809M parameters transformers

Model · Speech recognition

whisper-large-v3-turbo-hindi

Hrushi Borhade

Fine-tuned openai/whisper-large-v3-turbo on Monsoon Hindi ASR data using LoRA (r=32, alpha=64). English capabilities preserved with <10% relative degradation across all benchmarks. LoRA's structural separation (frozen base + low-rank adapters) provides a natural safeguard against catastrophic forgetting.

Open weights 809M parameters transformers

Model · Speech recognition

whisper-heb-v8-multi

Voicenter

whisper-heb-v7-multi (Hebrew / English / Arabic / Russian / Yiddish with built-in language ID) plus speech-free negatives: the model has learned to answer with nothing on line noise, hold music, tones and silence instead of inventing words. Same architecture (Whisper large-v3-turbo, 809M), same languages, same usage; drop-in replacement for v7. On telephony audio Whisper fine-tunes hallucinate short phrases when there is no speech. v7 produced a transcript for 98% of real line-noise clips (27% of them "תודה רבה") and 46% of synthetic noise. v8 was warm-started from v7 and trained 5,000 steps on the v7 corpus plus 83,920 speech-free rows (real Voicenter line noise ×4, synthetic…

Open weights apache-2.0 809M parameters transformers

Model · Speech recognition

whisper-ja-anime-v0.3

Efwkjn

For usage instructions follow openai/whisper-large-v3-turbo. Note for faster-whisper vocab changes make model.ismultilingual and suppresstokens wrong. Please adjust the code as required if you want to use this with faster-whisper. Turbo finetune with japanese tokenizer. Full finetune trained 2^19 steps, batch size 64. Smaller vocab with ~1.6x bytes/token allows faster speed with 4 layers vs 2 layer distil (10% larger decoder). Benchmarks. Short form slightly behind v0.2 (trained less?) but long form much better. Also trained for lyrics but untested. Research supported with Cloud TPUs from Google's TPU Research Cloud (TRC)

Open weights 769M parameters

This model is a fine-tuned version of openai/whisper-medium on an unknown dataset. It achieves the following results on the evaluation set: The following hyperparameters were used during training: - learningrate: 0.0001 - trainbatchsize: 16 - evalbatchsize: 16 - gradientaccumulationsteps: 2 - totaltrainbatchsize: 32 - lrschedulertype: constantwithwarmup - lrschedulerwarmupsteps: 500 - numepochs: 100 - Transformers 5.0.0.dev0 - Pytorch 2.9.0+cu126 - Datasets 3.6.0 - Tokenizers 0.22.2

Open weights apache-2.0 764M parameters transformers