Maskinoversettelse · Engelsk original

VibeVoice

Microsoft VibeVoice er en langformet, flerspråklig tekst-til-speech-modell for engelsk og kinesisk. I motsetning til kortspilling TTS, er det designet for å generere podcast-lengde dialog, audiobook-narrasjon og multi-speaker scener i et enkelt pass - opp til 90 minutter med opptil 4 forskjellige stemmer og konsistent identitet i hele. To varianter skip: Realtime-0.5B for lav-latens streaming og 1,5B for langformet flaggskipskvalitet.

Hva det er

Arkitektur

Fire samarbeidskomponenter produserer lyd en 7,5 Hz latent om gangen:

Komponent Beskrivelse
Splitt Qwen2 ryggrad24-lag Qwen2.5 dekoder (896 skjult, GQA 14/2 for Realtime-0.5B). Modellen er delt: de nedre 4 lagene danner en tekst LM, de øvre 20 lagene kjører som TTS LM. Tekstvinduer (5 polletter om gangen) strømmer gjennom begge; generert tale latenter flyter bare gjennom TTS LM
CAS-VAE akustisk tokenizerStreaming konv stabel som koder 24 kHz-lyd til en 64-dim latent ved 7,5 Hz (3200× timelig downsample) og dekoder latenter tilbake til bølgeform. Brukes for både tale-kache opprettelse og sluttlyddekode.
Diffusionshode Liten 4-lags DDPM-hode med adaLN-modulasjon. Prøver hver tale latent via 20-trinns DPM-Solver med klassefri veiledning (jf. = 1,3 standard for Realtime-0.5B, 1,5 for 1,5B).
EOS-klassifiseringPer-trinn binærklassifisering på TTS LMs siste skjulte tilstand. Når sigmoid sannsynlighet overstiger 0,5, stopper generasjonen.

Språk

Per Microsofts modellkort: Realtime-0.5B er engelsk bare (de oppstrøms demoskip ni ikke-EN taleprompter som utforskende; kvalitet er ikke garantert). 1.5B støtter engelsk og kinesisk; andre språk kan produsere potensiell lyd, men utro lyd og bør anses som eksperimentell.

Stemmeidentitet - to forskjellige stier

De to variantene tar svært forskjellige tilnærminger til høyttalerkondisjonering, og hver bane har begrensninger verdt å vite foran.

Realtime-0.5B - forhåndsbygde stemmebuffere

Høyttalersidentitet kommer fra en forhåndskomputert .safetensors stemmebuffer som inneholder konditionerende KV-buffere og skjulte tilstander for en bestemt høyttaler. Laster en buffer er umiddelbart; en modellinstans kan bytte stemmer billig mellom generasjoner.

The Realtime-0.5B kontrollpunkt er distribuert inferens-beskyttet - Microsoft sender ikke den akustiske koderen, så stemmebuffere kan ikke mintes fra rå lyd mot denne modellen. Den støttede kilden er en av Microsofts forhåndsbygde .pt stemmebuffere (Carter, Davis, Emma, Grace, Grace, Mike, Samuel for engelsk, pluss utforske de/fr/it/jp/kr/nl/p/pt stemmer), flatt inn i .safetensors layouten denne lasteren forventer.

1.5B langformet — stemmekloning fra rålyd

1.5B sjekkpunkt gjør skip den akustiske koderen, slik at det kan klone en vilkårlig høyttaler fra en referansebølgeform + transkripsjon i ett skudd. Kodingen er inlined på hvert syntesesamtale - det er ingen separat tale-kache-fil å administrere.

FYI: speech vibevoice-encode-voice er portet

CLI-overflaten for offline tale-cache opprettelse mot Realtime-0.5B vil mislykkes raskt med en peker til 1,5B rå-audio arbeidsflyten, siden kodervektene ikke er til stede i 0,5B-kontrollpunktet. Inntil Microsoft skiper dem, er dette den eneste slutt-til-ende-stien for å klone en egendefinert høyttaler.

Modell

Bundle Kvantisering StørrelseHuggingFace
Realtime-0.5BBF16 (kilde)~1 GBmikrosoft/VibeVoice-Realtime-0.5B
Realtime-0.5B INT4Qwen2 INT4, tokenizer + diffusjon FP16~ 350 MBaufklarer/VibeVoice-Realtime-0.5B-MLX-INT4
Realtime-0.5B INT8Qwen2 INT8~570 MBaufklarer/VibeVoice-Realtime-0.5B-MLX-INT8
1.5B langformetBF16 (kilde)~3 GBmikrosoft/VibeVoice-1.5B
1.5B INT4 (produksjon)Qwen2 INT4 + dobbel kodere~1 GBaufklarer/VibeVoice-1.5B-MLX-INT4

Quantisation bruker MLX gruppevis affine quant (32-gruppe). Innbyggere, normer, akustisk-tokenizer konvolusjoner, og EOS-klassifieren forblir i sin kilde dtype.

Rask start

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

Langform 1.5B (forskjellige API)

1.5B har en annen arkitektur (unified Qwen2 LM, dobbel kodere, LM-token-prøvetaking) slik at det sendes som en separat klasse — VibeVoice15BTTSModel. Referanselyd + tekst går i et enkelt anrop:

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 talecache nødvendig — modellen koder referanselyden gjennom både acoustic_tokenizer (64-dim) og semantic_tokenizer (128-dim, ASR-trening) og summerer dem på lydprompturposisjoner. Generasjon kjører LM token sampling forgrenet på <speech_diffusion> / <speech_end> / tekst — diffuserer en akustisk latent bare når LM avgir taletoken.

ASR-verifisert på M2 Max INT4 (RTFx 1.48): for inngang - Hei verden. Dette er ett poeng fem milliarder VibeVoice variant av Microsoft-tekst til talemodell -, Nemotron transkribert utgangen som -Hello verden, dette er det ett poeng fem milliarder via stemmevarianten av mikrosoft texas talemodell - - hvert innholdsord som matches, er bare akustiske substitusjoner VibeVoice → via stemme og Tekst til → texas.

Bytt stemmer mellom generasjoner

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 konvertert Microsoft stemmebuffer (engelsk):

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

1.5B langformet med rå referanselyd + transkripsjon (kloning av en vilkårlig høyttaler, engelsk eller kinesisk):

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

Flagg: --steps (DPM-Solver trinn), --cfg (guidance), --model / --tokenizer til å overstyre HuggingFace IDs, --long-form for å bytte til 1,5B forhåndsinnstillingen, --verbose for timing.

Velg blant speech-swift TTS moduler

Kokoro-82MQwen3-TTSCosyVoice3VibeVoice RealtimeVibeVoice 1.5B
Params82M7B7B500M1,5B
MotorCoreML (ANE)MLXMLXMLXMLX
Språk810+10+ Bare ENEN + ZH
StemmekloningFaste forvalgICL referanseZero-shot referanseKun forhåndsbygde stemmebuffere Rå lyd + transkripsjon
Langform Kort/mediumStreamingStreamingStreaming Opp til 90 min / 4 høyttalere
Velg VibeVoice når...

... du trenger langformet, multi-speaker eller podcast/audiobook-utgang på engelsk eller kinesisk, med konsekvent stemmeidentitet på tvers av minutter med lyd. For kortformet flerspråklig TTS, Qwen3-TTS eller CosyVoice3 er bedre passform. For iOS-native korte uttalelser, Kokoro Det minste alternativet.