Меняем голос в песнях при помощи so-vits-svc-fork¶
От автора
Вместо использования SVC я рекомендую использовать RVC. Данная система более новая, обладает большим числом готовых моделей, более удобным интерфейсом и позволяет обучать свои модели быстрее (как в плане подготовки датасетов, так и в плане GPU-времени).
О чём эта статья¶
Данное руководство описывает процесс установки so-vits-svc-fork и всех сопутствующих инструментов на вашу машину локально. Во второй половине статьи описаны типовые манипуляции, необходимые для изменения голоса в треках.
Системные требования¶
Полноценное использование so-vits-svc-fork требует наличие видеокарты NVidia с 4GB VRAM. Обучение своих моделей так же возможно проводить на видеокарте с обёмом памяти 4GB VRAM, однако, разработчик рекомендует проводить обучение хотя бы на 10GB VRAM. Если у вас с этим проблемы, то программа может полностью исполняться на процессоре с меньшей скоростью. AMD GPU поддерживается только для Linux.
Основные инструменты¶
Ultimate Vocal Remover GUI¶
Страница на гитхабе | Ссылку на скачивание искать тут
Готовый интерфейс для разбивки аудиодорожки на вокальную и инструментальную часть. Работает через нейронку, поставляемую в комплекте. Предоставляет возможность использования разных моделей нейронки для данной задачи (есть кнопки для выбора и загрузки других моделей прямо в интерфейсе программы).
Данная программа вам понадобится, поскольку so-vits-svc-fork не умеет самостоятельно выделять вокальную часть из трека.
so-vits-svc-fork¶
Представляет GUI и CLI для изменения голоса. Так же, в комплекте идут утилиты для обучения своих голосовых моделей.
Автоматическая установка¶
so-vits-svc-fork можно скачать и установить автоматически вместе со всеми зависимостями (включая python/pip и т.д.), используя 1-click-installer скрипт из официального репозитория.
Скачайте bat-файл, закиньте его в директорию, куда хотите установить so-vits-svc-fork и запустите. В конце установки инсталлер автоматически создаст ярлык в меню "Пуск" и запустит программу.
Ручная установка¶
Если у вас не заработал скрипт автоматической установки, или вы по каким-либо другим причинам не хотите его использовать, вы можете поставить данное ПО вручную. Оно поставляется в виде отдельного pip-пакета и требует наличие установленных python и pip в системе.
1. Python + pip (идёт в комплекте)¶
При установке убедитесь, что галка Add to PATH проставлена.
Чтобы проверить, что всё установлено корректно, выполните в консоли следующие команды:
python --version
pip --version
2. Ставим so-vits-svc-fork¶
Рекомендуется делать все манипуляции внутри виртуального python-окружения. В этом случае, все пакеты будут ставиться не глобально в систему, а лежать все вместе в отдельно папке. Это позволит предотвратить возможные конфликты версий в системе, если вы используете много софта с зависимостями на python; так же будет возможным держать одновременно несколько версий программы, либо одним кликом удалить её.
1. Создайте и откройте директорию, в которую хотите поставить so-vits-svc-fork. Откройте в ней консоль и выполните следующие команды, чтобы создать и активировать виртуальное python-окружение:
py -3.10 -m venv venv
venv\Scripts\activate
2. Устанавливаем программу и все зависимости
Если у вас NVidia:
python -m pip install -U pip setuptools wheel
pip install -U torch torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install -U so-vits-svc-fork
Если планируете запускать на процессоре:
python -m pip install -U pip setuptools wheel
pip install -U so-vits-svc-fork
Если у вас AMD + Linux
python -m pip install -U pip setuptools wheel
pip install -U torch torchaudio --index-url https://download.pytorch.org/whl/rocm5.4.2
pip install -U so-vits-svc-fork
3. После завершения установки, создайте новый .bat-файл со следующим содержимым:
cd "ваш_путь_до_папки_с_so-vits-svc-fork"
call .\Scripts\activate.bat
svcg.exe
4. Запуск программы выполняйте через данный bat-файл
Где брать готовые модели для so-vits-svc-fork¶
Данное ПО идёт без каких-либо моделей в комплекте, так что вам придётся скачать их отдельно. Либо вы можете обучить свои модели, но это выходит за рамки данного руководства. Однако, достаточно сказать, что процесс подготовки датасета и сам процесс обучения хорошо описан в официальном репозитории данного приложения.
Из публичных источников для поиска готовых моделей можно выделить следующие ресурсы: https://huggingface.co/models?search=so-vits-svc https://civitai.com/tag/so-vits-svc-fork
Модели поставляются в виде двух файлов, оба из которых являются необходимыми:
* G_1234.pth
- содержит веса модели. Цифрой в имени файлов обозначается число эпох обучения. Чем больше цифра, тем больше времени было потрачено на обучение.
* config.json
- содержит мета-информацию о модели (размерность модели, список спикеров и т.п.).
Необязательные, но полезные утилиты¶
ffmpeg¶
Консольная утилита для манипуляций с медиаконтентом. Позволяет извлекать аудио из видео, объединенять аудиодорожки с видео или картинками и многое другое. Так же, существует множество готовых интерфейсов к данной утилите, но у автора данной заметки нет какого-либо опыта с ними, так что не могу чего-либо посоветовать.
Конвертация из видео в аудио¶
WEBM -> MP3
ffmpeg -i input.webm -vn -acodec libmp3lame output.mp3
MP4 -> MP3
ffmpeg -i input.mp4 -map a output.mp3
Конвертация из аудио и картинки в видео¶
WAV + PNG -> MP4
ffmpeg -loop 1 -i image.png -i audio.wav -c:v libx264 -tune stillimage -c:a aac -b:a 192k -pix_fmt yuv420p -shortest output.mp4
audacity¶
Обработка аудиодорожки: убрать шумы, объединить дорожку с вокалом и инструментальной частью в пару кликов и т.п.
Как удалить часть трека без смещения таймингов¶
Как разбить стерео-дорожку на две моно-дорожки по отдельным каналам¶
Как объединить две моно-дорожки в одну стерео-дорожку по отдельным каналам¶
Пошаговая инструкция по изменению голоса в треке¶
Извлекаем аудио из видео¶
Если вы скачали свой трек из условного YouTube в виде видео, то сперва вам необходимо извлечь аудиочасть. Это можно сделать при помощи ffmpeg.
Разбиваем дорожку на вокал и инструментальную часть¶
Разбить дорожку необходимо, поскольку, в противном случае, so-vits-svc-fork попытается озвучить абсолютно все звуки с ипользованием предоставленной модели.
Для разбивки дорожки на составляющие можно использовать программу Ultimate Vocal Remover GUI, которая была описана выше.
Пробежимся по основным компонентам UI этой программы:
1. Трек или папка с треками, из которых будем извлекать вокал/инструменталку и путь до папки, куда будем сохранять результат
2. В данной секции мы указываем, что именно извлекать - вокал или инструменталку. Чтобы сразу сгенерировать отдельные дорожки для обоих составляющих, снимите обе галки
3. Запуск процесса извлечения вокала/инструменталки
(Опционально) Разделение стерео-трека на моно-составляющие¶
Программа so-vits-svc-fork не умеет обрабатывать отдельные каналы стерео-дорожек, что приводит к тому, что оба канала совмещаются и ваш стерео-трек будет конвертирован в моно-трек в момент изменения голоса. Избежать этого можно предварительно разбив ваш стерео-трек на два отдельных моно-трека, [используя audacity]#-) и затем изменить в них голос по отдельности. После изменения голоса по обоим моно-трекам, вы можете снова объединить их в стерео-трек, используя всё тот же audacity.
Меняем голос¶
Мы дошли до этапа, когда у нас есть трек с голосом и теперь мы можем его поменять при помощи so-vits-svc-fork с использованием любых из готовых моделей.
Пробежимся по интерфейсу программы:
1. Путь до модели и соответствующего ей конфига
2. Путь до файла или директории с треками, которые будем менять. Тут же указывается, куда будем сохранять результат
3. Имя спикера. Один файл модели может содержать несколько голосов, имя первого спикера будет подставлено из модели автоматически
4. Настойка высоты голоса. Используйте данную опцию, если вас не устраивает тональность (высота) голоса в получившемся варианте трека после синтеза. Изменение значения на 12 эквивалентно изменению голоса на одну октаву вверх или вниз (+12 = на одну октаву вверх, -12 = на одну октаву вниз). Для изменения песен обязательно отключайте опцию "Auto predict F0", иначе ваш спикер начнёт фальшивить, постоянно меняя тональность там, где это не требуется
5. Прочие настройки синтеза голоса. К сожалению, не могу дать каких-либо особых рекомендаций по данной части. В моём случае F0 prediction method = crepe показывает себя наилучшим образом
6. Настройки для изменения голоса с микрофона в реальном времени. Можете использовать данную опцию чтобы мурчать в дискордике голосом своей вайфушки и разводить анонов на шекели. Нет, серьёзно, я не знаю, какой ещё вариант использования может быть у этой опции
7. Опции сохранения и загрузки пресетов. Я настоятельно рекомендую вам создать пресеты под нужные вам модели, поскольку выбрать нужный пресет из списка будет быстрее, чем каждый раз вводить путь до модели и конфига вручную
8. Infer = изменить голос в треке (треках); (Re)Start Voice Changer = запустить изменение голоса с вашего микрофона
Вырезаем из дорожки голоса лишние шумы¶
К сожалению, UVR работает неидеально, поэтому часть инструментальных звуков в моментах, когда вокалист молчит, могут попасть в трек с вокальной частью голоса. Чтобы убрать такие отрывки, проще всего использовать audacity.
Объединяем дорожки с изменённым голосом и инструментальной частью¶
Для объединения вокальной и инструментальной дорожек в одну, запустите audacity, киньте в неё оба трека и выберите опцию "Export -> Export as нужный_вам_формат".
(Опционально) Конвертируем аудио в видео¶
Если вы хотите конвертировать получившийся трек в видео, то это можно сделать при помощи ffmpeg.