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

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

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

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

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

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

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

Получение токена Link to heading

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

Настройка токена Link to heading

Способ 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 Link to heading

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

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

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

brew install pyenv openssl readline sqlite3 xz zlib pkgconf autoconf

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

Добавьте следующие строки в ~/.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 Link to heading

pyenv install 3.10.14

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

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

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

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

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

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

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

pip install -e .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

vim ./inpit/anime.txt

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

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

Запускаем озвучку нашего текста с клонированием голоса в папку 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

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

ПараметрЗначение в командеНазначение
voxcpm clonecloneАктивация режима клонирования голоса
--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Локальный каталог с весами модели
--devicempsПлатформа на которой мы играемся
--no-optimizeбез значенияОтключение torch.compile
--cfg-value1.8Значение Classifier-Free Guidance
--inference-timesteps20Количество шагов диффузионного декодера
--normalizeбез значенияНормализация громкости выхода
--no-denoiserбез значенияОтключение модуля ZipEnhancer

Результат Link to heading

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

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

Послушать на ютубе

Послушать на рутубе

Послушать на вквидео

Послушать на дзене

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