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 dökümü: One can only wonder what the keyboard will become when something newer comes along.
Üretilen metin: While he was working at the hospital Liggins began to investigate premature labor during his spare time.
Ü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
- 48 kHz çıkış — bu yığındaki stüdyo örnekleme frekansına sahip tek cihaz üstü motor. Diğer tüm metinden konuşmaya modülleri 24 kHz'de tavanlanır.
- Ses tasarımı — doğal dilde stil kontrolü:
--voxcpm2-instruct "young female voice, warm and gentle". Diğer motorlar bunu sunmaz. - Ses klonlama — 16 kHz bir klipten tek referanslı klonlama; ezgi korunumu için "ultimate cloning" (referans ses + transkript).
- 30 dil — İngilizce, Çince, Endonezce, Japonca, Korece ve daha fazlası. Metinden otomatik algılanır.
- Apache 2.0 — model ağırlıkları upstream openbmb lisansını miras alır; Swift port'umuz da aynıdır.
Mimari
Beş işbirlikçi bileşen 48 kHz dalga formu üretir:
| Bileşen | Açıklama |
|---|---|
| MiniCPM-4 base LM | LongRoPE, 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 LM | Rotary embedding'siz 8 katmanlı MiniCPM-4 varyantı. Üretilen her ses patch'i için base LM gizli durumunu rafine eder. |
| FSQ + Local DiT estimator | Skaler 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 V2 | Nedensel evrişimli kod çözücü. 16 kHz referans sesi okur ve 48 kHz dalga formu üretir (3× upsample dahili). |
| Stop head | LM 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.
| Paket | Kuantizasyon | Boyut | HuggingFace |
|---|---|---|---|
| bf16 | Yok (referans) | ~5.0 GB | aufklarer/VoxCPM2-MLX-bf16 |
| int8 | MLX QuantizedLinear, group size 64 | ~3.0 GB | aufklarer/VoxCPM2-MLX-int8 |
Round-trip ASR (Qwen3-ASR 0.6B, 8 cümlelik koşu, M serisi Apple Silicon):
| Varyant | WER | RTF |
|---|---|---|
| bf16 | 2.04 % | 1.38 |
| int8 | 0.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.
| Model | WER ↓ | RTF ↓ | UTMOS ↑ |
|---|---|---|---|
| VoxCPM2 bf16 | 1.8% | 1.11 | 2.97 |
| Qwen3-TTS Base 1.7B bf16 ICL | 2.4% | 1.70 | 3.50 |
Beş dilde ses klonlama karşılaştırması ve ölçüm yöntemi.
speech-swift TTS modülleri arasından seçim
| Kokoro-82M | Qwen3-TTS | CosyVoice3 | VoxCPM2 | VibeVoice 1.5B | |
|---|---|---|---|---|---|
| Parametreler | 82M | 0.6 / 1.7 B | 0.5B | 2B | 1.5B |
| Örnekleme frekansı | 24 kHz | 24 kHz | 24 kHz | 48 kHz | 24 kHz |
| Arka uç | CoreML (ANE) | MLX, CoreML | MLX | MLX | MLX |
| Diller | 10 | 10 | 9 | 30 | EN + ZH |
| Ses tasarımı | Sabit hazır ayarlar | — | — | Talimat odaklı | — |
| Ses klonlama | — | ICL referans | Zero-shot referans | Referans + ultimate | Ham ses + transkript |
| Uzun form | Kısa/orta | Streaming | Streaming | Streaming patch'ler | 90 dakikaya kadar |
…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.