VoxCPM2

VoxCPM2 نموذج تركيب كلام انتشاري-انحداري دون مُرمِّز، بـ 2 مليار معامل، أصدرته OpenBMB. يُركِّب صوتًا بجودة استوديو عند 48 kHz في 30 لغة، ويُتيح ثلاثة أوضاع إنتاجية: zero-shot، واستنساخ صوت بمرجع واحد، وتصميم صوت بلغة طبيعية ("صوت أنثوي شابّ، دافئ ولطيف"). على Apple Silicon يعمل أصليًّا عبر MLX بصيغ bf16 وint8 وint4 — وعلى مجموعة الاختبار المؤلَّفة من 8 جُمل، تحقّق حزمة int8 نسبة WER صفر بالمئة في رحلة العودة عبر Qwen3-ASR وRTF ≈ 1.0.

ما هو

البنية

خمسة مكوّنات متعاونة لإنتاج موجة الكلام بـ 48 kHz:

المكوِّنالوصف
MiniCPM-4 base LMMiniCPM-4 من 28 طبقة مع LongRoPE وGQA (16 رأس Q / 2 KV، بُعد رأس 128) وMLP من نوع SwiGLU. يُشترَط على رموز النصّ + كُمونات الصوت.
Residual LMمتغيّر MiniCPM-4 من 8 طبقات بدون تضمينات دورانية. يُحسِّن الحالة المخفيّة لـ LM الأساس لكلّ patch صوتيّ مُولَّد.
FSQ + Local DiT estimatorحالات مخفيّة مُكمَّمة سُلَّميًّا تُغذّي Diffusion Transformer (V2) من 12 طبقة يعمل على كُمونات صوت بـ 64 بُعدًا في patches من 4. حالّ Euler بنوع CFG-zero-star، 10 خطوات افتراضيًّا.
AudioVAE V2مفكِّك تلافيفيّ سببيّ. يقرأ صوتًا مرجعيًّا بـ 16 kHz ويُصدر الموجة بـ 48 kHz (مع رفع عيّنات 3× مدمج).
Stop headمُصنِّف ثنائيّ لكلّ خطوة على الحالة المخفيّة لـ LM. عند argmax = 1 ينتهي التوليد بعد minTokens من الـ patches.

الحزم

ثلاث صيغ مُكمَّمة، جميعها مُحوَّلة من نقاط مرجع PyTorch من openbmb/VoxCPM2. تطال الكَمَّنة طبقات Linear داخل LM واللمن المتبقّي ومُقدِّر DiT ورؤوس الإسقاط؛ بينما يبقى مُرمِّز AudioVAE الصوتيّ بـ fp16/bf16 لأن كَمَّنته تُضرّ بجودة الصوت.

الحزمةالكَمَّنةالحجمHuggingFace
bf16لا شيء (مرجعيّ)~5.0 GBaufklarer/VoxCPM2-MLX-bf16
int8MLX QuantizedLinear، حجم المجموعة 64~3.0 GBaufklarer/VoxCPM2-MLX-int8
int4MLX QuantizedLinear، حجم المجموعة 64~1.9 GBaufklarer/VoxCPM2-MLX-int4

رحلة الذهاب والإياب عبر ASR (Qwen3-ASR 0.6B، مجموعة 8 جُمل، Apple Silicon من السلسلة M):

الصيغةWERRTF
bf162.04 %1.38
int80.00 %1.02
int44.08 %0.83

int8 هو الافتراضي المُوصى به — يُطابق مسار LM في خطّ Python الأصليّ بِتًّا بِتٍّ، وهو أسرع وأصغر بنسبة 40 % من bf16. أمّا int4 فهو أصغر حزمة بـ WER مقبول للاستخدام العَرَضيّ.

بداية سريعة

import VoxCPM2TTS

let tts = try await VoxCPM2TTSModel.fromPretrained()  // defaults to bf16
let audio = try await tts.generate(text: "Hello from VoxCPM2.", language: "english")
// audio: [Float] at 48 kHz mono

