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.

audio di riferimentoInglese · 16 kHz

Trascrizione di riferimento: Si può solo chiedersi che cosa la tastiera diventerà quando qualcosa di più nuovo arriva.

VoxCPM2 bf16Inglese · 48 kHz

Testo generico: Mentre lavorava all'ospedale Liggins iniziò ad indagare sul lavoro prematuro durante il suo tempo libero.

Qwen3-TTS Base 1.7B bf16 ICLInglese · 24 kHz

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 è

Architettura

Cinque componenti cooperanti producono una forma d'onda 48 kHz:

ComponentiDesignazione
MiniCPM-4 base LM28-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 residenziale8-layer MiniCPM-4 variante senza embedding rotanti. Definisce lo stato nascosto LM base per patch audio generata.
FSQ + Local DiT estimatoreScalar-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 V2Decoder 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.

BundleQuantificazioneDimensioneHuggingFace
bf16Nessuna (riferimento)~5.0 GBaufklarer/VoxCPM2-MLX-bf16
int8MLX QuantizedLinear, dimensione del gruppo 64~3.0 GBaufklarer/VoxCPM2-MLX-int8

Andata e ritorno ASR (Qwen3-ASR 0.6B, Imbracatura 8-sentence, M-series Apple Silicon):

VarianteWERRTF
bf162.04 %1.38
int80.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.

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

Confronto e metodologia della voce in cinque lingue

Picking tra moduli speech-swift TTS

Kokoro-82MQwen3-TTSCosyVoice3VoxCPM2VibeVoice 1.5B
Params82M0,6 / 1,7 B0.5B21.5B
Tasso di campionamento24 kHz24 kHz24 kHz48 kHz24 kHz
IndietroCoreML (ANE)MLX, CoreMLMLXMLXMLX
Lingue1010930EN + ZH
Progettazione vocalePreimpostazioni fisse——Istruzione-driven—
Clonazione vocale—Riferimento ICLRiferimento zero-shotRiferimento + ultimoAudio crudo + trascrizione
Forma lungaBreve/medioStreamingStreamingScorrere le patchFino a 90 min
Scegli VoxCPM2

...è 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.

Dettagli API