Terjemahan mesin · Versi asli bahasa Inggris

VoxCPM2 voice cloning on Mac

Lari VoxCPM2 lokal pada Apple Silicon dengan MLX untuk mengkloning suara atau merancang satu dari deskripsi teks. Model OpenBMB ini menghasilkan 48 pidato kHz di 30 Dengarkan contoh-contoh, lalu coba CPI dengan referensi rekaman dan transkripnya.

Sampel audio · Kloning a voice with the CLI · VoxCPM2 vs Qwen3-TTS

Sampel kloning suara

Klip-klip Inggris ini berasal dari perbandingan FLEURS yang diterbitkan. Referensi dan pidato yang dihasilkan menggunakan kalimat yang berbeda. Setiap keluaran adalah salah satu contoh yang mewakili; perbandingan rata-rata beberapa klip.

Referensi audioBahasa Inggris 16 kHz

Transkrip referensi: Hanya bisa bertanya-tanya apa keyboard akan menjadi ketika sesuatu yang lebih baru datang.

VoxCPM2 bf16Bahasa Inggris 48 kHz

Teks yang dihasilkan: Sementara dia bekerja di rumah sakit Liggins mulai menyelidiki pekerja prematur selama waktu luangnya.

Qwen3-TTS Dasar 1.7B bf16 ICLBahasa Inggris 24 kHz

Teks yang dihasilkan: Sementara dia bekerja di rumah sakit Liggins mulai menyelidiki pekerja prematur selama waktu luangnya.

Kloning a voice with the CLI

Unduh Referensi audio sebagai reference.wav Perintah menggunakan transkrip yang tepat; mengganti baik rekaman dan transkrip ketika menggunakan sampel suara Anda sendiri.

speech speak "Hello from the cloned voice." \
    --engine voxcpm2 \
    --voxcpm2-variant bf16 \
    --voice-sample reference.wav \
    --voxcpm2-prompt-audio reference.wav \
    --voxcpm2-prompt-text "One can only wonder what the keyboard will become when something newer comes along." \
    --seed 42 \
    --output clone.wav

Apa ini?

Arsitektur

Lima komponen bekerja sama menghasilkan 48 kHz waveform:

KomponenDeskripsi
MiniCPM-4 basis LM28-layer MiniCPM-4 dengan LongRoPE, GQA (16 Q / 2 Kepala K.V, 128 head dim), and SwiGLU MLP. Kondisi pada token teks + audio latents.
Sisa LM8-layer varian MiniCPM-4 tanpa penggelapan rotary. Menyewa basis LM negara tersembunyi per patch audio yang dihasilkan.
Estimator FSQ + Lokal DiTScalar- quantised negara tersembunyi drive sebuah 12-layer Transformer Difusi (V2) beroperasi 64-dim latents audio dalam patch 4CFG-zero- bintang Euler solver, 10 timesteps default.
AudioVAE V2Causal convolutional decoder. Baca 16 kHz referensi audio + memancarkan 48 kHz waveform (3 × upsample dipanggang).
Berhenti kepalaPer-step clacifier binari pada LM negara tersembunyi. Argmax = 1 akhir generasi setelah minTokens patch.

Bundles

CLI saat ini mendukung bf16 dan int8 bundles dikonversi dari hulu openbmb / VoxCPM2 Checkpoint. Kuantisasi diterapkan pada model dan proyeksi difusi; decoder audio tetap pada presisi penuh.

BundleKuantisasiUkuranHuggingFace
bf16Tidak ada (referensi)~ 5.0 GBaufklarer / VoxCPM2-MLX-bf16
int8MLX QuantizedLinear, ukuran grup 64~ 3.0 GBaufklarer / VoxCPM2-MLX-int8

Round- trip ASR (Qwen3-ASR 0.6B, 8-Kalimat harness, M-series Apple Silicon):

VarianWERRTF
bf162.04 %1.38
int80.00 %1.02
int4 (pensiun)4.08 %0.83

CLI default ke bf16; pilih int8 untuk download yang lebih kecil. int4 pensiun dan muncul di meja hanya sebagai pengukuran sejarah.

Cepat mulai

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

Pilih bundel int8 secara eksplisit:

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

Desain suara (instruksi-didorong)

Lewatkan deskripsi gaya alami-bahasa; kondisi model sintesis di atasnya tanpa referensi sampel audio:

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

Kloning suara

Single - referensi kloning dari 16 kHz mono klip:

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
)

Kloning Ultimate - lulus baik referensi audio dan transkrip yang cocok sehingga LM juga dapat kondisi pada konteks leksikal, mempertahankan prosody dan aksen lebih setia:

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}, --voxcpm2-instruct, --voxcpm2-ref-audio, --voxcpm2-prompt-audio + --voxcpm2-prompt-text, --voxcpm2-cfg-value, --voxcpm2-timesteps, --voxcpm2-max-tokens, --voxcpm2-min-tokens, --seed untuk reproduksi sintesis.

VoxCPM2 vs Qwen3-TTS

Hasil bahasa Inggris untuk sepuluh FLEURS referensi / target pasangan per model: berarti WER dan UTMOS, Median RTFLebih rendah WER dan RTF lebih baik; UTMOS memprediksi naturalness dan bukan rating manusia. hasil ini tidak membangun peringkat universal.

ModelWER ↓RTF ↓UTMOS ↑
VoxCPM2 bf161.8%1.112.97
Qwen3-TTS Dasar 1.7B bf16 ICL2.4%1.703.50

Suara lima bahasa penuh - kloning perbandingan dan metodologi.

Memilih di antara speech-swift TTS modul

Kokoro-82MQwen3-TTSCosyVoice3VoxCPM2VibeVoice 1.5B
Params82M0.6 / 1.7 B0.5B2B1.5B
Laju sampel24 kHz24 kHz24 kHz48 kHz24 kHz
BackendCoreML (ANE)MLX, CoreMLMLXMLXMLX
Bahasa1010930EN + ZH
Desain suaraPresets tetap——Instruksikan - didorong—
Kloning suara—Referensi ICLReferensi Zero- shotReferensi + maksimalTranskrip audio + mentah
Formulir panjangSingkat / sedangStreamingStreamingPatch streamingSampai 90 min
Pilih VoxCPM2 ketika...

... Anda perlu 48 keluaran kHz (aplikasi musik / broadcast) atau desain suara dalam bahasa alami tanpa sebuah klip referensi. Untuk kependekan maksimal mum- bentuk bahasa Inggris TTS dengan download yang lebih kecil, CosyVoice3 atau Qwen3-TTS lebih ringan. Untuk podcast / audiogook dalam EN / ZH, VibeVoice 1.5B adalah tujuan-dibangun.

Penggunaan yang bertanggung jawab

Kloning suara disertakan. openbmb / VoxCPM2 applied.

Inferensi lokal lokal

VoxCPM2 mendukung penimbangan:.float16 untuk sebuah pos pemeriksaan unquantized. Parameter utama yang digunakan FP16; AudioVAE dan beberapa komputasi tetap FP32. INT8 titik pemeriksaan ditolak untuk mode ini.

Explisit tokenizerDirectory loading uses stage tokenizer files without modifying them or needing a seacuit. Incremental speech decodes bounded causal windows while retending the AudioVAE left context.

Pidato dengan stream: kejadian audio NDJSON kembali benar di 48 kHz, diikuti oleh dilakukan atau error. Batal oleh requestID di /v1/ menyimpulkan / batal. GET /v1/ kesimpulan / kemampuan dan /v1/ inferensi / provenance laporan identitas model, parameter dtypes, pin aset, dan penghitung memori.

Rincian API