Maskinöversättning · Engelskt original

VibeVoice

Microsoft VibeVoice är en långformig, multi-talare text-till-tal-modell för engelska och kinesiska. TTS, det är utformat för att generera podcast-längddialog, ljudboksberättelse och multi-talare scener i ett enda pass - upp till 90 minuter med upp till 4 Särskilda röster och konsekvent identitet överallt. Två varianter fartyg: Realtime-0.5B för låg latens streaming och 1.5B För långformad flaggskeppskvalitet.

Vad det är

Arkitektur

Fyra samarbetskomponenter producerar ljud en 7,5 Hz latent i taget:

KomponentBeskrivning
Split Qwen2 ryggrad24-skikt Qwen2.5 decoder (896 dold, GQA 14/2 för Realtime-0.5B) Modellen är uppdelad: de nedre 4 lagren bildar en text LM, de övre 20 lagren körs som TTS LM Text windows (5 tokens at a time) flöde genom båda; genererade tal latenta flödet endast genom TTS LM.
Akustisk tokenizerStreaming konv stack som kodar 24 kHz ljud till en 64-dim latent vid 7,5 Hz (3200 × temporal downsample) och avkodar latenta tillbaka till vågform. Används för både röst-cache skapande och slutlig ljudavkodning.
Diffusion huvudSmå 4-skikts DDPM-huvud med adaLN-modulering. Prover varje tal latent via 20-stegs DPM-Solver med klassificeringsfri vägledning (cfg = 1,3 standard för Realtime-0.5B, 1,5 för 1,5B).
EOS klassificerarePer-steg binär klassificerare på TTS LMs sista dolda tillstånd. När signmoid sannolikhet överstiger 0,5, generations stopp.

Språk

Per Microsofts modellkort: Realtime-0.5B är endast engelska (uppströms demofartygen nio icke-EN-röstankar som utforskande; kvaliteten garanteras inte). 1.5B stöder engelska och kinesiska; andra språk kan producera plausibelt ljud men otroget ljud och bör betraktas som experimentellt.

Röstidentitet - två distinkta vägar

De två varianterna tar mycket olika tillvägagångssätt för högtalarkonditionering, och varje väg har begränsningar som är värda att känna sig framme.

Realtime-0.5B - förbyggd röst caches

Högtalaridentitet kommer från en precomputed .safetensors röst cache som innehåller den konditionerande KV caches och dolda stater för en specifik högtalare. Ladda en cache är omedelbar; en modell instans kan byta röster billigt mellan generationer.

Realtime-0.5B checkpoint distribueras endast inferens. – Microsoft skickar inte den akustiska kodaren, så röstcatcher kan inte brytas från rå ljud mot denna modell. Den stödda källan är en av Microsofts förbyggda .pt Röst Caches (Carter, Davis, Emma, Frank, Grace, Mike, Samuel för engelska, plus utforskande de/fr/it/jp/kr/nl/pl/pt-röster), plattat in i .safetensors layout denna lastare förväntar sig.

1.5B long-form - röst kloning från rå ljud

1.5B-kontrollpunkten does skickar den akustiska kodaren, så det kan klona en godtycklig högtalare från en referensvågform + transkript i ett skott. Kodningen är inriktad på varje syntessamtal - det finns ingen separat röst-cache-fil för att hantera.

FYI: speech vibevoice-encode-voice är gated

CLI-ytan för offline röstcache-skapande mot Realtime-0.5B kommer att misslyckas snabbt med en pekar på 1.5B-rå-audio-arbetsflödet, eftersom kodarens vikter inte finns i 0.5B-kontrollpunkten. Tills Microsoft skickar dem är detta den enda slut-to-end-vägen för att klona en anpassad högtalare.

Modell

BundleKvantiseringStorlekHuggingFace
Realtime-0.5BBF16 (källa)1 GBmicrosoft/VibeVoice-Realtime-0.5B
Realtime-0.5B INT4Qwen2 INT4, tokenizer + diffusion FP16~350 MBaufklarer/VibeVoice-Realtime-0.5B-MLX-INT4
Realtime-0.5B INT8Qwen2 INT8~570 MBaufklarer/VibeVoice-Realtime-0.5B-MLX-INT8
1.5B långformatBF16 (källa)~3 GBmicrosoft/VibeVoice-1.5B
1.5B INT4 (produktion)Qwen2 INT4 + dubbla kodare1 GBaufklarer/VibeVoice-1.5B-MLX-INT4

Quantization använder MLX gruppvis affin kvant (32-grupp). Inbäddningar, normer, akustik-tokenizer konvolutioner, och EOS-klassificeraren stannar i sin källa dtype.

Snabbstart

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

Långform 1,5B (annorlunda API)

1.5B har en annan arkitektur (enhetlig Qwen2 LM, dubbla kodare, LM-tokenprovtagning) så att den skickas som en separat klass - VibeVoice15BTTSModel. Referensljud + text går i ett enda samtal:

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
)

Ingen röst cache behövs - modellen kodar referensljudet genom både acoustic_tokenizer (64-dim) och semantic_tokenizer (128-dim, ASR-utbildad) och summerar dem på ljudprompt positioner. Generation driver LM-tokenprovtagning som förgrenas på <speech_diffusion> / <speech_end>

ASR-verifierad på M2 Max INT4 (RTFx 1.48): för inmatning "Hej världen. Detta är den ena punkten fem miljarder VibeVoice varianten av Microsoft texten till talmodellen."Nemotron transkriberade utgången som "Hej världen, det här är den ena punkten fem miljarder via röstvariant av den mikrosofta texas talmodellen." varje innehåll ord matchas, endast akustiska substitutioner är VibeVoice → via röst och Text till Texas.

Swap röster mellan generationer

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 med en konverterad Microsoft-röstcache (engelska):

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

1.5B långform med rå referensljud + transkript (stängning av en godtycklig högtalare, engelska eller kinesiska):

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

Flaggor: --steps (DPM-Solver steg), --cfg (vägledning), --model / --tokenizer för att åsidosätta HuggingFace-ID, --long-form byta till 1.5B-förinställda, --verbose för timing.

Välja bland speech-swift TTS moduler

Kokoro-82MQwen3-TTSCosyVoice3VibeVoice realtidVibeVoice 1.5B
Params82M7B7B500M1.5B
BackendCoreML (ANE)MLXMLXMLXMLX
Språk810+10+EN endastEN + ZH
RöstkloningFasta förinställningarICL referensZero-Shot referensPre-byggd röst caches endastRå ljud + transkript
LångformigKort/mediumStreamingStreamingStreamingUpp till 90 min/4 högtalare
Välj VibeVoice när...

...du behöver långformig, multi-talare eller podcast/audiobook-utgång på engelska eller kinesiska, med konsekvent röstidentitet över ljudminuter. För kortformig flerspråkig TTS, Qwen3-TTS eller CosyVoice3 är bättre passformer. för iOS-inhemska korta uttalanden, Kokoro är det minsta alternativet.