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.
Referensavskrift: Ett kan bara undra vad tangentbordet kommer att bli när något nyare kommer tillsammans.
Genererad text: Medan han arbetade på sjukhuset började Liggins undersöka för tidigt arbete under sin fritid.
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
- 48 kHz-utgång - den enda på-enhet motorn i denna stack med studioprovfrekvens. Var och en annan TTS modul maxes vid 24 kHz.
- Voice design — naturligt språk stil kontroll:
--voxcpm2-instruct "young female voice, warm and gentle". Ingen av de andra motorerna exponerar detta. - Voice cloning - en-referens kloning från ett 16 kHz klipp; "ultimate kloning" (referens ljud + transkript) för prosodig bevarande.
- 30 språk - engelska, kinesiska, indonesiska, japanska, koreanska och mer. Autoupptäckt från text.
- Apache 2.0 - modellvikter ärver uppströms openbmb-licens; vår Swift port är densamma.
Arkitektur
Fem samarbetskomponenter producerar en 48 kHz vågform:
| Komponent | Beskrivning |
|---|---|
| MiniCPM-4 bas LM | 28-skikt MiniCPM-4 med LongRoPE, GQA (16 Q / 2 KV-huvuden, 128-huvudd) och SwiGLU MLP. Villkor på texttokens + ljudlatent. |
| Residual LM | 8-skikt MiniCPM-4 variant utan roterande inbäddningar. Refines the base LM dold state per genererad ljudpatch. |
| FSQ + Local DiT estimator | Scalar-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 V2 | Causal konvolutionell dekoder. Läser 16 kHz referensljud + avger 48 kHz vågform (3 × uppsamla bakat i). |
| Stop head | Per-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.
| Bundle | Kvantisering | Storlek | HuggingFace |
|---|---|---|---|
| bf16 | Ingen (referens) | ~5.0 GB | aufklarer/VoxCPM2-MLX-bf16 |
| int8 | MLX QuantizedLinear, gruppstorlek 64 | ~3.0 GB | aufklarer/VoxCPM2-MLX-int8 |
Rundtur ASR (Qwen3-ASR 0.6B, 8-sentence harness, M-series Apple Silicon):
| Variant | WER | RTF |
|---|---|---|
| bf16 | 2.04 % | 1.38 |
| int8 | 0.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.
| Modell | WER ↓ | RTF ↓ | UTMOS ↑ |
|---|---|---|---|
| VoxCPM2 bf16 | 1.8% | 1.11 | 2.97 |
| Qwen3-TTS Bas 1.7B bf16 ICL | 2.4% | 1.70 | 3.50 |
Full femspråkig röstkloningsjämförelse och metodologi.
Välja bland speech-swift TTS moduler
| Kokoro-82M | Qwen3-TTS | CosyVoice3 | VoxCPM2 | VibeVoice 1.5B | |
|---|---|---|---|---|---|
| Params | 82M | 0,6 / 1.7 B | 0,5B | 2B | 1.5B |
| Provfrekvens | 24 kHz | 24 kHz | 24 kHz | 48 kHz | 24 kHz |
| Backend | CoreML (ANE) | MLX, CoreML | MLX | MLX | MLX |
| Språk | 10 | 10 | 9 | 30 | EN + ZH |
| Voice design | Fasta förinställningar | — | — | Instruktionsdriven | — |
| Röstkloning | — | ICL referens | Zero-Shot referens | Referens + ultimat | Rå ljud + transkript |
| Långformig | Kort/medium | Streaming | Streaming | Streaming patches | Upp till 90 min |
...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.