Maskinoversættelse · Engelsk original

VibeVoice

Microsoft VibeVoice er en lang-form, multi-højttaler tekst- to- tale model for engelsk og kinesisk. I modsætning til kort- ytterance TTS, Det er designet til at generere podcast- længde dialog, lydbog fortælling, og multi-højttaler scener i et enkelt pass - op til 90 minutter med op til 4 forskellige stemmer og konsistent identitet i hele. To varianter skib: Realtime-0.5B for lav- latency streaming og 1.5B for flagskibskvalitet i langform.

Hvad er det?

Arkitektur

Fire samarbejdende komponenter producerer lyd en 7,5 Hz latent ad gangen:

KomponentVarebeskrivelse
Split Qwen2 rygrad24-lag Qwen2.5 dekoder (896 skjult, GQA 14/2 til Realtime-0.5B). Modellen er delt: den lavere 4 lag danner en tekst LM, den øverste 20 lag kører som den TTS LM. Tekstvinduer (5 tokens på et tidspunkt) gennemstrømmer begge; genererede taleladenter gennemstrømmer kun gennem TTS LM.
σ- VAE akustisk encodarizerStreaming conv stack, der indkoder 24 kHz lyd til en 64-dim latent ved 7,5 Hz (3200 × temporal downsample) og afkoder latenter tilbage til waveform. Bruges til både voice- cache skabelse og endelig lyd afkode.
DiffusionshovedLille 4-lag DDPM hoved med AdaLN graduering. Prøver hver tale latent via 20-step DPM- Solver med klassificer- fri vejledning (cfg = 1.3 standard for Realtime-0.5B, 1.5 til 1.5BILAG
EOS-klassifikatorPer- step binær klassifikator på TTS LM 's sidste skjulte tilstand. Når sigmoid sandsynlighed overstiger 0.5, generation stopper.

Sprog

Per Microsofts modelkort: Realtime-0.5B er kun engelsk (de opstrøms demo skibe ni ikke-EN stemme opfordrer som sonderende; kvalitet er ikke garanteret). 1.5B understøtter engelsk og kinesisk; andre sprog kan producere sandsynlig-klingende, men utro lyd og bør betragtes som eksperimentelle.

Stemmeidentitet - to forskellige veje

De to varianter tager meget forskellige tilgange til højttaler conditioning, og hver sti har begrænsninger værd at vide op-front.

Realtime-0.5B - pre- built voice cache

Talerens identitet kommer fra en forudberegnet .safetensors voice cache indeholdende conditioning KV caches og skjulte tilstande for en bestemt højttaler. Indlæsning af en cache er øjeblikkelig; en model eksempel kan bytte stemmer billigt mellem generationer.

Kontrolpunktet for Realtime-0.5B er kun fordelt som en indgang. - Microsoft sender ikke den akustiske encoder, så stemme cache kan ikke tabes fra rå lyd mod denne model. Den understøttede kilde er en af Microsofts pre- build .pt voice cache (Carter, Davis, Emma, Frank, Grace, Mike, Samuel for English, plus sonderende de / fr / it / jp / kr / nl / pl / pt stemmer), fladtrykt i .safetensors layout denne loader forventer.

1.5B lang- form - stemme kloning fra rå lyd

Kontrolpunktet for 1.5B gør sende den akustiske encoder, så det kan klone en vilkårlig højttaler fra en reference waveform + udskrift i et skud. Kodningen er inlinet på hver syntese opkald - der er ingen separat voice- cache fil at administrere.

FYI: speech vibevoice-encode-voice er låst

CLI-overfladen for offline voice- cache skabelse mod Realtime-0.5B vil mislykkes hurtigt med en markør til 1.5B raw- audio workflow, da encoder vægte er ikke til stede i 0.5B- checkpoint. Indtil Microsoft sender dem, er dette den eneste end-to-end sti til kloning en brugerdefineret højttaler.

Model

BundleKvantificeringStørrelseHuggingFace
Realtime-0.5BBF16 (kilde)~ 1 GBmicrosoft / VibeVoice-Realtime-0.5B
Realtime-0.5B INT4Qwen2 INT4, shandizer + 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 lang formBF16 (kilde)~ 3 GBmicrosoft / VibeVoice-1.5B
1.5B INT4 (produktion)Qwen2 INT4 + dobbeltkodere~ 1 GBaufklarer / VibeVoice-1.5B-MLX-INT4

Kvantisering bruger MLX group- wise affin quant (32- gruppe). Indlejringer, normer, akustiske-adjust- convolutions, og EOS klassifier ophold i deres kilde dtype.

Hurtig 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

Long- form 1.5B (forskellig API)

1.5B har en anden arkitektur (samlet Qwen2 LM, dual encoders, LM token sampling), så det skibe som en separat klasse - VibeVoice15BTTSModel. Reference audio + tekst gå i en enkelt opkald:

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 talekcache nødvendig - modellen indkoder referencelyden gennem begge dele acoustic_tokenizer (64- dim) og semantic_tokenizer (128- dim, ASR- trænede) og opsummerer dem på lydprompte positioner. Generation kører LM token prøveudtagning forgrenet på <speech_diffusion> / <speech_end> / tekst - diffuserer kun en akustisk latent, når LM udsender talemærket.

ASR- verificeret på M2 Max INT4 (RTFx 1.48): for input "Hej verden. Dette er det ene punkt fem milliarder VibeVoice variant af Microsoft tekst til tale model"., Nemotron transskriberet output som "Hej verden, dette er det ene punkt fem milliarder via stemme variant af den mikrobløde texas tale model" - hvert indhold ord matchede, kun akustiske substitutioner VibeVoice → via voice og tekst til → texas.

Swap stemmer mellem 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 konverteret Microsoft voice cache (engelsk):

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

1.5B lang- form med rå reference audio + udskrift (kloning en vilkårlig højttaler, 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

Flag: --steps (DPM- Solver trin), --cfg (vejledning) --model / --tokenizer at tilsidesætte HuggingFace-id 'er --long-form at skifte til 1.5B-preset --verbose for timing.

Picking blandt speech-swift TTS moduler

Kokoro-82MQwen3-TTSCosyVoice3VibeVoice RealtimeVibeVoice 1.5B
Paramboler82M7B7B500M1.5B
BackendCoreML (AN)MLXMLXMLXMLX
Sprog810+10+Kun ENEN + ZH
StemmekloningFaste forudbetalingerICL-referenceZero- shot referenceKun præ- byggede stemmebokseRå lyd + udskrift
Long- formKort / mediumStreamingStreamingStreamingOp til 90 min / 4 højttalere
Vælg VibeVoice, når...

... du har brug for lang- form, multihøjttaler, eller podcast / audiobook output på engelsk eller kinesisk, med konsekvent stemme identitet på tværs af minutter af lyd. For kort- form flersproget TTS, Qwen3-TTS eller CosyVoice3 er bedre egnet. For iOS-indfødte korte udtalelser, Kokoro er den mindste mulighed.