Blog
April 26

VoxCPM - на ноуте. Клонируем свой голос

Развёртывание VoxCPM на MacBook с чипом Apple Silicon

Данное руководство содержит пошаговые инструкции по установке и запуску VoxCPM на macOS с процессорами Apple Silicon. Игрался на своем ноуте.

Скачиваем репозиторий проекта

Переходим в папку, где у вас всё будет аккуратно лежать и скачиваем репу:

git clone https://github.com/OpenBMB/VoxCPM.git
cd VoxCPM

Настройка доступа к Hugging Face

Для ускорения загрузки моделей и повышения лимитов запросов рекомендуется настроить токен доступа на Hugging Face

Получение токена

  1. Перейдите на https://huggingface.co/settings/tokens
  2. Создайте новый токен с правами Read
  3. Скопируйте токен (формат: hf_...)

Настройка токена

Способ 1: Через huggingface-cli

pip install -U huggingface_hub
hf auth login
# Вставьте токен при запросе

Способ 2: Через переменную окружения

# Временно для сессии
export HF_TOKEN="hf_ваш_токен_здесь"

# Или навсегда (добавить в ~/.zshrc)
echo 'export HF_TOKEN="hf_ваш_токен_здесь"' >> ~/.zshrc
source ~/.zshrc

Установка Python 3.10+ через pyenv

Установка Homebrew (если не установлен, но навряд ли, конечно)

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Установка pyenv и зависимостей

brew install pyenv openssl readline sqlite3 xz zlib pkgconf autoconf

Настройка окружения оболочки

Добавьте следующие строки в ~/.zshrc:

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"

Примените изменения:

source ~/.zshrc

Установка Python 3.10.14

pyenv install 3.10.14

Настройка версии для проекта

Перейдите в папку проекта, которую мы скачали ранее и указываем локальную версию Python:

cd ~/Documents/ai/VoxCPM 
pyenv local 3.10.14
python --version  # Должно вывести: Python 3.10.14

Настройка проекта и установка зависимостей

Создание виртуального окружения

# В папке проекта
python -m venv venv
source venv/bin/activate
pip install --upgrade pip

Установка проекта в режиме разработки

pip install -e .

Проверка установки

which voxcpm
# Должно указывать на путь внутри venv

voxcpm --help
# Должно отобразить справку по командам и доступным флагам

Скачиваем модель в папку

Делаем папку для модели и качаем модель:

mkdir -p models/VoxCPM-2B
hf download openbmb/VoxCPM2 --local-dir ./models/VoxCPM2

Использование через CLI

Базовый синтаксис

В без все просто:

voxcpm <режим> [параметры]

Но мы пойдём путём клонирования своего голоса для озвучки текста.

Готовим файл для клонирования

Я просто записал аудиосообщение в одном голубом мессенджере, сохранил его и перекодировал через ffmpeg в wav. Текст сообщения был такой: Это образец моего голоса. Я говорю здесь целых пять секунд.

Файл с текстом и аудио сохранил в папке ./ref. Т. е. ref.txt и ref.wav

Готовим текст для озвучки

Создам папку output и inpit чтобы папку не замусоривать. Создаю текст для озвучки:

vim ./inpit/anime.txt

Накидал туда описание аниме - Ателье колдовских колпаков

Запускаем озвучку с клонированием нашего голоса

Запускаем озвучку нашего текста с клонированием голоса в папку output:

voxcpm clone --text "$(cat ./inpit/anime.txt)" --prompt-audio ./ref/ref.wav --prompt-text "$(cat ./ref/ref.txt)" --reference-audio ./ref/ref.wav --output ./output/anime_18.wav --model-path ./models/VoxCPM2 --device mps --no-optimize --cfg-value 1.8 --inference-timesteps 20 --normalize --no-denoiser

Что у нас по параметрам?

Параметр

Значение в команде

Назначение

voxcpm clone

clone

Активация режима клонирования голоса

--text

"$(cat ./inpit/anime.txt)"

Целевой текст для генерации

--prompt-audio

./ref/ref.wav

Аудио-референс

--prompt-text

"$(cat ./ref/ref.txt)"

Точная транскрипция prompt-audio

--reference-audio

./ref/ref.wav

Аудио-референс для тембральной идентичности

--output

./output/anime_18.wav

Путь к выходному файлу

--model-path

./models/VoxCPM2

Локальный каталог с весами модели

--device

mps

Платформа на которой мы играемся

--no-optimize

без значения

Отключение torch.compile

--cfg-value

1.8

Значение Classifier-Free Guidance

--inference-timesteps

20

Количество шагов диффузионного декодера

--normalize

без значения

Нормализация громкости выхода

--no-denoiser

без значения

Отключение модуля ZipEnhancer

Результат

На выходе получился файл 35.02. Послушать его можно ниже:

Скачать запись

ютуб
рутуб
вк видео

Литература для изучения