Automatic Speech Recognition
GGUF
VibeVoice
ggml
ASR
quantization
cpu-inference
bitnet
conversational
Instructions to use P2Enjoy/VibeVoice-ASR-BitNet-slim with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use P2Enjoy/VibeVoice-ASR-BitNet-slim with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf P2Enjoy/VibeVoice-ASR-BitNet-slim # Run inference directly in the terminal: llama cli -hf P2Enjoy/VibeVoice-ASR-BitNet-slim
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf P2Enjoy/VibeVoice-ASR-BitNet-slim # Run inference directly in the terminal: llama cli -hf P2Enjoy/VibeVoice-ASR-BitNet-slim
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf P2Enjoy/VibeVoice-ASR-BitNet-slim # Run inference directly in the terminal: ./llama-cli -hf P2Enjoy/VibeVoice-ASR-BitNet-slim
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf P2Enjoy/VibeVoice-ASR-BitNet-slim # Run inference directly in the terminal: ./build/bin/llama-cli -hf P2Enjoy/VibeVoice-ASR-BitNet-slim
Use Docker
docker model run hf.co/P2Enjoy/VibeVoice-ASR-BitNet-slim
- LM Studio
- Jan
- Ollama
How to use P2Enjoy/VibeVoice-ASR-BitNet-slim with Ollama:
ollama run hf.co/P2Enjoy/VibeVoice-ASR-BitNet-slim
- Unsloth Studio
How to use P2Enjoy/VibeVoice-ASR-BitNet-slim with Unsloth Studio:
Install Unsloth Studio (macOS, Linux, WSL)
curl -fsSL https://unsloth.ai/install.sh | sh # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for P2Enjoy/VibeVoice-ASR-BitNet-slim to start chatting
Install Unsloth Studio (Windows)
irm https://unsloth.ai/install.ps1 | iex # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for P2Enjoy/VibeVoice-ASR-BitNet-slim to start chatting
Using HuggingFace Spaces for Unsloth
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for P2Enjoy/VibeVoice-ASR-BitNet-slim to start chatting
- Docker Model Runner
How to use P2Enjoy/VibeVoice-ASR-BitNet-slim with Docker Model Runner:
docker model run hf.co/P2Enjoy/VibeVoice-ASR-BitNet-slim
- Lemonade
How to use P2Enjoy/VibeVoice-ASR-BitNet-slim with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull P2Enjoy/VibeVoice-ASR-BitNet-slim
Run and chat with the model
lemonade run user.VibeVoice-ASR-BitNet-slim-{{QUANT_TAG}}List all available models
lemonade list
- Atomic Chat
File size: 4,846 Bytes
443b385 aca7ef1 443b385 322679d 443b385 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | ---
language:
- en
- fr
- it
- pt
- es
- de
license: mit
pipeline_tag: automatic-speech-recognition
tags:
- ASR
- quantization
- cpu-inference
- gguf
- bitnet
library_name: ggml
base_model: microsoft/VibeVoice-ASR-BitNet
---
# VibeVoice-ASR-BitNet-slim
A repack of [microsoft/VibeVoice-ASR-BitNet](https://huggingface.co/microsoft/VibeVoice-ASR-BitNet)
with a redundant tensor removed. **No retraining, no re-quantisation of the ternary
weights** — the transformer body is byte-for-byte the original.
| | LM | VAE | Total |
|:--|--:|--:|--:|
| microsoft/VibeVoice-ASR-BitNet | 992.9 MB | 703.1 MB | 1.70 GB |
| this repo | **526.1 MB** | 703.1 MB | **1.23 GB** |
## What changed
The released LM GGUF carries `output.weight` as **F16, 466.7 MB — 47% of the file**,
next to `token_embd.weight` already stored as Q6_K at 191.4 MB.
In the source checkpoint `tie_word_embeddings` is `true`, and `lm_head.weight` is
**bit-identical** to `embed_tokens.weight`. So the F16 tensor is the same matrix a
second time, at higher precision than the copy the file already holds.
llama.cpp loads `LLM_TENSOR_OUTPUT` as `TENSOR_NOT_REQUIRED` and falls back to
`token_embd` when it is absent, so the tensor can simply be dropped. The output
projection then runs through the Q6_K copy instead of the F16 one — the only
numerical change in this repack.
Removing it also takes 466.7 MB off the memory read on **every decoded token**, which
was roughly half the LM's per-token bandwidth.
## What it costs
Not nothing. Moving the output projection from F16 to Q6_K is measurable.
FLEURS, 24 clips per language, greedy decoding, 2 threads, numbers spelled out on
both sides before scoring:
| Language | microsoft/VibeVoice-ASR-BitNet | this repo | Δ |
|:--|--:|--:|--:|
| Spanish | 6.47 | 6.47 | +0.00 |
| English | 8.23 | 8.58 | +0.34 |
| Portuguese | 8.90 | 8.57 | −0.33 |
| Italian | 9.67 | 9.52 | −0.16 |
| German | 14.63 | 14.98 | +0.35 |
| French | 34.08 | 35.88 | +1.81 |
| **corpus** | **14.31** | **14.69** | **+0.38** |
So: **about +0.4 WER for −47% LM size**. Two languages improve, one is unchanged,
three get worse. At ~400 reference words per language a ±0.3 swing is inside the
noise; French's +1.81 is roughly seven word errors and sits at the edge of it.
Take the trade if size or decode bandwidth matters to you, and don't if you need
every last point of accuracy.
### Bit budget
| Component | Type | Weights | MB | bits/wt |
|:--|:--|--:|--:|--:|
| transformer body | I2_S | 1,310,195,712 | 327.6 | 2.00 |
| token embedding | Q6_K | 233,373,696 | 191.4 | 6.56 |
| norms / biases | F32 | 144,896 | 0.6 | 32.00 |
| **total** | | 1,543,714,304 | **519.6** | **2.69** |
The released file is 4.44 bits/weight overall; this one is 2.69. Note that the
ternary body is packed at exactly **2.000** bits/weight, not log₂3 = 1.585 — I2_S
stores four ternary values per byte and leaves one of four codes unused, which is
68 MB of padding (20.8% of the body).
## Usage
Drop-in for the released model — same runtime, same flags:
```bash
./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
```
## Languages
VibeVoice-ASR was trained on **en, zh, fr, it, ko, pt, vi**. Among EU official
languages that means English, French, Italian and Portuguese are in-distribution;
Spanish and German are not in the training mix but generalise usably. The other EU
languages degrade sharply and this repack does not change that — it is a packaging
fix, not a capability change.
## Speed
Not covered here by design. This card documents the **model artifact** — what
changed in the weights and what it costs in accuracy. CPU inference speed is a
property of the runtime, and the fork this model ships with carries substantial
kernel work (AVX-512/VNNI dispatch, a register-tiled INT8 GEMM, vectorised
quantisation epilogues — RTF well under real time on 4 modest cores). The measured
speed tables, the per-stage breakdowns, and the scripts that regenerate them live in
the GitHub README:
➡️ **[martinobettucci/VibeASR-bitnet.cpp](https://github.com/martinobettucci/VibeASR-bitnet.cpp)** — "CPU optimisation on AVX-512"
The WER tables above were produced by that repo's benchmark harness
(`bench/run_asr.py`, methodology in `bench/README.md`); the harness documentation is
the reference for how they were scored (FLEURS slices, corpus-level WER, digit runs
spelled out in the clip's language on both sides).
## Provenance
Produced with `tools/requant_lm_head.cpp --drop` from
[martinobettucci/VibeASR-bitnet.cpp](https://github.com/martinobettucci/VibeASR-bitnet.cpp),
branch `claude/asr-cpu-optimization-cztnh9`. The VAE encoder and tokenizer files are
copied unmodified from the upstream repo.
Licensed MIT, as upstream.
|