VoxCPM2

VoxCPM2 — это TTS-модель от OpenBMB на 2 млрд параметров, без токенайзера, диффузионно-авторегрессионная. Она синтезирует аудио 48 кГц студийного качества на 30 языках и поддерживает три рабочих режима: zero-shot, клонирование голоса по одной референсной записи и голосовой дизайн на естественном языке ("a young female voice, warm and gentle"). На Apple Silicon работает нативно через MLX в bf16, int8 или int4 — на 8-предложенческом стенде int8-сборка даёт 0 % WER при раунд-трипе через Qwen3-ASR и RTF ≈ 1,0.

Что это

Архитектура

Пять взаимосвязанных компонентов формируют 48 кГц-волну:

КомпонентОписание
MiniCPM-4 base LM28-слойный MiniCPM-4 с LongRoPE, GQA (16 Q / 2 KV голов, размер головы 128) и SwiGLU MLP. Обусловлен текстовыми токенами и аудио-латентами.
Residual LM8-слойный вариант MiniCPM-4 без ротационных эмбеддингов. Дорабатывает скрытое состояние базовой LM на каждый сгенерированный аудио-патч.
FSQ + Local DiT estimatorСкалярно-квантованные скрытые состояния питают 12-слойный Diffusion Transformer (V2), работающий с 64-мерными аудио-латентами патчами по 4. Решатель Euler CFG-zero-star, 10 шагов по умолчанию.
AudioVAE V2Каузальный свёрточный декодер. Читает 16 кГц-референс и выдаёт 48 кГц-волну (3× апсэмплинг встроен).
Stop-головаПошаговый бинарный классификатор по скрытому состоянию LM. argmax = 1 завершает генерацию после minTokens патчей.

Сборки

Три квантованных варианта, все сконвертированные из upstream PyTorch-чекпоинтов openbmb/VoxCPM2. Квантование применяется к Linear-слоям LM / резидуальной LM / DiT-эстиматора / проекционных голов; AudioVAE-вокодер остаётся в fp16/bf16, потому что его квантование ухудшает качество звука.

СборкаКвантованиеРазмерHuggingFace
bf16Нет (референс)~5.0 GBaufklarer/VoxCPM2-MLX-bf16
int8MLX QuantizedLinear, group size 64~3.0 GBaufklarer/VoxCPM2-MLX-int8
int4MLX QuantizedLinear, group size 64~1.9 GBaufklarer/VoxCPM2-MLX-int4

Round-trip ASR (Qwen3-ASR 0.6B, стенд из 8 предложений, Apple Silicon серии M):

ВариантWERRTF
bf162.04 %1.38
int80.00 %1.02
int44.08 %0.83

int8 — рекомендуемый дефолт: побайтово совпадает с upstream-пайплайном на Python на участке LM, при этом быстрее и на 40 % меньше bf16. int4 — самая компактная сборка с приемлемым WER для повседневного использования.

Быстрый старт

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

Передайте явный model ID, чтобы выбрать сборку int8 / int4:

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

Голосовой дизайн (по инструкции)

Передайте описание стиля на естественном языке; модель обусловится на нём без референсного аудио:

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

Клонирование голоса

Клонирование по одной моно-референсной записи 16 кГц:

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 cloning — передайте одновременно референсное аудио и соответствующий транскрипт, чтобы LM дополнительно обусловилась на лексическом контексте и точнее сохраняла просодию и акцент:

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

Флаги: --voxcpm2-variant {bf16,int8,int4}, --voxcpm2-instruct, --voxcpm2-ref-audio, --voxcpm2-prompt-audio + --voxcpm2-prompt-text, --voxcpm2-cfg-value, --voxcpm2-timesteps, --voxcpm2-max-tokens, --voxcpm2-min-tokens, --seed для воспроизводимого синтеза.

Выбор среди TTS-модулей speech-swift

Kokoro-82MQwen3-TTSCosyVoice3VoxCPM2VibeVoice 1.5B
Параметры82M0.6 / 1.7 B0.5B2B1.5B
Sample rate24 kHz24 kHz24 kHz48 kHz24 kHz
BackendCoreML (ANE)MLX, CoreMLMLXMLXMLX
Языки1010930EN + ZH
Голосовой дизайнФиксированные пресетыПо инструкции
Клонирование голосаICL-референсZero-shot референсРеференс + ultimateАудио + транскрипт
Длинный форматКороткий / среднийСтримингСтримингПатч-стримингДо 90 минут
Когда брать VoxCPM2

…когда нужен выход 48 кГц (музыка / эфир) или голосовой дизайн на естественном языке без референсной записи. Для максимально качественного короткого английского TTS с меньшим объёмом загрузки легче CosyVoice3 или Qwen3-TTS. Для длинных подкастов и аудиокниг на EN/ZH специально сделан VibeVoice 1.5B.

Ответственное использование

Клонирование голоса доступно из коробки. Получайте согласие на любой клонируемый голос и не используйте модель для выдачи себя за других, дезинформации или мошенничества. Применяется полное руководство по безопасности openbmb/VoxCPM2.