Traduzione automatica · Originale inglese
VoxCPM2 clonazione vocale Mac
Eseguire VoxCPM2 localmente su Apple Silicon con MLX per clonare una voce o un disegno da una descrizione del testo. Questo modello OpenBMB produce 48 kHz di parola in 30 lingue. Ascoltare gli esempi, quindi provare il CLI con la registrazione di riferimento e la sua trascrizione.
Campioni audio · Clone una voce con il CLI · VoxCPM2 vs Qwen3-TTS
Campioni di clonazione vocale
Queste clip in inglese provengono dal confronto FLEURS pubblicato. Il riferimento e l'uso del discorso generato con frasi diverse. Ogni output è un campione rappresentativo; le metriche di confronto media clip multipli.
Trascrizione di riferimento: Si può solo chiedersi che cosa la tastiera diventerà quando qualcosa di più nuovo arriva.
Testo generico: Mentre lavorava all'ospedale Liggins iniziò ad indagare sul lavoro prematuro durante il suo tempo libero.
Testo generico: Mentre lavorava all'ospedale Liggins iniziò ad indagare sul lavoro prematuro durante il suo tempo libero.
Clone una voce con il CLI
Download Riferimento audio come riferimento.wav. Il comando utilizza la sua trascrizione esatta; sostituire sia la registrazione che la trascrizione quando si utilizza il proprio campione vocale.
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
Che cosa è
- 48 kHz output — l'unico motore on-device in questa pila con frequenza campione studio. Ogni altro modulo TTS maxes a 24 kHz.
- Voice design — controllo dello stile in lingua naturale:
--voxcpm2-instruct "young female voice, warm and gentle" - clonazione vocale — clonazione a singola referenza da una clip da 16 kHz; "ultima clonazione" (reference audio + transcript) per la conservazione della prosodia.
- 30 languages: inglese, cinese, indonesiano, giapponese, coreano e altro.
- Apache 2.0 — i pesi del modello ereditano la licenza di openbmb a monte; la nostra porta Swift è la stessa.
Architettura
Cinque componenti cooperanti producono una forma d'onda 48 kHz:
| Componenti | Designazione |
|---|---|
| MiniCPM-4 base LM | 28-layer MiniCPM-4 con LongRoPE, GQA (16 Q / 2 teste KV, 128 dim testa), e SwiGLU MLP. Condizioni su token di testo + in ritardo audio. |
| LM residenziale | 8-layer MiniCPM-4 variante senza embedding rotanti. Definisce lo stato nascosto LM base per patch audio generata. |
| FSQ + Local DiT estimatore | Scalar-quantised stati nascosti guidare un 12-layer Diffusion Transformer (V2) che funziona su 64 -dim audio latents in patch di 4. CFG-zero-star Euler, 10 timesteps default. |
| AudioVAE V2 | Decoder convoluzionale Causale. Legge audio di riferimento 16 kHz + emette forma d'onda 48 kHz (3× upsample cotto in). |
| Ferma la testa. | Classificatore binario per passo sullo stato nascosto LM. Argmax = 1 termina la generazione dopo minTokens |
Bundles
L'attuale CLI supporta i pacchetti bf16 e int8 convertiti dall'upstream openbmb/VoxCPM2 checkpoint. La quantizzazione si applica alle proiezioni di linguaggio-model e diffusione; il decoder audio rimane a piena precisione.
| Bundle | Quantificazione | Dimensione | HuggingFace |
|---|---|---|---|
| bf16 | Nessuna (riferimento) | ~5.0 GB | aufklarer/VoxCPM2-MLX-bf16 |
| int8 | MLX QuantizedLinear, dimensione del gruppo 64 | ~3.0 GB | aufklarer/VoxCPM2-MLX-int8 |
Andata e ritorno ASR (Qwen3-ASR 0.6B, Imbracatura 8-sentence, M-series Apple Silicon):
| Variante | WER | RTF |
|---|---|---|
| bf16 | 2.04 % | 1.38 |
| int8 | 0.00 % | 1.02 |
| int4 (ritirato) | 4.08 % | 0.83 |
I default CLI a bf16; scegliere int8 per un download più piccolo. int4
Avvio rapido
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
Selezionare il pacchetto int8
let tts = try await VoxCPM2TTSModel.fromPretrained(
modelId: "aufklarer/VoxCPM2-MLX-int8"
)
Progettazione vocale (instruction-driven)
Passare una descrizione di stile in lingua naturale; il modello condizioni di sintesi su di esso senza un campione audio di riferimento:
let audio = try await tts.generateVoxCPM2(
text: "Welcome to the show.",
instruct: "A young woman, gentle and warm voice."
)
Clonazione vocale
clonazione a singola referenza da una clip mono a 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
)
clonazione finale — passare sia l'audio di riferimento e la trascrizione corrispondente in modo che il LM può anche condizionare sul contesto lessicale, preservando la prosodia e l'accento più fedelmente:
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
Bandiere: --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 per la sintesi riproducibile.
VoxCPM2 vs Qwen3-TTS
Risultati in inglese pubblicati per dieci coppie FLEURS di riferimento/target: significa WER e UTMOS, median RTF. Più basso WER ed RTF sono migliori; UTMOS prevede la naturalezza e non è una classificazione umana.
| Modello | WER ↓ | RTF ↓ | UTMOS ↑ |
|---|---|---|---|
| VoxCPM2 bf16 | 1.8% | 1.11 | 2.97 |
| Qwen3-TTS Base 1.7B bf16 ICL | 2.4% | 1.70 | 3.50 |
Confronto e metodologia della voce in cinque lingue
Picking tra moduli speech-swift TTS
| Kokoro-82M | Qwen3-TTS | CosyVoice3 | VoxCPM2 | VibeVoice 1.5B | |
|---|---|---|---|---|---|
| Params | 82M | 0,6 / 1,7 B | 0.5B | 2 | 1.5B |
| Tasso di campionamento | 24 kHz | 24 kHz | 24 kHz | 48 kHz | 24 kHz |
| Indietro | CoreML (ANE) | MLX, CoreML | MLX | MLX | MLX |
| Lingue | 10 | 10 | 9 | 30 | EN + ZH |
| Progettazione vocale | Preimpostazioni fisse | — | — | Istruzione-driven | — |
| Clonazione vocale | — | Riferimento ICL | Riferimento zero-shot | Riferimento + ultimo | Audio crudo + trascrizione |
| Forma lunga | Breve/medio | Streaming | Streaming | Scorrere le patch | Fino a 90 min |
...è necessario 48 uscita kHz (applicazioni musicali / broadcast) o progettazione vocale in lingua naturale senza clip di riferimento. TTS con download più piccolo, CosyVoice3 o Qwen3-TTS sono più leggeri. Per podcast / audiobook di lunga durata in EN/ZH, VibeVoice 1.5B è costruito appositamente.
Uso responsabile
Ottenere il consenso per qualsiasi voce clone e non utilizzare il modello per impersonare gli individui, generare disinformazione, o commettere frodi. openbmb/VoxCPM2 si applica.
Inferenza locale
VoxCPM2 supporta il pesoPrecisione: .float16 per un checkpoint non specificato. I suoi parametri principali usano FP16; AudioVAE e alcune computazioni rimangono FP32. INT8
Il caricamento di directory usa i file di tokenizer in fase senza modificarli o necessitare di una cache separata. Incrementale decodifica discorsi delimitati da finestre causali mantenendo il contesto sinistro AudioVAE.
Discorso con flusso: restituisce veri eventi audio NDJSON a 48 kHz, seguito da fatto o errore. Annullare da requestID a /v1/inference/cancel. GET /v1/v1/inferenza/capabilità e /v1/Inference/provenance report identities, parametro dtypes, asset pins, e contatori di memoria.