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?
- Lang- form i ét pass - op til 90 minutter lyd med konsekvente stemmer på tværs af hele output; ingen per- sætning overdragelse
- Dialogen mellem flere talere - 4 forskellige højttalere på én gang, hver konditioneret af sin egen stemme cache
- Engelsk + kinesisk - trænede lyddata er kun EN / ZH; andre sprog er ikke understøttet (conduizer accepterer dem, men output er uforståelig)
- 24 kHz mono output - Float32 PCM, drop-in for
AudioCommon.WAVWriterogStreamingAudioPlayer - MIT-licens - modelvægte og vores Swift port er begge MIT; INT4 kvantificerede derivater er tilladt
Arkitektur
Fire samarbejdende komponenter producerer lyd en 7,5 Hz latent ad gangen:
| Komponent | Varebeskrivelse |
|---|---|
| Split Qwen2 rygrad | 24-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 encodarizer | Streaming 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. |
| Diffusionshoved | Lille 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-klassifikator | Per- 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.
speech vibevoice-encode-voice er låstCLI-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
| Bundle | Kvantificering | Størrelse | HuggingFace |
|---|---|---|---|
| Realtime-0.5B | BF16 (kilde) | ~ 1 GB | microsoft / VibeVoice-Realtime-0.5B |
| Realtime-0.5B INT4 | Qwen2 INT4, shandizer + 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 lang form | BF16 (kilde) | ~ 3 GB | microsoft / VibeVoice-1.5B |
| 1.5B INT4 (produktion) | Qwen2 INT4 + dobbeltkodere | ~ 1 GB | aufklarer / 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-82M | Qwen3-TTS | CosyVoice3 | VibeVoice Realtime | VibeVoice 1.5B | |
|---|---|---|---|---|---|
| Paramboler | 82M | 7B | 7B | 500M | 1.5B |
| Backend | CoreML (AN) | MLX | MLX | MLX | MLX |
| Sprog | 8 | 10+ | 10+ | Kun EN | EN + ZH |
| Stemmekloning | Faste forudbetalinger | ICL-reference | Zero- shot reference | Kun præ- byggede stemmebokse | Rå lyd + udskrift |
| Long- form | Kort / medium | Streaming | Streaming | Streaming | Op til 90 min / 4 højttalere |
... 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.