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.
Transkrip referensi: Hanya bisa bertanya-tanya apa keyboard akan menjadi ketika sesuatu yang lebih baru datang.
Teks yang dihasilkan: Sementara dia bekerja di rumah sakit Liggins mulai menyelidiki pekerja prematur selama waktu luangnya.
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?
- Keluaran 48 kHz - satu-satunya mesin perangkat di tumpukan ini dengan tingkat sampel studio. setiap modul TTS yang lain di 24 kHz.
- Desain suara - Kontrol gaya alami-bahasa:
--voxcpm2-instruct "young female voice, warm and gentle"Tak satu pun dari mesin lain mengekspos ini. - Kloning suara - tunggal - referensi kloning dari 16 kHz klip; "ultimate kloning" (referensi audio + transkrip) untuk pelestarian palsu.
- Bahasa 30 Bahasa Inggris, Cina, Indonesia, Jepang, Korea, dan yang lainnya.
- Apache 2.0 - Model bobot mewarisi upstream openbmb lisensi; kami Swift port adalah sama.
Arsitektur
Lima komponen bekerja sama menghasilkan 48 kHz waveform:
| Komponen | Deskripsi |
|---|---|
| MiniCPM-4 basis LM | 28-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 LM | 8-layer varian MiniCPM-4 tanpa penggelapan rotary. Menyewa basis LM negara tersembunyi per patch audio yang dihasilkan. |
| Estimator FSQ + Lokal DiT | Scalar- 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 V2 | Causal convolutional decoder. Baca 16 kHz referensi audio + memancarkan 48 kHz waveform (3 × upsample dipanggang). |
| Berhenti kepala | Per-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.
| Bundle | Kuantisasi | Ukuran | HuggingFace |
|---|---|---|---|
| bf16 | Tidak ada (referensi) | ~ 5.0 GB | aufklarer / VoxCPM2-MLX-bf16 |
| int8 | MLX QuantizedLinear, ukuran grup 64 | ~ 3.0 GB | aufklarer / VoxCPM2-MLX-int8 |
Round- trip ASR (Qwen3-ASR 0.6B, 8-Kalimat harness, M-series Apple Silicon):
| Varian | WER | RTF |
|---|---|---|
| bf16 | 2.04 % | 1.38 |
| int8 | 0.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.
| Model | WER ↓ | RTF ↓ | UTMOS ↑ |
|---|---|---|---|
| VoxCPM2 bf16 | 1.8% | 1.11 | 2.97 |
| Qwen3-TTS Dasar 1.7B bf16 ICL | 2.4% | 1.70 | 3.50 |
Suara lima bahasa penuh - kloning perbandingan dan metodologi.
Memilih di antara speech-swift TTS modul
| Kokoro-82M | Qwen3-TTS | CosyVoice3 | VoxCPM2 | VibeVoice 1.5B | |
|---|---|---|---|---|---|
| Params | 82M | 0.6 / 1.7 B | 0.5B | 2B | 1.5B |
| Laju sampel | 24 kHz | 24 kHz | 24 kHz | 48 kHz | 24 kHz |
| Backend | CoreML (ANE) | MLX, CoreML | MLX | MLX | MLX |
| Bahasa | 10 | 10 | 9 | 30 | EN + ZH |
| Desain suara | Presets tetap | — | — | Instruksikan - didorong | — |
| Kloning suara | — | Referensi ICL | Referensi Zero- shot | Referensi + maksimal | Transkrip audio + mentah |
| Formulir panjang | Singkat / sedang | Streaming | Streaming | Patch streaming | Sampai 90 min |
... 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.