Terjemahan mesin · Versi asli bahasa Inggris
VibeVoice
Microsoft VibeVoice adalah bentuk panjang, teks multi- speaker -to- bahasa model untuk bahasa Inggris dan Cina. Tidak seperti kata-kata pendek TTS, ini dirancang untuk menghasilkan dialog panjang podcast-, narasi audio, dan layar multi- speaker dalam satu tahap - sampai ke 90 menit dengan hingga 4 suara yang berbeda dan identitas yang konsisten di seluruh dua kapal varian: Realtime-0.5B Untuk streaming latensi rendah dan 1.5B untuk kualitas kapal terbang yang panjang.
Apa ini?
- Formulir panjang dalam satu tahap - Sampai 90 menit audio dengan suara konsisten di seluruh keluaran; tidak ada handoff kalimat per-
- dialog multi- speaker - 4 berbeda speaker sekaligus, masing-masing dikondisikan oleh cache suaranya sendiri
- Inggris + Cina - data audio terlatih hanya untuk DEN / ZH; bahasa lain tidak didukung (tokenizer menerima mereka tetapi keluaran tidak dapat dipahami)
- Keluaran 24 kHz mono - Float32 PCM, drop-in untuk
AudioCommon.WAVWriterdanStreamingAudioPlayer - Lisensi MIT - bobot model dan kami Swift port baik MIT; INT4 kuantisasi turunan diperbolehkan
Arsitektur
Empat komponen yang bekerja sama menghasilkan audio satu 7,5 Hz laten pada suatu waktu:
| Komponen | Deskripsi |
|---|---|
| Split tulang punggung Qwen2 | 24-layer Qwen2.5 decoder (896 tersembunyi, GQA 14/2 untuk Realtime-0.5B). model ini dibagi: bagian bawah 4 lapisan bentuk sebuah teks LM, bagian atas 20 lapis dijalankan sebagai TTS LM. Jendela teks (5 token pada suatu waktu) mengalir melalui keduanya; ucapan dihasilkan hanya mengalir melalui TTS LM. |
| -VAE akustik tokenizer | Streaming conv stack yang mengkodekan 24 kHz audio ke sebuah kum 64-dim latent pada 7.5 Hz (3200 × temporal downsample) dan decodes latent kembali ke waveform. Digunakan untuk pembuatan suara-cache dan decode akhir audio. |
| Kepala difusi | Kecil 4-layer kepala DDPM dengan modulasi AdaLN. Sampel setiap pidato melalui 20-step DPM-Solver dengan classifier- free guide (cfg = 1.3 baku untuk Realtime-0.5B, 1.5 untuk 1.5B). |
| Classifier EOS | Per-step clacifier biner pada TTS LM terakhir tersembunyi negara. Ketika probabilitas sigmoid melebihi 0.5, generasi berhenti. |
Bahasa
Per Microsoft apos; s kartu model: Realtime-0.5B hanya bahasa Inggris (kapal demo upstream sembilan bukan-en voice prompt sebagai eksplorasi; kualitas tidak dijamin). 1.5B mendukung Inggris dan Cina; bahasa lain dapat menghasilkan plausible- terdengar tapi tidak setia audio dan harus dianggap eksperimental.
Identitas suara - dua jalur yang berbeda
Kedua varian mengambil pendekatan yang sangat berbeda untuk speaker conditioning, dan setiap jalan memiliki kendala yang layak diketahui up- front.
Realtime-0.5B - cache suara pre- dibangun
Identitas suara berasal dari prakomputasi .safetensors singgahan suara berisi cache pengkondisian KV dan negara tersembunyi untuk pembicara tertentu. Memuat cache secara instan; satu contoh model dapat menukar suara dengan murah antara generasi.
Pos pemeriksaan Realtime-0.5B didistribusikan hanya-neraka - Microsoft tidak mengirimkan enkoder akustik, sehingga cache suara tidak dapat dimanfaatkan dari audio mentah terhadap model ini. Sumber yang didukung adalah salah satu Microsoft 's pre- built .pt cache suara (Carter, Davis, Emma, Frank, Grace, Mike, Samuel untuk bahasa Inggris, ditambah eksplorasi de / fr / it / jp / kr / nl / pl / pt voices), diratakan ke dalam .safetensors tata letak yang diharapkan pemuat ini.
1.5B bentuk panjang - suara kloning dari audio mentah
Pos pemeriksaan 1.5B tidak Kapal enkoder akustik, sehingga dapat mengkloning pembicara sewenang-wenang dari Waveform + transkrip referensi dalam satu tembakan. Encoding adalah inline pada setiap panggilan sintesis - tidak ada file suara-cache terpisah untuk mengelola.
speech vibevoice-encode-voice digatedPermukaan CLI untuk pembuatan voicemail offline-cache terhadap Realtime-0.5B akan gagal cepat dengan sebuah penunjuk ke 1.5B raw-audio workflow, karena bobot enkoder tidak hadir dalam 0.5Sampai Microsoft mengirim mereka, ini adalah satu-satunya jalan akhir untuk mengkloning pembicara kustom.
Model
| Bundle | Kuantisasi | Ukuran | HuggingFace |
|---|---|---|---|
| Realtime-0.5B | BF16 (sumber) | ~ 1 GB | mikroft / VibeVoice-Realtime-0.5B |
| Realtime-0.5B INT4 | Qwen2 INT4, tokenizer + difusi 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 |
| Bentuk panjang 1.5B | BF16 (sumber) | ~ 3 GB | mikroft / VibeVoice-1.5B |
| 1.5B INT4 (produksi) | Qwen2 INT4 + penyandi ganda | ~ 1 GB | aufklarer / VibeVoice-1.5B-MLX-INT4 |
Kuantisasi menggunakan MLX group- bijaksana affine quant (32Embeddings, norma-norma, akustik-tokenizer konolasi, dan klasifikasi EOS tetap dalam dtype sumber mereka.
Cepat mulai
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
1.5B (berbeda API)
1.5B memiliki arsitektur yang berbeda (unified Qwen2 LM, penyandang ganda, sampel tanda LM) sehingga kapal sebagai kelas terpisah - VibeVoice15BTTSModel. Referensi audio + teks pergi dalam satu panggilan:
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
)
Tidak diperlukan singgahan suara - model mengkodekan audio referensi melalui keduanya acoustic_tokenizer (64-dim) dan semantic_tokenizer (128-dim, ASR-trained) dan meringkas mereka di posisi prompt audio. Generation menjalankan LM token branched on <speech_diffusion> / <speech_end> / teks - difusi sebuah akustik laten hanya ketika LM memancarkan token bicara.
ASR-diverifikasi pada M2 Max INT4 (RTFx 1.48): untuk masukan "Halo dunia. ini adalah satu koma lima miliar varian VibeVoice dari teks Microsoft ke model bicara"., Nemotron mentranskripsi keluaran sebagai "Halo dunia, ini adalah satu koma lima miliar melalui varian suara dari model bahasa texas mikrofold" - Setiap kata isi cocok, hanya penggantian akustik yang Suara VibeVoice Gibbervia dan teks ke lextexas.
Swap suara antar generasi
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 dengan cache suara Microsoft yang dikonversi (Bahasa Inggris):
speech vibevoice "Hello world." \
--voice-cache voice_cache/en-Mike_man.safetensors \
--output hello.wav
1.5B bentuk panjang dengan referensi audio + transkrip mentah (mengkloning pembicara sewenang-wenang, Inggris atau Cina):
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 langkah), --cfg (Dan demi rombongan yang menggiring dengan sebenar-benarnya) demi para malaikat yang menggiring atau mengarak awan. --model / --tokenizer untuk membatalkan ID HuggingFace, --long-form untuk beralih ke preset 1.5B, --verbose untuk waktu.
Memilih di antara speech-swift TTS modul
| Kokoro-82M | Qwen3-TTS | CosyVoice3 | VibeVoice Realtime | VibeVoice 1.5B | |
|---|---|---|---|---|---|
| Params | 82M | 7B | 7B | 500M | 1.5B |
| Backend | CoreML (ANE) | MLX | MLX | MLX | MLX |
| Bahasa | 8 | 10+ | 10+ | EN saja | EN + ZH |
| Kloning suara | Presets tetap | Referensi ICL | Referensi Zero- shot | Pre- dibangun cache suara saja | Transkrip audio + mentah |
| Formulir panjang | Singkat / sedang | Streaming | Streaming | Streaming | Sampai 90 min / 4 speaker |
... Anda perlu keluaran panjang, multi- speaker, atau podcast / audioboook dalam bahasa Inggris atau Cina, dengan identitas suara konsisten melalui audio. Untuk bentuk pendek multibahasa TTS, Qwen3-TTS atau CosyVoice3 Untuk iOS-native pendek perkataan, Kokoro adalah pilihan terkecil.