Downloads · 30 days
31
40% of all-time downloads
Ar4ikov/VibeVoice-ASR-Streaming-7B-AWQ-W4A16-ASYM
VibeVoice-ASR-Streaming-7B-AWQ-W4A16-ASYM is a automatic speech recognition model from Ar4ikov. Use it when you need speech turned into text. It is set up for transformers. The card lists the license as mit.
Activation-aware INT4 quantization of microsoft/VibeVoice-ASR-Streaming-7B, revision 60d858b518b4e19d404af3737f848fc185b30177: the streaming VibeVoice ASR model, which writes text for every 2.93 s of audio as it arriv…
Downloads · 30 days
31
40% of all-time downloads
All-time downloads
77
Public
Parameters
8.3B
7 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors7 GB · 100%
How the weights are stored.
I326.5B · 78%
From the Hugging Face model README
Activation-aware INT4 quantization of microsoft/VibeVoice-ASR-Streaming-7B, revision 60d858b518b4e19d404af3737f848fc185b30177: the streaming VibeVoice ASR model, which writes text for every 2.93 s of audio as it arrives, with 0.53 s of lookahead.
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.
Part of the VibeVoice-ASR Quantized collection, built the same way as Ar4ikov/VibeVoice-ASR-AWQ-W4A16-ASYM.
duo_scaling="both"; seed 42.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.qweight, qzeros, scales). Every integer code round-trips exactly and every scale value is preserved. There is no second quantization pass.preprocessor_config.json are the base checkpoint's, unchanged (<|text_chunk_end|>, chunk_frames 22, lookahead_frames 4, normalize_audio false).256 sequences, maximum 2048 rows each, calibrated through inputs_embeds so real speech embeddings are in the data:
<|object_ref_start|> + speech features + <|object_ref_end|>, the BF16 model's own greedy chunk text, and <|text_chunk_end|> (about 945 rows per session). Audio: LibriSpeech dev-clean, 32 speakers, streams of 15–150 s built from consecutive utterances of one chapter; about a third alternate between two speakers, so speaker turns appear in the data.HuggingFaceH4/ultrachat_200k, train_sft, shuffled with seed 42) for the generic language-model path.Speech features come from the BF16 checkpoint's encoders run in FP32 with the deterministic acoustic latent (the mean), each window encoded on its own exactly as upstream streaming_generate does.
12 held-out streams, 9.7 minutes, 1579 reference words, from the 8 LibriSpeech dev-clean speakers excluded from calibration (4 of the streams alternate between two speakers):
| Path | Word errors | WER |
|---|---|---|
| Original BF16, PyTorch, upstream streaming protocol | 43 | 2.72% |
| Final AWQ files independently unpacked for PyTorch | 39 | 2.47% |
Original BF16, vibevoice.c --quant none | 44 | 2.79% |
Final AWQ files, native INT4 vibevoice.c | 40 | 2.53% |
Speaker N: labels and punctuation are removed before scoring. This is an English read-speech regression check, not a representative quality benchmark: multilingual accuracy, noisy audio and diarization quality after quantization have not been measured. evaluation.json has every reference and output.
Native W4A16 kernels (no dequantization to FP16), whole file streamed chunk by chunk:
| Audio | AWQ, --attn flashinfer (default for this model) | AWQ, --attn fa2 | BF16 --quant none |
|---|---|---|---|
| 11 s | RTF 0.035, 152 tok/s | RTF 0.035, 152 tok/s | RTF 0.071, 56 tok/s |
| 30 s | RTF 0.036, 151 tok/s | RTF 0.036, 150 tok/s | RTF 0.076, 56 tok/s |
| 120 s | RTF 0.034, 149 tok/s | RTF 0.035, 143 tok/s | RTF 0.074, 56 tok/s |
Language-model layers on the GPU: 3306 MB (AWQ) vs 12446 MB (BF16).
from huggingface_hub import snapshot_download
snapshot_download("Ar4ikov/VibeVoice-ASR-Streaming-7B-AWQ-W4A16-ASYM", local_dir="VibeVoice-ASR-Streaming-7B-AWQ-W4A16-ASYM")
With vibevoice.c:
vv_cli --model ./VibeVoice-ASR-Streaming-7B-AWQ-W4A16-ASYM --audio talk.wav --output transcript.json # prints chunks as they are ready
vv_cli mic --model ./VibeVoice-ASR-Streaming-7B-AWQ-W4A16-ASYM # live microphone
vv_cli serve --model ./VibeVoice-ASR-Streaming-7B-AWQ-W4A16-ASYM --slots 8 # SSE stream=true and WebSocket /v1/audio/stream
This custom architecture is not supported by plain AutoModelForCausalLM without VibeVoice integration, and vLLM deployment was not tested. The acoustic decoder was pruned, so integrations must tolerate its absent unused weights.
Audio is 24 kHz mono and is not loudness-normalized. The prompt is plain text, tokenized without special tokens:
You are a helpful assistant that transcribes audio input into text output. Please transcribe the following audios streamingly with these keys: speaker, content\n
Then, for every window of 22 + 4 frames (83200 samples, advancing by 70400; the last one zero-padded), encoded on its own: prefill <|object_ref_start|>, the 26 speech feature rows, <|object_ref_end|>; decode greedily until <|text_chunk_end|> or <|endoftext|>; feed <|text_chunk_end|>. EOS does not end the session. Speaker turns appear inline as \n Speaker N:.
recipe.yaml is the actual compression recipe. reproduce/ has the whole pipeline (pipeline.sh): data preparation, checkpoint split and calibration sessions (prepare_model.py, stream_ref.py), quantization, exact AWQ repacking, both evaluations and this card. Set VV_QUANT_WORKDIR, VV_QUANT_DATA, VIBEVOICE_SOURCE (Microsoft VibeVoice source checkout) and VV_CLI. Preparation and the PyTorch comparison used torch 2.6.0+cu124 and transformers 4.51.3; the quantization environment is in quantization_environment.json. One NVIDIA RTX 3090 24 GB.
License: MIT, inherited from the base model. No audio or HF credentials are included.