Automatische vertaling · Engels origineel

VibeVoice

Microsoft VibeVoice is een lang-vorm, multi-luidspreker text-to-speech model voor Engels en Chinees. In tegenstelling tot korte-doorlating TTS, is het ontworpen om podcast-lengte dialoog, audioboekvertelling en multi-speaker scènes te genereren in een enkele pas . . tot 90 minuten met maximaal 4 verschillende stemmen en consistente identiteit doorheen. Twee varianten schip: Realtime-0.5B voor laag-latency streaming en 1,5B voor lang-form vlaggenschipkwaliteit.

Wat het is.

Architectuur

Vier samenwerkende componenten produceren audio een 7,5 Hz latent tegelijk:

Onderdeel Omschrijving
Splits Qwen2 ruggengraat24-layer Qwen2.5 decoder (896 verborgen, GQA 14/2 voor Realtime-0.5B). Het model is gesplitst: de onderste 4 lagen vormen een tekst LM, de bovenste 20 lagen draaien als TTS LM. Tekstvensters (5 tokens tegelijk) stromen door beide; gegenereerde spraak latenten stromen alleen door de TTS LM
σ-VAE akoestische tokenizerStreaming conv stack die 24 kHz audio codeert naar een 64-dim latente op 7,5 Hz (3200× temporale downsample) en decodeert latentes terug naar golfvorm. Gebruikt voor zowel voice-cache creatie en uiteindelijk audio decoderen.
Verspreidingskop Kleine 4-laags DDPM hoofd met adalN modulatie. Monsters elk spraak latent via 20-staps DPM-Solver met classifier-vrije begeleiding (cfg = 1,3 standaard voor Realtime-0.5B, 1,5 voor 1.5B).
EOS classifierPer-stap binaire classifier op de laatst verborgen status van de TTS LM. Wanneer de sigmoid waarschijnlijkheid groter is dan 0.5, stopt de generatie.

Talen

Per Microsoft's modelkaarten: Realtime-0.5B is alleen Engels (de upstream-demo verscheept negen niet-EN spraakprompts als verkennend; kwaliteit is niet gegarandeerd). 1,5B ondersteunt Engels en Chinees; andere talen kunnen plausibel klinkend maar ontrouw geluid produceren en moeten als experimenteel worden beschouwd.

Stemidentiteit Twee verschillende paden

De twee varianten nemen zeer verschillende benaderingen van de luidspreker conditionering, en elk pad heeft beperkingen de moeite waard te weten vooraf.

Realtime-0.5B

Speaker-identiteit komt van een voorberekende .safetensors voice cache met de conditioning KV caches en verborgen toestanden voor een specifieke speaker. Een cache laden is onmiddellijk; één model instantie kan stemmen goedkoop wisselen tussen generaties.

De Realtime-0.5B checkpoint wordt alleen met gevolg verspreid › Microsoft verstuurt de akoestische encoder niet, zodat stem caches niet kunnen worden geslagen van rauwe audio tegen dit model. De ondersteunde bron is één van Microsoft's voorgebouwde .pt spraak caches (Carter, Davis, Emma, Frank, Grace, Mike, Samuel voor Engels, plus verkennende de/fr/it/jp/kr/pl/pt stemmen), afgeplat in de .safetensors layout deze lader verwacht.

1.5B lange-vorm .. stem klonen van rauwe audio

Het 1.5B controlepunt verstuurt de akoestische encoder, zodat het een willekeurige speaker kan klonen vanuit een referentiegolfvorm + transcript in één shot. De codering wordt op elke synthesizeraanroep ingebonden .Er is geen apart voicecache bestand om te beheren.

FYI: speech vibevoice-encode-voice is gated

Het CLI-oppervlak voor het offline aanmaken van voice-cache tegen Realtime-0.5B zal snel falen met een pointer naar de 1.5B raw-audio workflow, aangezien de encodergewichten niet aanwezig zijn in het 0.5B-controlepunt. Totdat Microsoft ze verstuurt, is dit het enige end-to-end pad voor het klonen van een aangepaste luidspreker.

