VibeVoice

Microsoft VibeVoice نموذج تركيب كلام طويل المدى متعدّد المتحدّثين للإنجليزية والصينية. على خلاف وحدات تركيب الكلام للجُمل القصيرة، صُمِّم لتوليد حوارات بطول البودكاست، وسرد الكتب الصوتية، ومشاهد متعدّدة المتحدّثين في تمرير واحد — حتى 90 دقيقة بأربعة أصوات متمايزة وهويّة ثابتة طوال الإخراج. يصدر بصيغتين: Realtime-0.5B للبثّ بزمن استجابة منخفض، و1.5B لجودة قمّة طويلة المدى.

ما هو

البنية

أربعة مكوّنات متعاونة تُنتج الصوت كُمونًا تلو الآخر بمعدّل 7.5 Hz:

المكوِّنالوصف
Split Qwen2 backboneمفكِّك Qwen2.5 من 24 طبقة (896 مخفيًّا، GQA 14/2 لـ Realtime-0.5B). النموذج مقسوم: الطبقات الأربع السفلى تُكوِّن LM نصّيًّا، والطبقات العشرون العليا تعمل بوصفها LM لتركيب الكلام. تتدفّق نوافذ النصّ (5 رموز كلّ مرّة) عبر الاثنين؛ بينما تتدفّق كُمونات الكلام المُولَّدة عبر LM تركيب الكلام فقط.
σ-VAE acoustic tokenizerمكدِّس تلافيفيّ بثّيّ يُرمِّز صوتًا بـ 24 kHz إلى كُمون 64 بُعدًا عند 7.5 Hz (تقليص زمنيّ 3200×) ويُفكِّك الكُمونات إلى موجة. يُستخدم في إنشاء ذاكرة الصوت وفي فكّ ترميز الصوت النهائيّ.
Diffusion headرأس DDPM صغير من 4 طبقات مع تعديل adaLN. يُعاين كلّ كُمون كلام عبر DPM-Solver بـ 20 خطوة مع توجيه دون مُصنِّف (cfg = 1.3 افتراضًا لـ Realtime-0.5B، و1.5 لـ 1.5B).
EOS classifierمُصنِّف ثنائيّ لكلّ خطوة على آخر حالة مخفيّة لـ LM تركيب الكلام. عند تجاوز احتمال السيجمويد 0.5، يتوقّف التوليد.

اللغات

وفق بطاقات نماذج Microsoft: Realtime-0.5B بالإنجليزية فقط (يُقدّم العرض من المنبع تسعة موجِّهات صوتية غير إنجليزية على سبيل الاستكشاف؛ الجودة غير مضمونة). 1.5B يدعم الإنجليزية والصينية؛ وقد تُنتج اللغات الأخرى صوتًا يبدو معقولًا لكنّه غير أمين، ويجب اعتباره تجريبيًّا.

هويّة الصوت — مسلكان متمايزان

تتّبع الصيغتان نهجين مختلفين تمامًا في اشتراط المتحدّث، ولكلّ مسلك قيود يحسن معرفتها مسبقًا.

Realtime-0.5B — ذواكر صوت مُعدّة مسبقًا

تأتي هويّة المتحدّث من ذاكرة صوت .safetensors مسبقة الحساب تحتوي على ذواكر KV الاشتراطية والحالات المخفيّة لمتحدّث محدّد. تحميل الذاكرة فوريّ؛ وتستطيع نسخة واحدة من النموذج تبديل الأصوات بكلفة زهيدة بين عمليات التوليد.

تُوزَّع نقطة مرجع Realtime-0.5B بصيغة استدلال فقط — لا تشحن Microsoft المُرمِّز الصوتيّ، فلا يمكن صكّ ذواكر الصوت من صوت خامّ في مواجهة هذا النموذج. المصدر المدعوم هو إحدى ذواكر .pt الصوتية المُعدّة مسبقًا من Microsoft (Carter وDavis وEmma وFrank وGrace وMike وSamuel للإنجليزية، إضافة إلى أصوات استكشافية بالألمانية والفرنسية والإيطالية واليابانية والكورية والهولندية والبولندية والبرتغالية)، مع تسطيحها إلى تخطيط .safetensors الذي يتوقّعه هذا اللودر.

1.5B طويل المدى — استنساخ صوت من صوت خامّ

نقطة مرجع 1.5B تشحن المُرمِّز الصوتيّ، فتستطيع استنساخ متحدّث اعتباطيّ من موجة مرجعية + تفريغها في خطوة واحدة. الترميز يتمّ ضمنيًّا في كلّ استدعاء تركيب — لا توجد ذاكرة صوت منفصلة لإدارتها.

للعلم: speech vibevoice-encode-voice محظور

