VoxCPM2

VoxCPM2 เป็นโมเดล TTS แบบ diffusion-autoregressive ไม่ใช้ tokenizer ขนาด 2B พารามิเตอร์จาก OpenBMB สังเคราะห์ เสียง 48 kHz คุณภาพสตูดิโอ ใน 30 ภาษาด้วยโหมดการใช้งานสามแบบ: zero-shot, การโคลนเสียงจากคลิปอ้างอิงเดียว และการออกแบบเสียงด้วยภาษาธรรมชาติ ("a young female voice, warm and gentle") บน Apple Silicon มันรันแบบเนทีฟผ่าน MLX ใน bf16, int8 หรือ int4 — ชุด int8 round-trip ผ่าน Qwen3-ASR ได้ 0% WER บนชุดทดสอบ 8 ประโยคและ RTF ประมาณ 1.0

โมเดลนี้คืออะไร

สถาปัตยกรรม

ห้าองค์ประกอบที่ทำงานร่วมกันผลิตรูปคลื่น 48 kHz:

องค์ประกอบคำอธิบาย
MiniCPM-4 base LMMiniCPM-4 28 ชั้นพร้อม LongRoPE, GQA (16 หัว Q / 2 หัว KV, head dim 128) และ MLP SwiGLU กำหนดเงื่อนไขด้วยโทเค็นข้อความ + latent เสียง
Residual LMรุ่นย่อย MiniCPM-4 8 ชั้นโดยไม่มี rotary embedding ปรับ hidden state ของ base LM ต่อแต่ละ patch เสียงที่สร้าง
FSQ + Local DiT estimatorHidden state ที่ quantize แบบ scalar ขับเคลื่อน Diffusion Transformer (V2) 12 ชั้นที่ทำงานบน latent เสียง 64 มิติเป็น patch ละ 4 Solver Euler CFG-zero-star ค่าเริ่มต้น 10 timestep
AudioVAE V2ตัวถอดรหัส convolutional แบบ causal อ่านเสียงอ้างอิง 16 kHz และส่งรูปคลื่น 48 kHz ออกมา (upsample 3× ฝังในตัว)
Stop headตัวจำแนกแบบ binary ต่อขั้นตอนบน hidden state ของ LM Argmax = 1 จะจบการสร้างหลังจาก minTokens patch

ชุดต่างๆ

สามรุ่นการ quantize ทุกตัวแปลงมาจาก checkpoint PyTorch upstream ผ่าน openbmb/VoxCPM2 การ quantize ใช้กับ Linear projection ภายใน LM / residual LM / DiT estimator / projection head; vocoder AudioVAE คงไว้ที่ fp16/bf16 เพราะการ quantize ทำให้คุณภาพเสียงลดลง

ชุดการ quantizeขนาดHuggingFace
bf16ไม่มี (อ้างอิง)~5.0 GBaufklarer/VoxCPM2-MLX-bf16
int8MLX QuantizedLinear, group size 64~3.0 GBaufklarer/VoxCPM2-MLX-int8
int4MLX QuantizedLinear, group size 64~1.9 GBaufklarer/VoxCPM2-MLX-int4

Round-trip ASR (Qwen3-ASR 0.6B, ชุดทดสอบ 8 ประโยค, Apple Silicon รุ่น M):

รุ่นWERRTF
bf162.04 %1.38
int80.00 %1.02
int44.08 %0.83

int8 เป็นค่าเริ่มต้นที่แนะนำ — มันตรงกับ pipeline Python upstream ทุกบิตบนเส้นทาง LM ในขณะที่เร็วกว่าและเล็กกว่า bf16 40 % 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."
)

การโคลนเสียง

การโคลนจากคลิปอ้างอิง mono ที่ 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
)

Ultimate cloning — ส่งทั้งเสียงอ้างอิงและทรานสคริปต์ที่ตรงกัน เพื่อให้ 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

Flag: --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 สำหรับการสังเคราะห์ที่ทำซ้ำได้

เลือกโมดูล TTS ใดใน speech-swift

Kokoro-82MQwen3-TTSCosyVoice3VoxCPM2VibeVoice 1.5B
พารามิเตอร์82M0.6 / 1.7 B0.5B2B1.5B
อัตราการสุ่ม24 kHz24 kHz24 kHz48 kHz24 kHz
BackendCoreML (ANE)MLX, CoreMLMLXMLXMLX
ภาษา1010930EN + ZH
การออกแบบเสียงPreset คงที่ตามคำสั่ง
การโคลนเสียงICL referenceZero-shot referenceReference + ultimateเสียงดิบ + ทรานสคริปต์
รูปแบบยาวสั้น / ปานกลางStreamingStreamingStreaming ตาม patchยาวถึง 90 นาที
เลือก VoxCPM2 เมื่อ…

…คุณต้องการเอาต์พุต 48 kHz (แอปพลิเคชันดนตรี / การกระจายเสียง) หรือการออกแบบเสียงด้วยภาษาธรรมชาติโดยไม่มีคลิปอ้างอิง สำหรับ TTS รูปแบบสั้นคุณภาพสูงสุดสำหรับภาษาอังกฤษพร้อมการดาวน์โหลดที่เล็กกว่า CosyVoice3 หรือ Qwen3-TTS มีน้ำหนักเบากว่า สำหรับ podcast / หนังสือเสียงรูปแบบยาวใน EN/ZH VibeVoice 1.5B ถูกสร้างเฉพาะเพื่อการนี้

การใช้งานอย่างมีความรับผิดชอบ

มีการรองรับการโคลนเสียง ขอความยินยอมสำหรับเสียงใดๆ ที่คุณโคลน และอย่าใช้โมเดลเพื่อปลอมตัวบุคคล สร้างข้อมูลที่บิดเบือน หรือก่อการฉ้อโกง ใช้คำแนะนำด้านความปลอดภัยฉบับเต็มจาก openbmb/VoxCPM2