Tłumaczenie automatyczne · Oryginał angielski

Klonowanie głosu VoxCPM2 na Mac

Uruchom VoxCPM2 lokalnie na Apple Silicon za pomocą MLX, aby sklonować głos lub projekt z opisu tekstu. Ten model OpenBMB produkuje mowę 48 kHz w językach 30. Posłuchaj przykładów, a następnie spróbuj CLI z nagraniem referencyjnym i jego transkrypcją.

Próbki dźwięku · Klon głos z CLI · VoxCPM2 vs Qwen3-TTS

Próbki klonowania głosu

Te angielskie klipy pochodzą z opublikowanego porównania FLEURS. Referencyjne i generowane mowy używają różnych zdań. Każde wyjście jest jedną reprezentatywną próbką; średnia porównawcza wielokrotnych klipów.

Dźwięk odniesieniaAngielski · 16 kHz

Transkrypcja referencyjna: Można się tylko zastanawiać, czym stanie się klawiatura, gdy pojawi się coś nowszego.

VoxCPM2 bf16Angielski · 48 kHz

Tekst wygenerowany: Kiedy pracował w szpitalu, Liggins zaczął badać przedwczesne poród w wolnym czasie.

Qwen3-TTS Base 1.7B bf16 ICLAngielski · 24 kHz

Tekst wygenerowany: Kiedy pracował w szpitalu, Liggins zaczął badać przedwczesne poród w wolnym czasie.

Klon głos z CLI

Pobieranie Dźwięk odniesienia jako reference.wav. Polecenie używa dokładnego transkryptu; zastępuje zarówno zapis, jak i transkrypcję przy użyciu własnej próbki głosu.

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

Co to jest?

Architektura

Pięć współpracujących komponentów wytwarza 48 kHz formy fali:

SkładnikOpis
MiniCPM-4 podstawa LM28- warstwa MiniCPM-4 z LongRoPE, GQA (16 Q / 2 Głowice KV, 128 głowa przyciemniona) i SwiGLU MLP. Warunki dotyczące żetonów tekstowych + latenty audio.
Pozostałości LM8- warstwa MiniCPM-4 wariantu bez debetów obrotowych. Refunduje podstawowy stan ukryty LM na generowany system audio patch.
FSQ + Lokalny estymator diTSkalarowe kwantyfikowane ukryte stany napęd a 12-warstwa transformator dyfuzyjny (V2) działa w dniu 64-dim utajnienia audio w łatach 4. CFG- zero- gwiazda rozwiązania Euler, 10 timesteps domyślnie.
AudioVAE V2Dekoder konwolucyjny. Odczytuje 16 kHz dźwięk odniesienia + emituje 48 kHz fali (3 × upsample wypieczone w).
Zatrzymaj głowęPer- step binarny klasyfikator w ukrytym stanie LM. Argmax = 1 kończy generację po minTokens opatrunki.

Zespoły

Bieżący CLI obsługuje pakiety bf16 i int8 przekonwertowane z góry openbmb / VoxCPM2 punkt kontrolny. Ilościowanie odnosi się do projekcji modelu językowego i dyfuzji; dekoder audio pozostaje w pełnej precyzji.

PaletaIlośćRozmiarHuggingFace
bf16Brak (odniesienie)- 5,0 GBaufklarer / VoxCPM2-MLX-bf16
int8MLX QuantizedLinear, wielkość grupy 64~ 3,0 GBaufklarer / VoxCPM2-MLX-int8

ASR (Qwen3-ASR 0.6B, 8- frazy uprząż, seria M- Apple Silicon):

WariantWERRTF
bf162.04 %1.38
int80.00 %1.02
int4 (emerytowany)4.08 %0.83

Domyślnie CLI do bf16; wybierz int8 do mniejszego pobrania. int4 jest wycofany i pojawia się w tabeli tylko jako pomiar historyczny.

Szybki start

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

Wybierz pakiet int8 wyraźnie:

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

Projektowanie głosu (sterowane instrukcją)

Podaj opis języka naturalnego; warunki modelu syntezy na nim bez próbki dźwięku odniesienia:

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

Klonowanie głosu

Klonowanie jednokierunkowe z klipu mono 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
)

Ostateczne klonowanie - przekazać zarówno dźwięk odniesienia i pasujący transkrypt tak, aby LM może również uwarunkować się kontekstem leksycznym, zachowując prosodii i akcentu bardziej wiernie:

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

Flagi: --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 do powtarzalnej syntezy.

VoxCPM2 vs Qwen3-TTS

Opublikowane wyniki angielskiego dla dziesięciu FLEURS par odniesienia / docelowych na model: średnia WER i UTMOS, mediana RTF. Dolna WER oraz RTF są lepsze; UTMOS przewiduje naturalność i nie jest ratingiem człowieka. Wyniki te nie ustanawiają uniwersalnego rankingu.

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

Pełne porównanie i metodologia klonowania głosu w pięciu językach.

Wybór pomiędzy modułami speech-swift TTS

Kokoro-82MQwen3-TTSCosyVoice3VoxCPM2VibeVoice 1.5B
Params82M0.6 / 1.7 B0.5B2B1,5B
Szybkość próbkowania24 kHz24 kHz24 kHz48 kHz24 kHz
WsteczCoreML (ANE)MLX, CoreMLMLXMLXMLX
Języki1010930PL + ZH
Projektowanie głosuUstawienia stałe——Napędzane przez instrukcję—
Klonowanie głosu—Odniesienie do ICLOdniesienie do zerorzutuOdniesienie + końcowySurowy zapis audio + transkrypcja
Postać długaKrótkie / średnieStrumieniowanieStrumieniowanieStreaming plastryDo 90 min.
Wybierz VoxCPM2 kiedy...

... potrzebujesz wyjścia 48 kHz (programy muzyczno-transmisyjne) lub natural- językowego projektowania głosu bez klipu referencyjnego. Dla maksymalnej jakości krótka forma angielska TTS z mniejszym pobraniem, CosyVoice3 lub Qwen3-TTS są lżejsze. W przypadku podcastu / audiobook w EN / ZH, VibeVoice 1.5B jest specjalnie zbudowany.

Odpowiedzialne stosowanie

Uzyskaj zgodę na każdy głos, który sklonujesz i nie używaj tego modelu, aby podszywać się pod osoby indywidualne, generować dezinformacje lub popełnić oszustwo. openbmb / VoxCPM2 stosuje się.

Lokalne zgłoszenie rodzime

VoxCPM2 obsługuje ważenie Precision: .float16 dla niezliczonego punktu kontrolnego. Główne parametry tego punktu wykorzystują FP16; AudioVAE i niektóre obliczenia pozostają FP32. Punkty kontrolne INT8 są odrzucane dla tego trybu.

Explicit tokenizerDirectory loading używa plików tokenizera ustawionego bez ich modyfikacji lub konieczności osobnego bufora. Incrementalne decodes mowy ograniczone okna przyczynowo-skutkowe przy zachowaniu kontekstu AudioVAE lewego.

Przemowa ze strumieniem: True zwraca zdarzenia audio NDJSON w 48 kHz, po którym następuje wykonanie lub błąd. Anuluj requestID na /v1/ wniosek / anulować. GET /v1/ wnioskowanie / możliwości i /v1/ inference / prience report model identifies, parametr dtypes, asset pin, and memory counters.

Szczegóły API