ستفشل واجهة CLI لإنشاء ذواكر الصوت خارج الاتصال في مواجهة Realtime-0.5B بسرعة مع إشارة إلى مسار العمل بصوت خامّ في 1.5B، لأن أوزان المُرمِّز غير موجودة في نقطة مرجع 0.5B. حتى تشحنها Microsoft، فهذا هو المسار الوحيد من البداية إلى النهاية لاستنساخ متحدّث مخصّص.

النموذج

الحزمةالكَمَّنةالحجمHuggingFace
Realtime-0.5BBF16 (المصدر)~1 GBmicrosoft/VibeVoice-Realtime-0.5B
Realtime-0.5B INT4Qwen2 INT4، المُرمِّز + الانتشار FP16~350 MBaufklarer/VibeVoice-Realtime-0.5B-MLX-INT4
Realtime-0.5B INT8Qwen2 INT8~570 MBaufklarer/VibeVoice-Realtime-0.5B-MLX-INT8
1.5B طويل المدىBF16 (المصدر)~3 GBmicrosoft/VibeVoice-1.5B
1.5B INT4 (للإنتاج)Qwen2 INT4 + مُرمِّزان مزدوجان~1 GBaufklarer/VibeVoice-1.5B-MLX-INT4

تعتمد الكَمَّنة على كَمَّنة MLX الأفينية لكلّ مجموعة (مجموعة 32). تبقى التضمينات والـ norms وتلافيفات المُرمِّز الصوتيّ ومُصنِّف EOS بـ dtype مصدرها.

بداية سريعة

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 طويل المدى (API مختلفة)

تختلف بنية 1.5B (LM موحَّد بـ Qwen2، مُرمِّزان مزدوجان، معاينة رموز LM)، فيُشحن بوصفه فئة منفصلة — VibeVoice15BTTSModel. يدخل الصوت المرجعيّ + النصّ في استدعاء واحد:

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
)

لا حاجة إلى ذاكرة صوت — يُرمِّز النموذج الصوت المرجعيّ عبر كلٍّ من acoustic_tokenizer (64 بُعدًا) وsemantic_tokenizer (128 بُعدًا، مُدرَّب على ASR) ويجمعهما في مواضع موجِّه الصوت. ويُشغِّل التوليد معاينة رموز LM متفرِّعة عند <speech_diffusion> / <speech_end> / النصّ — ويُحدث انتشار كُمون صوتيّ فقط حين يُصدر LM رمز الكلام.

تمّ التحقّق بـ ASR على M2 Max INT4 (RTFx 1.48): لدى إدخال "Hello world. This is the one point five billion VibeVoice variant of the Microsoft text to speech model."، فرَّغ Nemotron الإخراج بوصفه "hello world, this is the one point five billion via voice variant of the microsoft texas speech model" — كلّ كلمة محتوى متطابقة، والاستبدالات الصوتية الوحيدة هي VibeVoice → via voice وtext to → texas.

تبديل الأصوات بين عمليات التوليد

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 مع ذاكرة صوت Microsoft مُحوَّلة (الإنجليزية):

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

1.5B طويل المدى مع صوت مرجعيّ خامّ + تفريغ (استنساخ متحدّث اعتباطيّ، الإنجليزية أو الصينية):

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

الرايات: --steps (خطوات DPM-Solver)، --cfg (التوجيه)، --model / --tokenizer لتجاوز مُعرِّفات HuggingFace، --long-form للانتقال إلى إعداد 1.5B، --verbose للتوقيتات.

كيف تختار بين وحدات تركيب الكلام في speech-swift

Kokoro-82MQwen3-TTSCosyVoice3VibeVoice RealtimeVibeVoice 1.5B
المعاملات82M7B7B500M1.5B
الواجهة الخلفيةCoreML (ANE)MLXMLXMLXMLX
اللغات810+10+الإنجليزية فقطEN + ZH
استنساخ الصوتإعدادات مسبقة ثابتةمرجع ICLمرجع zero-shotذواكر صوت مُعدّة مسبقًا فقطصوت خامّ + تفريغ
طويل المدىقصير / متوسّطبثّبثّبثّحتى 90 دقيقة / 4 متحدّثين
اختر VibeVoice حين…

…تحتاج إلى إخراج طويل المدى أو متعدّد المتحدّثين أو بصيغة بودكاست/كتاب صوتي بالإنجليزية أو الصينية، مع هويّة صوت ثابتة عبر دقائق من الصوت. لتركيب كلام قصير متعدّد اللغات، فإنّ Qwen3-TTS أو CosyVoice3 أنسب. ولجُمل قصيرة أصلية على iOS، فإنّ Kokoro هو الخيار الأصغر.