Traducere automată · Originalul în engleză
VibeVoice
Microsoft VibeVoice este un model multi-speaker de text-la-discurs pentru limba engleză și chineză. Spre deosebire de scurt-ascutire TTS, este conceput pentru a genera podcast-lungă dialog, audiobook narațiune, și mai multe-speaker scene într-o singură trecere până la 90 minute cu până la 4 Voci distincte şi identitate constantă pe tot parcursul. Realtime-0.5B pentru streaming de joasă altitudine și 1.5B pentru calitatea emblematică de lungă formă.
Ce este?
- Forma lungă într-o singură trecere până la 90 minute de audio cu voci consistente pe întreaga ieșire; nici o predare per-sentință
- Dialog multi-speaker ا 4 boxe distincte dintr-o dată, fiecare condiţionat de propria voce cache
- Engleză + chineză bază de date audio instruită este numai EN/ZH; alte limbi nu sunt acceptate (tokenizer le acceptă, dar producția este neinteligibilă)
- Putere mono 24 kHz Float32 PCM, picătură pentru
AudioCommon.WAVWriterşiStreamingAudioPlayer - Licență MIT Slăbiciunea modelului şi portul Swift sunt ambele MIT; sunt permise derivatele cuantice INT4
Arhitectură
Patru componente care cooperează produc audio o 7,5 Hz latent la un moment dat:
| Componentă | Descriere |
|---|---|
| Split Qwen2 coloana vertebrală | 24-strat Qwen2.5 decodor (896 ascuns, GQA 14/2 pentru Realtime-0.5B). Modelul este împărțit: cele 4 straturi inferioare formează un text LM, cele 20 de straturi superioare se execută ca TTS LM. Ferestrele text (5 jetoane la un moment dat) curg prin ambele; latentele de vorbire generate curge doar prin TTS LM |
| σ-VAE tokenizer acustic | Streaming conv stiva care codifică 24 kHz audio la un 64-dim latent la 7,5 Hz (3200× temporal în jos eșantion) și decodează latentă înapoi la forma de undă. Utilizat atât pentru crearea vocală-cache și decodarea audio finală. |
| Cap de difuziune | Cap mic de 4 straturi DDPM cu modulare adaLN. Probe fiecare latent de vorbire prin DPM-Solver în 20 de etape cu orientare fără clasificare (cfg = 1,3 implicit pentru Realtime-0.5B, 1.5 pentru 1.5B). |
| Clasificator EOS | Clasificator binar pe trepte pe ultima stare ascunsă a LM TTS LM. Atunci când probabilitatea sigmoidului depășește 0,5, producția se opreşte. |
Limbi
Pe cardurile de model ale Microsoft: Realtime-0.5B este limba engleză numai (navele demo din amonte nouă voci non-EN se impun ca explorare; calitatea nu este garantată). 1.5B suportă limba engleză și chineză; alte limbi pot produce sunet plauzibil, dar infidel și ar trebui considerate experimentale.
Identitate vocală ا două căi distincte
Cele două variante iau abordări foarte diferite pentru condiționarea difuzorului, și fiecare cale are constrângeri în valoare de cunoaștere în avans.
Realtime-0.5B
Identitatea speaker-ului provine dintr-un precomputer .safetensors cache vocal care conține cache-urile KV și statele ascunse condiționat pentru un anumit difuzor. Încărcarea unui cache este instantanee; un exemplu model poate schimba vocile ieftin între generații.
The Realtime-0.5B checkpoint is distribued inference-only . Microsoft nu expediază encoder acustic, so voice caches caches cachs nu poate fi mented from brush audio against this model.Sursa susținută este una din Microsoft's pre-built .pt vocal caches (Carter, Davis, Emma, Frank, Grace, Mike, Samuel for English, plus exploration de/fr/it/jp/kr/nl/pl/pt vocales), aplatizate în .safetensors layout acest încărcător se așteaptă.
1.5B long-forma de clonare voce de la audio brut
Punctul de control 1.5B does nava codorul acustic, astfel încât să poată clona un difuzor arbitrar dintr-o formă de undă de referință + transcriere într-o singură lovitură. Codarea este aliniată pe fiecare apel de sinteză
speech vibevoice-encode-voice is gatedSuprafaţa CLI pentru crearea de cache vocal offline faţă de Realtime-0.5B va eşua rapid cu un indicator la 1.5B fluxul de lucru brut-audio, deoarece greutăţile de codor nu sunt prezente în punctul de control 0.5B. Până când Microsoft nu le va transporta, aceasta este singura cale de la capăt la sfârşit pentru clonarea unui difuzor personalizat.
Model
| BundleCity in Germany | Cuantificare | Dimensiune | HuggingFace |
|---|---|---|---|
| Realtime-0.5B | BF16 (sursa) | ~1 GB | microsoft/VibeVoice-Realtime-0.5B |
| Realtime-0.5B INT4 | Qwen2 INT4, tokenizer + difuzie FP16 | ~350 MO | aufklarer/VibeVoice-Realtime-0.5B-MLX-INT4 |
| Realtime-0.5B INT8 | Qwen2 INT8 | ~570 MO | aufklarer/VibeVoice-Realtime-0.5B-MLX-INT8 |
| Forma lungă de 1,5B | BF16 (sursa) | ~3 GB | microsoft/VibeVoice-1.5B |
| 1,5B INT4 (producție) | Qwen2 INT4 + codoare duble | ~1 GB | aufklater/VibeVoice-1.5B-MLX-INT4 |
Cuantificarea folosește MLX grup-înțelept afin cuantic (32-grup). Embedds, norme, convoluții acustic-tokenizer, și clasificarea EOS sejur în dtipul lor sursă.
Start rapid
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
Forma lungă 1.5B (diferită API)
1.5B are o arhitectura diferita (unificata Qwen2 LM, codoare duble, sfarsitul de sfarsit LM) astfel incat sa navigheze ca o clasa separata VibeVoice15BTTSModel. Reference audio + text go într-un singur apel:
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
)
Nu este nevoie de cache voce acoustic_tokenizer (64-dim) și semantic_tokenizer (128-dim, ASR-instruit) și le rezumă în poziții prompte audio. Generație rulează LM token eșantionare ramificat pe <speech_diffusion> / <speech_end> / text
ASR verificat pe M2 Max INT4 (RTFx 1.48): pentru intrare "Bună lume. Aceasta este varianta VibeVoice cu un punct de cinci miliarde a textului Microsoft la modelul de vorbire.", Nemotron transcrise de ieșire ca "Bună lume, acesta este un punct cinci miliarde prin varianta vocală a modelului de vorbire Microsoft Texas" Fiecare cuvânt de conținut potrivit, numai substituții acustice sunt VibeVoice → prin voce şi text către → Texas.
Schimb de voci între generații
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 cu o cache vocală Microsoft convertită (English):
speech vibevoice "Hello world." \
--voice-cache voice_cache/en-Mike_man.safetensors \
--output hello.wav
1.5B formă lungă cu audio de referință brută + transcriere (clonarea unui difuzor arbitrar, engleză sau chineză):
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
Steaguri: --steps (DPM-Solver steps), --cfg (guidance), --model / --tokenizer pentru a suprascrie HuggingFace ID-uri, --long-form pentru a trece la presetul 1.5B, --verbose pentru sincronizare.
Culegerea între modulele speech-swift TTS
| Kokoro-82M | Qwen3-TTS | CosyVoice3 | VibeVoice RealTime | VibeVoice 1.5B | |
|---|---|---|---|---|---|
| Paramele | 82M | 7B | 7B | 500M | 1.5B |
| Platformă | CoreML (ANE) | MLX | MLX | MLX | MLX |
| Limbi | 8 | 10+ | 10+ | Numai RO | RO + ZH |
| Clonare vocală | Presetări fixe | Referinţă ICL | Trimitere la zero | Numai cache vocale pre-construite | audio brut + transcriere |
| Forma lungă | Scurt/mediu | Streaming | Streaming | Streaming | Până la 90 min / 4 boxe |
... aveți nevoie de forma lungă, multi-speaker, sau podcast/audiobook de ieșire în limba engleză sau chineză, cu identitate vocală consecventă pe parcursul minutelor de audio. Pentru forma scurtă multilingvă TTS, Qwen3-TTS sau CosyVoice3 sunt mai bune. Pentru expresii scurte iOS-native, Kokoro este cea mai mică opțiune.