Maskinöversättning · Engelskt original

VoxCPM2 röstkloning på Mac

Kör VoxCPM2 lokalt på Apple Silicon med MLX för att klona en röst eller designa en från en textbeskrivning. Denna OpenBMB-modell producerar 48 kHz tal på 30 språk. Lyssna på exemplen, försök sedan CLI med referensinspelningen och dess utskrift.

Audio prover · Klon en röst med CLI · VoxCPM2 vs Qwen3-TTS

Voice cloning prover

Dessa engelska klipp kommer från den publicerade FLEURS jämförelse. Referensen och genererade tal använder olika meningar. Varje utgång är ett representativt prov; jämförelsemetrierna genomsnittliga flera klipp.

ReferensljudEnglish · 16 kHz

Referensavskrift: Ett kan bara undra vad tangentbordet kommer att bli när något nyare kommer tillsammans.

VoxCPM2 bf16Engelska · 48 kHz

Genererad text: Medan han arbetade på sjukhuset började Liggins undersöka för tidigt arbete under sin fritid.

Qwen3-TTS Base 1.7B bf16 ICLEngelska · 24 kHz

Genererad text: Medan han arbetade på sjukhuset började Liggins undersöka för tidigt arbete under sin fritid.

Klon en röst med CLI

Ladda ner Reference ljud som referens.wav. kommandot använder sin exakta utskrift; ersätt både inspelningen och utskriften när du använder ditt eget röstprov.

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

Vad det är

Arkitektur

Fem samarbetskomponenter producerar en 48 kHz vågform:

KomponentBeskrivning
MiniCPM-4 bas LM28-skikt MiniCPM-4 med LongRoPE, GQA (16 Q / 2 KV-huvuden, 128-huvudd) och SwiGLU MLP. Villkor på texttokens + ljudlatent.
Residual LM8-skikt MiniCPM-4 variant utan roterande inbäddningar. Refines the base LM dold state per genererad ljudpatch.
FSQ + Local DiT estimatorScalar-kvantiserade dolda stater driver en 12-skikts Diffusion Transformer (V2) som arbetar på 64-dim ljudlatent i fläckar av 4. CFG-noll-star Euler-lösare, 10 tidssteg standard.
AudioVAE V2Causal konvolutionell dekoder. Läser 16 kHz referensljud + avger 48 kHz vågform (3 × uppsamla bakat i).
Stop headPer-steg binär klassificerare på LM dolda staten. Argmax = 1 slutar generation efter minTokens patchar.

Bundles

Den nuvarande CLI stöder bf16 och int8 buntar konverterade från uppströms öppna/VoxCPM2 checkpoint. Quantization gäller för språkmodellen och diffusionsprognoserna; ljudavkodaren stannar vid full precision.

BundleKvantiseringStorlekHuggingFace
bf16Ingen (referens)~5.0 GBaufklarer/VoxCPM2-MLX-bf16
int8MLX QuantizedLinear, gruppstorlek 64~3.0 GBaufklarer/VoxCPM2-MLX-int8

Rundtur ASR (Qwen3-ASR 0.6B, 8-sentence harness, M-series Apple Silicon):

VariantWERRTF
bf162.04 %1.38
int80.00 %1.02
int4 (pensionerad)4.08 %0.83

CLI standarder till bf16; välj int8 för en mindre nedladdning. int4 är pensionerad och visas i tabellen endast som en historisk mätning.

Snabbstart

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

Välj int8 bunt uttryckligen:

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

Röstdesign (instruktionsdriven)

Passera en naturlig stilbeskrivning; modellförhållandena syntes på den utan ett referensljudprov:

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

Röstkloning

Kloning från en 16 kHz mono klipp:

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 kloning - passera både referensljud och matchande transkript så att LM kan också betinga på det lexiska sammanhanget, bevara prosody och accent mer troget:

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

Flaggor: --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 för reproducerbar syntes.

VoxCPM2 vs Qwen3-TTS

Publicerade engelska resultat för tio FLEURS referens / målpar per modell: betyder WER och UTMOS, median RTF. Lägre WER and RTF är bättre; UTMOS förutspår naturlighet och är inte en mänsklig betyg. Dessa resultat inte etablera en universell rankning.

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

Full femspråkig röstkloningsjämförelse och metodologi.

Välja bland speech-swift TTS moduler

Kokoro-82MQwen3-TTSCosyVoice3VoxCPM2VibeVoice 1.5B
Params82M0,6 / 1.7 B0,5B2B1.5B
Provfrekvens24 kHz24 kHz24 kHz48 kHz24 kHz
BackendCoreML (ANE)MLX, CoreMLMLXMLXMLX
Språk1010930EN + ZH
Voice designFasta förinställningar——Instruktionsdriven —
Röstkloning—ICL referensZero-Shot referensReferens + ultimatRå ljud + transkript
LångformigKort/mediumStreamingStreamingStreaming patchesUpp till 90 min
Välj VoxCPM2 när...

...du behöver 48 kHz-utgång (musik / sändningsapplikationer) eller naturligt språklig röstdesign utan ett referensklipp. För maximal kvalitet kortformad engelska TTS med mindre nedladdning, CosyVoice3 eller Qwen3-TTS är lättare. för långformad podcast / ljudbok i EN / ZH, VibeVoice 1.5B är specialbyggd.

Ansvarsfull användning

Röstkloning ingår. Skaffa samtycke för alla röster du klonar och inte använda modellen för att personifiera, generera desinformation eller begå bedrägeri. Den fullständiga säkerhetsvägledningen från öppna / VoxCPM2 gäller.

Lokal inhemsk slutsats

VoxCPM2 stöder viktPrecision: .float16 för en okvantiserad kontrollpunkt. Dess huvudparametrar använder FP16; AudioVAE och viss beräkning förblir FP32. INT8 checkpoints avvisas för detta läge.

Explicit tokenizerDirectory loading använder iscensatta tokenizerar-filer utan att ändra dem eller behöver en separat cache. Incremental tal avkodar bundna kausala fönster samtidigt som AudioVAE kvarstår.

Tal med ström: sann returnerar NDJSON ljudhändelser vid 48 kHz, följt av gjort eller fel. Avbryt genom requestID på /v1 / slutsats / avbryt. GET /v1/inference/capabilities och/v1/Inference/provenance report model identities, parameter dtypes, asset pins och minnesräknare.

API detaljer