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

Запустите VoxCPM2 локально на Apple Silicon с MLX, чтобы клонировать голос или создать его по текстовому описанию. Модель OpenBMB генерирует речь с частотой 48 кГц на 30 языках. Послушайте примеры, затем попробуйте CLI с исходной записью и её точной расшифровкой.

Аудиопримеры · Клонирование голоса через CLI · VoxCPM2 и Qwen3-TTS: сравнение

Примеры клонирования голоса

Эти английские записи взяты из опубликованного сравнения на FLEURS. Исходная и сгенерированная речь содержат разные предложения. Каждый результат — один показательный пример; метрики сравнения обобщают несколько записей.

Исходная записьАнглийский · 16 kHz

Точная расшифровка исходной записи: One can only wonder what the keyboard will become when something newer comes along.

VoxCPM2 bf16Английский · 48 kHz

Текст для генерации: While he was working at the hospital Liggins began to investigate premature labor during his spare time.

Qwen3-TTS Base 1.7B bf16 ICLАнглийский · 24 kHz

Текст для генерации: While he was working at the hospital Liggins began to investigate premature labor during his spare time.

Клонирование голоса через CLI

Скачайте Исходная запись как reference.wav. В команде указана её точная расшифровка. Для собственного образца замените и запись, и расшифровку.

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

Что это

Архитектура

Пять взаимосвязанных компонентов формируют 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 патчей.

Сборки

Текущая CLI поддерживает bf16 и int8, преобразованные из исходного чекпойнта openbmb/VoxCPM2. Квантуются проекции языковой и диффузионной моделей; аудиодекодер сохраняет полную точность.

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

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

ВариантWERRTF
bf162.04 %1.38
int80.00 %1.02
int4 (снят с поддержки)4.08 %0.83

По умолчанию CLI использует bf16; выберите int8 для меньшего объёма загрузки. int4 больше не поддерживается и оставлен в таблице только как исторический результат.

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

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

Явно выберите сборку int8:

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}, --voxcpm2-instruct, --voxcpm2-ref-audio, --voxcpm2-prompt-audio + --voxcpm2-prompt-text, --voxcpm2-cfg-value, --voxcpm2-timesteps, --voxcpm2-max-tokens, --voxcpm2-min-tokens, --seed для воспроизводимого синтеза.

VoxCPM2 и Qwen3-TTS: сравнение

Опубликованные результаты для английского: десять пар исходных и целевых записей FLEURS на модель. WER и UTMOS — средние, RTF — медиана. Меньшие WER и RTF лучше. UTMOS прогнозирует естественность и не заменяет оценку людьми. Это не универсальный рейтинг моделей.

МодельWER ↓RTF ↓UTMOS ↑
VoxCPM2 bf161.8%1.112.97
Qwen3-TTS Base 1.7B bf16 ICL2.4%1.703.50

Полное сравнение клонирования на пяти языках и методика.

Выбор среди 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.