Перейти к основному содержимому

VoxCPM — клонирование вашего голоса через CLI

·581 слово·3 минут·
Оглавление
logo

Развёртывание 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 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

Результат
#

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

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

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

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

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

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

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

Related