Model

BundelKwantisering GrootteHuggingFace
Realtime-0.5BBF16 (bron)~1 GBmicrosoft/VibeVoice-Realtime-0.5B
Realtime-0.5B INT4Qwen2 INT4, tokenmaker + diffusie FP16~350 MBaufklarer/VibeVoice-Realtime-0.5B-MLX-INT4
Realtime-0.5B INT8Qwen2 INT8~570 MBaufklarer/VibeVoice-Realtime-0.5B-MLX-INT8
1.5B lange vormBF16 (bron)~3 GBmicrosoft/VibeVoice-1.5B
1,5B INT4 (productie)Qwen2 INT4 + dubbele encoders~1 GBaufklarer/VibeVoice-1.5B-MLX-INT4

Kwantisering maakt gebruik van MLX groepsgewijze affiene quant (32-groep). Inbeddingen, normen, akoestische-tokenizer convoluties en de EOS classifier blijven in hun bron dtype.

Snel starten

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 (verschillend API)

1.5B heeft een andere architectuur (geünificeerde Qwen2 LM, dubbele encoders, LM token sampling) dus het wordt geleverd als een aparte klasse, VibeVoice15BTTSModel. Referentie audio + tekst gaan in een enkele oproep:

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
)

Er is geen stemcache nodig om het model de referentieaudio te coderen via zowel acoustic_tokenizer (64-dim) als semantic_tokenizer (128-dim, ASR-getraind) en deze op audiopromptposities te berekenen. Generatie draait LM token sampling vertakte op <speech_diffusion> / <speech_end> / tekst . . diffuses een akoestische latente alleen wanneer de LM het spraakteken uitzendt.

ASR-geverifieerd op M2 Max INT4 (RTFx 1.48): voor invoer "Hallo wereld. Dit is de één punt vijf miljard VibeVoice variant van de Microsoft tekst naar spraak model.", Nemotron transcribeerde de uitvoer als "Hallo wereld, dit is het één punt vijf miljard via stemvariant van het microsoft texas spraakmodel" Elke inhoud woord overeenkomt, alleen akoestische substituties zijn VibeVoice → via stem en tekst naar → texas.

Stem wisselen tussen generaties

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

Realtime-0.5B met een geconverteerde Microsoft voice cache (Engels):

speech vibevoice "Hello world." \
    --voice-cache voice_cache/en-Mike_man.safetensors \
    --output hello.wav

1.5B long-form met ruwe referentie audio + transcript (klonen van een willekeurige spreker, Engels of Chinees):

speech vibevoice "Long paragraph ..." \
    --long-form \
    --reference-audio voice.wav \
    --reference-transcript "what was actually said in voice.wav" \
    --max-tokens 4000 \
    --output episode.wav

Vlaggen: --steps (DPM-Solver steps), --cfg (guidance), --model / --tokenizer om HuggingFace ID's over te slaan, --long-form om over te schakelen naar de 1,5B-preset, --verbose voor timing.

Selectie tussen speech-swift TTS modules

Kokoro-82MQwen3-TTSCosyVoice3VibeVoice RealtimeVibeVoice 1.5B
Params82M7B7B500M1.5B
BackendCoreML (ANE)MLXMLXMLXMLX
Talen810+10+ Alleen NLNL + ZH
Stemklonen Vaste instellingenICL-referentie Referentie nulschotUitsluitend voorgebouwde stemcachesRaw audio + transcript
Lange vorm Kort/middelgrootStreamingStreamingStreamingTot 90 min / 4 speakers
Kies VibeVoice als...

...je hebt lange-vorm, multi-luidspreker of podcast/audioboek uitvoer nodig in het Engels of Chinees, met consistente stemidentiteit over minuten audio. Voor korte-vorm meertalige TTS, Qwen3-TTS of CosyVoice3 zijn beter geschikt. Voor iOS-native korte uitingen, Kokoro is de kleinste optie.