Downloads · 30 days
200
13% of all-time downloads
P2Enjoy/VibeVoice-ASR-BitNet-slim
VibeVoice-ASR-BitNet-slim is a automatic speech recognition model from P2Enjoy. Use it when you need speech turned into text. It is set up for ggml. The card lists the license as mit.
A repack of microsoft/VibeVoice-ASR-BitNet with a redundant tensor removed. No retraining; the ternary transformer body is byte-for-byte the original.
Downloads · 30 days
200
13% of all-time downloads
All-time downloads
1.5K
Public
Repo size
1.2 GB
Likes
0
Public
Click a slice to open those files.
.gguf1.2 GB · 99%
From the Hugging Face model README
A repack of microsoft/VibeVoice-ASR-BitNet with a redundant tensor removed. No retraining; the ternary transformer body is byte-for-byte the original.
| LM | VAE | Total | bits/weight (LM) | |
|---|---|---|---|---|
| microsoft/VibeVoice-ASR-BitNet | 992.9 MB | 703.1 MB | 1.70 GB | 4.44 |
| this repo | 526.1 MB | 703.1 MB | 1.23 GB | 2.69 |
Runtime, kernels and speed engineering live in the VibeASR.cpp fork and are not repeated here. This card covers the weights: what changed, how accurate they are, and where they break.
The released LM GGUF stores output.weight as F16 (466.7 MB — 47% of the file) next
to token_embd.weight as Q6_K. In the source checkpoint tie_word_embeddings is
true and the two matrices are bit-identical, so the F16 tensor is the same matrix
twice at higher precision. llama.cpp loads LLM_TENSOR_OUTPUT as optional and falls
back to token_embd, so the duplicate is simply dropped: the output projection runs
through the Q6_K copy. That is the only numerical change, and it also removes
466.7 MB from every decoded token's memory traffic.
Verified twice on independent suites: +0.30 and +0.32 corpus WER versus the original weights, with per-language deltas scattering in both directions — i.e. no measurable accuracy cost for a 27% size reduction.
Greedy decoding, corpus-level WER with digits and years spelled out on both sides. Two regimes, because they rank engines differently.
| Engine | WER |
|---|---|
| whisper.cpp large-v3-turbo q5_0 | 2.39 |
| whisper.cpp small q5_1 | 5.79 |
| microsoft original weights | 8.41 |
| this repo | 8.73 |
On short clips whisper is more accurate than this model, and whisper-small is also faster. If short-clip transcription accuracy is what you need, use whisper.
Per language (100-clip suite, this repo vs the original weights — the comparison this card is actually about):
| de | en | es | fr | fr-MLS | it | pt | all | |
|---|---|---|---|---|---|---|---|---|
| microsoft original | 16.7 | 6.6 | 5.8 | 32.7 | 21.6 | 8.3 | 10.8 | 15.75 |
| this repo | 15.6 | 6.6 | 7.1 | 33.6 | 21.9 | 8.6 | 11.1 | 16.07 |
(The absolute level differs from the table above because that one uses a 14-item two-regime suite; both compare engines measured in the same session.)
| Engine | mode | 7.7 min | 13.9 min |
|---|---|---|---|
| whisper.cpp small q5_1 | native | 5.10 | 4.78 |
| this repo | 60 s chunks | 5.67 | 4.70 |
| microsoft original weights | 60 s chunks | 5.61 | 5.38 |
| whisper.cpp large-v3-turbo q5_0 | native | 29.00 | 39.69 |
On genuine long-form this model is level with whisper-small — each wins one talk — and roughly 5 WER against a 2.4 on short clips, so the gap to whisper closes substantially as recordings get longer. whisper-turbo collapses into a repetition loop on both talks under whisper.cpp's default flags (its reference implementation has temperature-fallback logic that suppresses this).
Measured on real continuous speech (distil-whisper/tedlium-long-form), not on
concatenated short clips — splicing independent utterances produces speaker jumps
that break every engine and measure nothing.
{Start, End, Speaker, Content}
format, but that prompt targets the 7B checkpoint and this 1.5B model emits no
speaker turns and transcribes ~1.4 WER worse when asked for it. The CLI rejects
it. There is no diarization here.Drop-in for the released model — same runtime, same flags:
./build/bin/asr_infer \
--vae-model vibeasr-vae-encoder-i8_s.gguf \
--lm-model vibeasr-lm-i2_s-tied.gguf \
--audio input.wav -t 4 --greedy
Domain terms can be biased at decode time with --hotwords a,b,c --hotword-boost 5
(token-trie logit boosting): measured on FLEURS-French with oracle terms it recovers
36.0 → 31.9 WER, and feeding the wrong clip's terms at the same strength does
not degrade the baseline. λ=8 is past the stability knee.
Produced with tools/requant_lm_head.cpp --drop. The VAE encoder and tokenizer files
are copied unmodified from upstream. Licensed MIT, as upstream.