VibeVoice-ASR AWQ W4A16 ASYM
Activation-aware INT4 quantization of microsoft/VibeVoice-ASR, revision d0c9efdb8d614685062c04425d91e01b6f37d944.
Weights: 17.348 GB → 7.000 GB (2.48× smaller). Sizes are decimal GB of safetensors, including every retained speech component and the language model.
Format and scope
- Genuine activation-aware AWQ scale search using llm-compressor; not RTN or a conversion of an already quantized checkpoint.
- All 196 Qwen2 attention/MLP projections: 4-bit asymmetric, group size 128, 16-bit activations.
- 40 grid points with
duo_scaling="both"; seed 42. - Embeddings, LM head, speech encoders/connectors, norms, and biases retained in BF16. AWQ group scales stored in FP16 with an exact representability check.
- Original
model.acoustic_tokenizer.decoder.*removed: this audio synthesis decoder is unused by the ASR path. Saves 687.4 MB. This is an ASR-only checkpoint; audio synthesis/codec decoding is not provided. - The calibrated compressed-tensors checkpoint is losslessly repacked into standard AWQ GEMM (
qweight,qzeros,scales). Every integer code round-trips exactly and every scale value is preserved. There is no second quantization pass.
The preserved BF16 components account for much of the remaining size. They were retained to protect transcription quality. This is not a claim of the smallest theoretically possible 4-bit model.
Calibration
256 examples, maximum 2048 tokens: 64 real LibriSpeech utterances with speech embeddings and structured transcript continuations, plus 192 Ultrachat conversations (HuggingFaceH4/ultrachat_200k, train_sft, shuffled with seed 42). LibriSpeech source: hf-internal-testing/librispeech_asr_dummy, clean, validation entries 0–63. Speech computation uses FP32 with BF16 checkpoint weights and deterministic acoustic latent means. The Qwen2 decoder is calibrated through inputs_embeds, so real speech embeddings are included.
Validation
Nine held-out LibriSpeech utterances (entries 64–72; 135 reference words), excluded from calibration:
| Path | Word errors | WER |
|---|---|---|
| Original BF16 decoder + deterministic speech embeddings, PyTorch | 16 | 11.85% |
| Final AWQ files independently unpacked for PyTorch generation | 14 | 10.37% |
Final AWQ files, native INT4 vibevoice.c, audio-to-JSON |
14 | 10.37% |
This is a small English smoke/regression check, not a representative quality benchmark. Multilingual accuracy, long-form timestamps, and diarization quality after quantization have not been comprehensively measured. See evaluation.json for exact references and outputs, and compression_report.json for storage/packing checks. The PyTorch verification unpacks weights to BF16 and therefore does not measure native INT4 VRAM savings.
Usage
Download the complete repository:
from huggingface_hub import snapshot_download
snapshot_download("Ar4ikov/VibeVoice-ASR-AWQ-W4A16-ASYM", local_dir="VibeVoice-ASR-AWQ-W4A16-ASYM")
Tested with vibevoice.c's AWQ-capable runtime:
vv_cli --model ./VibeVoice-ASR-AWQ-W4A16-ASYM --audio recording.wav --output transcript.json
This custom architecture is not supported by plain AutoModelForCausalLM without VibeVoice integration. Standard AWQ GEMM is also intended for compatible VibeVoice/vLLM integrations, but vLLM deployment was not tested for this release. The acoustic decoder was pruned, so integrations must tolerate its absent unused weights.
Canonical ASR prompt (the audio placeholders are replaced by speech embeddings):
<|im_start|>system
You are a helpful assistant that transcribes audio input into text output in JSON format.<|im_end|>
<|im_start|>user
<|object_ref_start|>[<|box_start|> repeated ceil(audio_samples/3200) times]<|object_ref_end|>
This is a {duration:.2f} seconds audio, please transcribe it with these keys: Start time, End time, Speaker ID, Content<|im_end|>
Use the original VibeVoice processor for exact whitespace and audio preprocessing. Do not append an assistant generation prompt: the model generates the assistant header itself.
Reproduction
recipe.yaml is the actual compression recipe. reproduce/ contains preparation, quantization, exact AWQ repacking, and verification scripts. Set VV_QUANT_WORKDIR, VIBEVOICE_SOURCE (Microsoft VibeVoice source checkout), and VV_CLI (AWQ-capable runtime binary). Run data preparation and original weight download first, then model preparation, quantization, export, and both evaluation scripts. Source weights must be from the revision recorded above. Preparation/PyTorch comparison used torch 2.6.0+cu124 and transformers 4.51.3; the quantization environment is recorded in quantization_environment.json. GPU hardware: two NVIDIA RTX 3090 24 GB cards. Processor/model registration compatibility patches are explicit in the preparation script.
License: MIT, inherited from the base model. No audio calibration files or HF credentials are included.