Mac’te VoxCPM2 ile ses klonlama

VoxCPM2’yi Apple Silicon üzerinde MLX ile yerel çalıştırarak bir sesi klonlayın veya metin açıklamasıyla tasarlayın. Bu OpenBMB modeli 30 dilde 48 kHz konuşma üretir. Örnekleri dinleyin, ardından referans kaydı ve tam dökümüyle CLI’yi deneyin.

Ses örnekleri · CLI ile ses klonlayın · VoxCPM2 ve Qwen3-TTS karşılaştırması

Ses klonlama örnekleri

Bu İngilizce kayıtlar yayımlanmış FLEURS karşılaştırmasından alınmıştır. Referans ve üretilen konuşma farklı cümleler içerir. Her çıktı temsili tek bir örnektir; karşılaştırma ölçümleri birden çok kaydı özetler.

Referans ses kaydıİngilizce · 16 kHz

Referans dökümü: One can only wonder what the keyboard will become when something newer comes along.

VoxCPM2 bf16İngilizce · 48 kHz

Üretilen metin: While he was working at the hospital Liggins began to investigate premature labor during his spare time.

Qwen3-TTS Base 1.7B bf16 ICLİngilizce · 24 kHz

Üretilen metin: While he was working at the hospital Liggins began to investigate premature labor during his spare time.

CLI ile ses klonlayın

Referans ses kaydı dosyasını reference.wav adıyla indirin. Komut kaydın tam dökümünü kullanır; kendi örneğinizde hem kaydı hem dökümü değiştirin.

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

Nedir

Mimari

Beş işbirlikçi bileşen 48 kHz dalga formu üretir:

BileşenAçıklama
MiniCPM-4 base LMLongRoPE, GQA (16 Q / 2 KV başlığı, 128 başlık boyutu) ve SwiGLU MLP ile 28 katmanlı MiniCPM-4. Metin token'ları + ses latent'leri üzerinde koşullanır.
Residual LMRotary embedding'siz 8 katmanlı MiniCPM-4 varyantı. Üretilen her ses patch'i için base LM gizli durumunu rafine eder.
FSQ + Local DiT estimatorSkaler kuantize gizli durumlar, 4 patch boyutunda 64 boyutlu ses latent'leri üzerinde çalışan 12 katmanlı bir Diffusion Transformer (V2)'yi yönlendirir. CFG-zero-star Euler solver, varsayılan 10 zaman adımı.
AudioVAE V2Nedensel evrişimli kod çözücü. 16 kHz referans sesi okur ve 48 kHz dalga formu üretir (3× upsample dahili).
Stop headLM gizli durumu üzerinde adım başına ikili sınıflandırıcı. Argmax = 1 olduğunda minTokens patch'ten sonra üretim biter.

Paketler

Güncel CLI, özgün openbmb/VoxCPM2 kontrol noktasından dönüştürülen bf16 ve int8 paketlerini destekler. Dil ve difüzyon modeli projeksiyonları nicemlenir; ses çözücü tam hassasiyette kalır.

PaketKuantizasyonBoyutHuggingFace
bf16Yok (referans)~5.0 GBaufklarer/VoxCPM2-MLX-bf16
int8MLX QuantizedLinear, group size 64~3.0 GBaufklarer/VoxCPM2-MLX-int8

Round-trip ASR (Qwen3-ASR 0.6B, 8 cümlelik koşu, M serisi Apple Silicon):

VaryantWERRTF
bf162.04 %1.38
int80.00 %1.02
int4 (kaldırıldı)4.08 %0.83

CLI varsayılan olarak bf16 kullanır; daha küçük indirme için int8 seçin. int4 kullanımdan kaldırılmıştır ve tabloda yalnızca geçmiş ölçüm olarak yer alır.

Hızlı başlangıç

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

int8 paketini açıkça seçin:

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

Ses tasarımı (talimat odaklı)

Doğal dilde bir stil açıklaması geçirin; model, referans ses örneği olmadan sentezi buna göre koşullandırır:

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

Ses klonlama

16 kHz mono bir klipten tek referanslı klonlama:

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'nin sözcüksel bağlama da koşullanması, böylece prozodi ve aksanı daha sadık şekilde koruyabilmesi için hem referans sesi hem de eşleşen transkripti geçirin:

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'ler: --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, tekrarlanabilir sentez için --seed.

VoxCPM2 ve Qwen3-TTS karşılaştırması

Model başına on FLEURS referans/hedef çiftiyle yayımlanmış İngilizce sonuçları: WER ve UTMOS ortalamaları, RTF medyanı. Düşük WER ve RTF daha iyidir. UTMOS doğallık tahminidir, insan değerlendirmesi değildir. Bu sonuçlar evrensel bir sıralama oluşturmaz.

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

Beş dilde ses klonlama karşılaştırması ve ölçüm yöntemi.

speech-swift TTS modülleri arasından seçim

Kokoro-82MQwen3-TTSCosyVoice3VoxCPM2VibeVoice 1.5B
Parametreler82M0.6 / 1.7 B0.5B2B1.5B
Örnekleme frekansı24 kHz24 kHz24 kHz48 kHz24 kHz
Arka uçCoreML (ANE)MLX, CoreMLMLXMLXMLX
Diller1010930EN + ZH
Ses tasarımıSabit hazır ayarlar——Talimat odaklı—
Ses klonlama—ICL referansZero-shot referansReferans + ultimateHam ses + transkript
Uzun formKısa/ortaStreamingStreamingStreaming patch'ler90 dakikaya kadar
VoxCPM2'yi şu durumlarda seçin…

…48 kHz çıktıya ihtiyaç duyduğunuzda (müzik / yayın uygulamaları) veya referans klip olmadan doğal dilde ses tasarımı istediğinizde. Daha küçük indirmeyle en yüksek kaliteli kısa form İngilizce TTS için CosyVoice3 veya Qwen3-TTS daha hafiftir. EN/ZH'de uzun form podcast / sesli kitap için VibeVoice 1.5B bu amaca özel tasarlanmıştır.

Sorumlu kullanım

Ses klonlama dahildir. Klonladığınız her ses için onay alın ve modeli kişileri taklit etmek, yanlış bilgi üretmek veya dolandırıcılık için kullanmayın. openbmb/VoxCPM2 kaynağındaki güvenlik kılavuzunun tamamı geçerlidir.