مرِّر model ID صريحًا لاختيار حزمة int8 / int4:

let tts = try await VoxCPM2TTSModel.fromPretrained(
    modelId: "aufklarer/VoxCPM2-MLX-int8"
)

تصميم الصوت (بالتعليمة)

مرِّر وصفًا للأسلوب بلغة طبيعية؛ وسيُشترَط النموذج عليه دون الحاجة إلى عيّنة صوت مرجعية:

let audio = try await tts.generateVoxCPM2(
    text: "Welcome to the show.",
    instruct: "A young woman, gentle and warm voice."
)

استنساخ الصوت

استنساخ بمرجع واحد من مقطع أحاديّ بـ 16 kHz:

let ref = try AudioFileLoader.load(url: URL(fileURLWithPath: "speaker.wav"),
                                   targetSampleRate: 16000)
let audio = try await tts.generateVoxCPM2(
    text: "This is a cloned voice.",
    refAudio: ref
)

الاستنساخ النهائيّ — مرِّر الصوت المرجعيّ ونصّ تفريغه معًا كي يُشترَط LM أيضًا على السياق المعجميّ، فيُحافظ على البروزودي واللهجة بأمانة أكبر:

let audio = try await tts.generateVoxCPM2(
    text: "Hello from the cloned voice.",
    refAudio: ref,
    promptText: "this is what the reference clip actually said",
    promptAudio: ref
)

CLI

speech speak "Hello there." \
    --engine voxcpm2 \
    --voxcpm2-variant int8 \
    --output hello.wav

# Voice design
speech speak "Welcome to the show." \
    --engine voxcpm2 \
    --voxcpm2-instruct "A young woman, gentle and warm voice." \
    --output design.wav

# Voice cloning
speech speak "This is a cloned voice." \
    --engine voxcpm2 \
    --voice-sample speaker.wav \
    --output clone.wav

الرايات: --voxcpm2-variant {bf16,int8,int4}، --voxcpm2-instruct، --voxcpm2-ref-audio، --voxcpm2-prompt-audio + --voxcpm2-prompt-text، --voxcpm2-cfg-value، --voxcpm2-timesteps، --voxcpm2-max-tokens، --voxcpm2-min-tokens، --seed لتركيب قابل للتكرار.

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

Kokoro-82MQwen3-TTSCosyVoice3VoxCPM2VibeVoice 1.5B
المعاملات82M0.6 / 1.7 B0.5B2B1.5B
معدّل العيّنات24 kHz24 kHz24 kHz48 kHz24 kHz
الواجهة الخلفيةCoreML (ANE)MLX، CoreMLMLXMLXMLX
اللغات1010930EN + ZH
تصميم الصوتإعدادات مسبقة ثابتةموجَّه بالتعليمة
استنساخ الصوتمرجع ICLمرجع zero-shotمرجع + نهائيّصوت خامّ + تفريغ
طويل المدىقصير / متوسّطبثّبثّبثّ على هيئة patchesحتى 90 دقيقة
اختر VoxCPM2 حين…

…تحتاج إلى إخراج بـ 48 kHz (تطبيقات الموسيقى / البثّ الإذاعيّ) أو إلى تصميم صوت بلغة طبيعية دون مقطع مرجعيّ. للحصول على تركيب كلام إنجليزيّ قصير بأعلى جودة وبحجم تنزيل أصغر، فإنّ CosyVoice3 أو Qwen3-TTS أخفّ. أمّا للبودكاست والكتب الصوتية الطويلة المدى بالإنجليزية/الصينية، فإنّ VibeVoice 1.5B مصمَّم لذلك خصيصًا.

الاستخدام المسؤول

استنساخ الصوت مُتاح. احصل على إذن لأيّ صوت تستنسخه، ولا تستخدم النموذج لانتحال شخصيّات أو لتوليد معلومات مضلِّلة أو ارتكاب احتيال. تنطبق الإرشادات الأمنية الكاملة من openbmb/VoxCPM2.