Instructions to use schift-io/vibevoice7b-schift-quanted-mixed 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 schift-io/vibevoice7b-schift-quanted-mixed 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 schift-io/vibevoice7b-schift-quanted-mixed # Run inference directly in the terminal: llama cli -hf schift-io/vibevoice7b-schift-quanted-mixed
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf schift-io/vibevoice7b-schift-quanted-mixed # Run inference directly in the terminal: llama cli -hf schift-io/vibevoice7b-schift-quanted-mixed
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 schift-io/vibevoice7b-schift-quanted-mixed # Run inference directly in the terminal: ./llama-cli -hf schift-io/vibevoice7b-schift-quanted-mixed
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 schift-io/vibevoice7b-schift-quanted-mixed # Run inference directly in the terminal: ./build/bin/llama-cli -hf schift-io/vibevoice7b-schift-quanted-mixed
Use Docker
docker model run hf.co/schift-io/vibevoice7b-schift-quanted-mixed
- LM Studio
- Jan
- Ollama
How to use schift-io/vibevoice7b-schift-quanted-mixed with Ollama:
ollama run hf.co/schift-io/vibevoice7b-schift-quanted-mixed
- Unsloth Desktop
- Pi
How to use schift-io/vibevoice7b-schift-quanted-mixed with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf schift-io/vibevoice7b-schift-quanted-mixed
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "schift-io/vibevoice7b-schift-quanted-mixed" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use schift-io/vibevoice7b-schift-quanted-mixed with Docker Model Runner:
docker model run hf.co/schift-io/vibevoice7b-schift-quanted-mixed
- Lemonade
How to use schift-io/vibevoice7b-schift-quanted-mixed with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull schift-io/vibevoice7b-schift-quanted-mixed
Run and chat with the model
lemonade run user.vibevoice7b-schift-quanted-mixed-{{QUANT_TAG}}List all available models
lemonade list
- Hermes Agent
How to use schift-io/vibevoice7b-schift-quanted-mixed with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf schift-io/vibevoice7b-schift-quanted-mixed
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default schift-io/vibevoice7b-schift-quanted-mixed
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use schift-io/vibevoice7b-schift-quanted-mixed with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf schift-io/vibevoice7b-schift-quanted-mixed
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "schift-io/vibevoice7b-schift-quanted-mixed" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
VibeVoice-ASR-Streaming-7B โ Mixed-Precision Quantized (6GB, self-contained)
Experimental artifact, but self-contained: this repo alone is enough to run real speech-to-text with speaker diarization โ no separate download of microsoft/VibeVoice-ASR-Streaming-7B is needed. It bundles:
vibevoice7b-schift-quanted-mixed.ggufโ the Qwen2 text decoder + lm_head, mixed-precision quantized to 6GB (was ~14GB at bf16).audio_components.safetensors(2.1GB, bf16) โ the acoustic tokenizer, semantic tokenizer, and both connectors, unmodified from the original checkpoint.config.json+ tokenizer files โ everythingload_full_model.pyneeds to reconstruct the fullVibeVoiceASRForConditionalGenerationand callmodel.streaming_generate(...)directly.
Total download: ~8.4GB, vs. ~17GB for the original bf16 checkpoint.
What this is
- The decoder (
language_model+lm_head) was extracted from the official 7B checkpoint and verified to match a vanillaQwen2ForCausalLMexactly (0 missing / 0 unexpected keys). - Quantized with
llama.cpp, mixed per-tensor-kind precision guided by a Korean imatrix calibration built from the model's own JSON transcription schema:ffn_gate/ffn_upโ Q8_0attn_k/attn_qโ Q4_Kattn_v/attn_output/ffn_downโ IQ3_XXS- token embedding / output โ Q8_0
- Result: 6.02 GB decoder (vs. ~14GB at bf16), perplexity within noise of full-precision f16 on the calibration set (318.3 vs. 318.6).
- Audio components (tokenizers + connectors) are kept at bf16, unquantized โ they're small (2.1GB) and this repo doesn't touch them beyond re-packaging.
Real-audio validation (not just perplexity)
Run end-to-end through model.streaming_generate() on 20 real Korean broadcast-panel-discussion
utterances (AIHub, multi-speaker, continuous conversational context, character-level CER with
speaker-label tokens stripped):
| CER | |
|---|---|
| Original bf16 decoder | 19.39% |
| This GGUF (6GB, mixed precision) | 19.27% |
Essentially identical โ within sample noise (n=20). Quantization did not measurably hurt recognition quality on this test.
Speaker diarization validation
The CER numbers above strip Speaker N: labels before scoring โ they measure content
transcription only, not diarization. Diarization was measured separately with cpCER
(concatenated minimum-permutation CER, the CHiME6/NOTSOFAR standard): text is grouped by
speaker label (hypothesis vs. ground-truth), and the hypothesis-speakerโground-truth-speaker
mapping is searched over all permutations to find the one minimizing total CER (label IDs
are arbitrary, so this permutation-invariant matching is required).
| cpCER (diarization + transcription combined) | Speaker-count mismatches | |
|---|---|---|
| Original bf16 decoder | 37.14% | 10/20 |
| This GGUF (6GB, mixed precision) | 34.41% | 10/20 |
Quantization does not measurably hurt diarization either โ GGUF and original are on par (sample-level variance is large but there's no systematic direction).
โ ๏ธ The base VibeVoice-7B checkpoint's own diarization is imperfect, independent of this quantization: on 10 of 20 samples it merges or splits the true speaker count (e.g. reports 2 speakers when there were 3). Samples where the speaker count is correct score 5-20% cpCER; samples where it's wrong jump to 28-137%. This is a base-model characteristic this repo inherits unchanged, not something introduced by quantization.
Usage
pip install torch transformers safetensors gguf
pip install git+https://github.com/microsoft/VibeVoice.git # model code (not weights)
from huggingface_hub import snapshot_download
repo_dir = snapshot_download("schift-io/vibevoice7b-schift-quanted-mixed")
from load_full_model import load_full_model # ships in this repo
model, processor = load_full_model(repo_dir)
# model.streaming_generate(...) โ see the VibeVoice repo's
# demo/vibevoice_asr_streaming_inference_from_file.py for the full call pattern
load_full_model.py builds the architecture from config.json, loads the audio components
from audio_components.safetensors, dequantizes the GGUF decoder in pure Python
(gguf_to_qwen2model.py, via the gguf PyPI package โ no llama.cpp binary needed), and
wires it all into one ready-to-run model. No network access to the original checkpoint
is required.
What this is not
- Not officially supported by Microsoft. Independent experiment, shared as-is.
- Not a speaker-diarization/head-split architecture โ that work is separate, unpublished, and still experimental (untrained/unvalidated).
- No further quantization variants (Q4_K_M, IQ2_XXS, etc. were tried and were worse; this mixed config was the best found).
License
MIT, inherited from the base model (microsoft/VibeVoice-ASR-Streaming-7B). See LICENSE.
- Downloads last month
- 318
We're not able to determine the quantization variants.
Model tree for schift-io/vibevoice7b-schift-quanted-mixed
Base model
microsoft/VibeVoice-ASR-Streaming-7B