Downloads · 30 days
9
3% of all-time downloads
developerjeremylive/VibeVoice-1.5B-MLX-INT4-etheroi
VibeVoice-1.5B-MLX-INT4-etheroi is a text-to-speech model from developerjeremylive. Use it when you need text read aloud. It is set up for mlx. The card lists the license as mit.
INT4-quantized MLX bundle of the long-form Microsoft VibeVoice-1.5B for Apple Silicon, ready to load with the VibeVoiceTTS Swift module from soniqo/speech-swift.
Downloads · 30 days
9
3% of all-time downloads
All-time downloads
276
Public
Parameters
799M
2.2 GB on disk
Likes
1
Public
Click a slice to open those files.
.safetensors2.2 GB · 100%
How the weights are stored.
BF16506M · 63%
From the Hugging Face model README
INT4-quantized MLX bundle of the long-form Microsoft VibeVoice-1.5B for Apple Silicon, ready to load with the VibeVoiceTTS Swift module from soniqo/speech-swift.
The 1.5B variant is VibeVoice's flagship long-form model — designed for podcast-length dialogue, audiobook narration, and multi-speaker scenes. Up to 90 minutes of audio with up to 4 distinct voices and consistent voice identity throughout, in a single generation pass. For low-latency short utterances, see the smaller Realtime-0.5B INT4.
model.safetensors — INT4 group-quantized Qwen2 backbone (group_size=32, mode=affine), tokenizer + acoustic tokenizer + diffusion head + EOS classifier kept in source dtypequantization.json — per-layer manifest (378 quantized layers)config.json, preprocessor_config.json — copied from upstreamBundle size: 2.18 GB.
| Steps | Audio | Elapsed | RTF | RTFx |
|---|---|---|---|---|
| 10 | 26.67 s | 19.76 s | 0.74 | 1.35× |
200 max_tokens, 10 DPM-Solver steps, voice cache encoded from a 17-second clip.
1.5B requires the dual-encoder voice prefill path that's been added to
VibeVoiceTTS 0.2.0+.
import VibeVoiceTTS
let config = VibeVoiceTTSModel.Configuration.longForm1_5B
// .longForm1_5B preset bumps maxSpeechTokens to 4000 and cfgScale to 1.5
let tts = try await VibeVoiceTTSModel.fromPretrained(configuration: config)
try tts.loadVoice(from: "voices/narrator.safetensors")
let pcm = try await tts.generate(text: longTranscript) // up to ~90 min
The longForm1_5B preset uses tokenizer Qwen/Qwen2.5-1.5B. Override modelId if you want to point at this aufklarer bundle directly:
var config = VibeVoiceTTSModel.Configuration.longForm1_5B
config.modelId = "aufklarer/VibeVoice-1.5B-MLX-INT4"
audio vibevoice "Long paragraph ..." \
--model aufklarer/VibeVoice-1.5B-MLX-INT4 \
--tokenizer Qwen/Qwen2.5-1.5B \
--voice-cache voices/narrator.safetensors \
--max-tokens 4000 \
--output episode.wav
Multi-speaker dialogue uses one voice cache per speaker — swap them between calls or wire dialogue scripts through your app. MIT-licensed example caches: mzbac/vibevoice.swift/voice_cache. Mint your own with audio vibevoice-encode-voice reference.wav "transcript" -o voice.safetensors.
English and Chinese only. The Qwen2.5 tokenizer accepts other languages but training data is EN/ZH only — non-EN/ZH input produces unintelligible audio.
MIT, inherited from the upstream Microsoft VibeVoice repo. Note: Microsoft has occasionally restricted access to the upstream microsoft/VibeVoice-1.5B repository — this bundle is converted from the BF16 source under MIT and remains available here.
models/vibevoice/export/convert.py in soniqo/speech-models (private), --model microsoft/VibeVoice-1.5B --bits 4.
@misc{microsoft_vibevoice,
title = {VibeVoice: Long-form, Multi-speaker Text-to-Speech},
author = {Microsoft Research},
year = {2025},
url = {https://huggingface.co/microsoft/VibeVoice-1.5B}
}