VibeVoice
अंग्रेजी संस्करण को 2026-05-10 को मॉडल भाषा समर्थन और voice cloning workflows के साथ अपडेट किया गया है; अनुवाद बाद में किया जाएगा। नवीनतम सामग्री के लिए अंग्रेजी संस्करण देखें।
Microsoft VibeVoice अंग्रेज़ी और चीनी के लिए एक लंबे-रूप, बहु-वक्ता टेक्स्ट-टू-स्पीच मॉडल है। छोटे उच्चारणों के TTS के विपरीत, यह एक ही पास में पॉडकास्ट-लंबाई के संवाद, ऑडियोबुक नैरेशन, और बहु-वक्ता दृश्य तैयार करने के लिए डिज़ाइन किया गया है — 90 मिनट तक, 4 अलग-अलग वॉयस तक, और पूरे आउटपुट में एक समान पहचान बनाए रखते हुए। दो वेरिएंट उपलब्ध हैं: कम-लेटेंसी स्ट्रीमिंग के लिए Realtime-0.5B, और लंबे-रूप फ्लैगशिप क्वालिटी के लिए 1.5B।
यह क्या है
- एक पास में लंबे-रूप — पूरे आउटपुट में एक समान वॉयस के साथ 90 मिनट तक का ऑडियो; कोई वाक्य-दर-वाक्य हैंडऑफ़ नहीं
- बहु-वक्ता संवाद — एक साथ 4 अलग-अलग वक्ता, प्रत्येक अपने voice cache से कंडीशन्ड
- अंग्रेज़ी + चीनी — प्रशिक्षण ऑडियो डेटा केवल EN/ZH है; अन्य भाषाएँ समर्थित नहीं हैं (टोकनाइज़र स्वीकार करता है लेकिन आउटपुट समझ में नहीं आता)
- 24 kHz मोनो आउटपुट — Float32 PCM,
AudioCommon.WAVWriterऔरस्ट्रीमिंगAudioPlayerके लिए सीधे उपयोग योग्य - MIT लाइसेंस — मॉडल वज़न और हमारा Swift पोर्ट दोनों MIT हैं; INT4 क्वांटाइज़्ड व्युत्पन्न अनुमत हैं
आर्किटेक्चर
चार सहयोगी घटक एक बार में एक 7.5 Hz लेटेंट के हिसाब से ऑडियो उत्पन्न करते हैं:
| घटक | विवरण |
|---|---|
| Split Qwen2 backbone | 24-layer Qwen2.5 decoder (896 hidden, GQA 14/2 for Realtime-0.5B). The model is split: the lower 4 layers form a text LM, the upper 20 layers run as the TTS LM. Text windows (5 tokens at a time) flow through both; generated speech latents flow only through the TTS LM. |
| σ-VAE acoustic tokenizer | स्ट्रीमिंग conv stack that encodes 24 kHz audio to a 64-dim latent at 7.5 Hz (3200× temporal downsample) and decodes latents back to waveform. Used for both voice-cache creation and final audio decode. |
| Diffusion head | Small 4-layer DDPM head with adaLN modulation. Samples each speech latent via 20-step DPM-Solver with classifier-free guidance (cfg = 1.3 default for Realtime-0.5B, 1.5 for 1.5B). |
| EOS classifier | Per-step binary classifier on the TTS LM's last hidden state. When sigmoid probability exceeds 0.5, generation stops. |
voice-cache के माध्यम से वॉयस क्लोनिंग
जनरेशन के समय वक्ता की पहचान संदर्भ वेवफ़ॉर्म से नहीं आती। बल्कि, प्रत्येक वॉयस एक पूर्व-गणना किए .safetensors voice cache के रूप में आती है जिसमें किसी विशेष वक्ता के लिए कंडीशनिंग KV कैश और हिडन स्टेट होते हैं — संदर्भ ऑडियो को एनकोडर पथ से ऑफ़लाइन गुज़ारकर बनाया जाता है। रनटाइम पर voice cache लोड करना तत्काल है; एक मॉडल इंस्टेंस जनरेशनों के बीच कम लागत में वॉयस बदल सकता है।
उदाहरण voice caches (MIT-लाइसेंसित): mzbac/vibevoice.swift/voice_cache — Carter, Davis, Emma, Frank, Grace, Mike और भारतीय एक्सेंट वाला Samuel सहित 7 अंग्रेज़ी वॉयस।
मॉडल
| बंडल | क्वांटाइज़ेशन | साइज़ | HuggingFace |
|---|---|---|---|
| Realtime-0.5B | BF16 (source) | ~1 GB | microsoft/VibeVoice-Realtime-0.5B |
| Realtime-0.5B INT4 | Qwen2 INT4, tokenizer + diffusion FP16 | ~350 MB | aufklarer/VibeVoice-Realtime-0.5B-MLX-INT4 |
| Realtime-0.5B INT8 | Qwen2 INT8 | ~570 MB | aufklarer/VibeVoice-Realtime-0.5B-MLX-INT8 |
| 1.5B long-form | BF16 (source) | ~3 GB | microsoft/VibeVoice-1.5B |
| 1.5B INT4 (production) | Qwen2 INT4 + dual encoders | ~1 GB | aufklarer/VibeVoice-1.5B-MLX-INT4 |
क्वांटाइज़ेशन MLX ग्रुप-वार एफ़ाइन क्वांट (32-ग्रुप) से उत्पन्न होता है। एम्बेडिंग्स, नॉर्म्स, acoustic-tokenizer कॉन्वोल्यूशन और EOS क्लासिफ़ायर अपने स्रोत dtype में रहते हैं।
त्वरित शुरुआत
import VibeVoiceTTS
let tts = try await VibeVoiceTTSModel.fromPretrained()
try tts.loadVoice(from: "/path/to/voice_cache/en-Mike_man.safetensors")
let pcm = try await tts.generate(text: "Hello world.")
// pcm: [Float] at 24 kHz mono
Long-form 1.5B (different API)
1.5B has a different architecture (unified Qwen2 LM, dual encoders, LM token sampling) so it ships as a separate class — VibeVoice15BTTSModel. Reference audio + text go in a single call:
let tts = try await VibeVoice15BTTSModel.fromPretrained()
let pcm = try await tts.generate(
text: "Long English script.",
referenceAudio: refSamples, // [Float] mono speech, any rate
referenceTranscript: "",
sampleRate: 24000
)
No voice cache needed — the model encodes the reference audio through both acoustic_tokenizer (64-dim) and semantic_tokenizer (128-dim, ASR-trained) and sums them at audio prompt positions. Generation runs LM token sampling branched on <speech_diffusion> / <speech_end> / text — diffuses an acoustic latent only when the LM emits the speech token.
ASR-verified on M2 Max INT4 (RTFx 1.48): for input "Hello world. This is the one point five billion VibeVoice variant of the Microsoft text to speech model.", Nemotron transcribed the output as "hello world, this is the one point five billion via voice variant of the microsoft texas speech model" — every content word matched, only acoustic substitutions are VibeVoice → via voice and text to → texas.
जनरेशन के बीच वॉयस बदलें
try tts.loadVoice(from: "en-Mike_man.safetensors")
let a = try await tts.generate(text: "First speaker line.")
try tts.loadVoice(from: "en-Emma_woman.safetensors")
let b = try await tts.generate(text: "Second speaker line.")
CLI
speech vibevoice "Hello world." \
--voice-cache voice_cache/en-Mike_man.safetensors \
--output hello.wav
# लंबे-रूप 1.5B
speech vibevoice "Long paragraph ..." \
--long-form \
--reference-audio reference_speech.wav \
--reference-transcript "exact transcript of the reference" \
--max-tokens 500 --steps 20 \
--output episode.wav
फ़्लैग: --steps (DPM-Solver स्टेप्स), --cfg (गाइडेंस), --model / --tokenizer HuggingFace IDs को ओवरराइड करने के लिए, --long-form 1.5B प्रीसेट पर स्विच के लिए, --verbose टाइमिंग के लिए।
speech-swift TTS मॉड्यूल्स में से चुनाव
| Kokoro-82M | Qwen3-TTS | CosyVoice3 | VibeVoice Realtime | VibeVoice 1.5B | |
|---|---|---|---|---|---|
| पैरामीटर | 82M | 7B | 7B | 500M | 1.5B |
| बैकएंड | CoreML (ANE) | MLX | MLX | MLX | MLX |
| भाषाएँ | 8 | 10+ | 10+ | EN/ZH | EN/ZH |
| वॉयस क्लोनिंग | तय प्रीसेट | ICL संदर्भ | ज़ीरो-शॉट संदर्भ | voice cache | voice cache |
| लंबे-रूप | छोटा/मध्यम | स्ट्रीमिंग | स्ट्रीमिंग | स्ट्रीमिंग | 90 मिनट तक / 4 वक्ता |
…आपको अंग्रेज़ी या चीनी में लंबे-रूप, बहु-वक्ता, या पॉडकास्ट / ऑडियोबुक आउटपुट चाहिए, और कई मिनटों के ऑडियो में एक समान वॉयस पहचान बनाए रखनी हो। छोटे-रूप बहुभाषी TTS के लिए Qwen3-TTS या CosyVoice3 बेहतर हैं। iOS-नेटिव छोटे उच्चारणों के लिए सबसे छोटा विकल्प Kokoro है।