RVC - MaHivka/ultimate-voice-models-FAQ GitHub Wiki
RVC (Retrieval based Voice Conversion) - это ИИ для замены вокала и создания собственных моделей, проще говоря, если вы хотите делать каверы и создать запись голоса друга или свою, то вам сюда.
Если у вас нет ПК, то вы можете попробовать использовать Kaggle или Colab, но через телефон это не весьма удобно.
- Видеокарта: GTX 1050 / эквивалент от AMD и выше (возможно и ниже)
- Оперативная память: 8 Гб (желательно с файлом подкачки)
- Место на диске: 4 Гб
Если вы удостоверились, что ваш компьютер сможет выдержать RVC или вы просто хотите протестить его на стресс, то переходим к следующему этапу.
- Установите одну из этих версий RVC:
- После загрузки архива распакуйте его по пути, который не содержит пробелы и русские символы
- Запустите
go-web.bat
(для замены кавера), либоgo-realtime.bat
(для изменения голоса в реальном времени) - Дождитесь запуска RVC
- Поздравляем! У вас получилось запустить RVC!
Если вы запустили go-realtime.bat
, то переходите в раздел Voice-changer, поскольку информация дальше идет для go-web.bat
.
Здесь максимально кратко описаны настройки RVC и за что они отвечают.
-
Inferencing voice
- эта опция должна содержать информацию о нужной модели -
Path to the feature index file
- эта опция должна содержать информацию о нужной модели (Желательный формат расположения файла: logs/<model_name>/<index_file>) -
Transpose
- Значение, при помощи которого вы должны будете получить нужный результат (влияет на высоту голоса)*
- Указание файла для обработки:
-
Add audio's name to...
- Полный путь к вокалу (приоритетнее чемAuto detect audio
) -
Auto detect audio
- Выбор вокала через выпадающий список (требуется разместить файл в директории RVC/audios/)
-
- Указание index файла:
-
Path to the feature...
- Полный путь к index файлу (приоритетнее чемPath to your added.index
) -
Path to your added.index
- Выбор .index через выпадающий список (выбирается автоматом, если путь к нему такой: logs/<название_модели>/added.index)
-
-
Search feature ratio
- Отвечает за приближенность голоса к оригиналу модели, из-за большого количества артефактов ставить это значение больше 0.4 не имеет смысла -
Select the pitch extraction algorithm
- Дословно: Алгоритм извлечения высот, лучше оставить rmvpe, либо mangio-crepe- Если выбрать алгоритм mangio-crepe/mangio-crepe-tiny, то откроется новая настройка:
Mangio-Crepe Hop Length
- Ниже - лучше, но дольше, не рекомендуется ставить ниже 60
- Если выбрать алгоритм mangio-crepe/mangio-crepe-tiny, то откроется новая настройка:
-
If >=3: apply median filtering
- Может устранить эффект удушья (применяется если значение больше, либо равно 3) -
Protect voiceless consonants
- Защита глухих согласных и звуков дыхания, может устранить эффект разрыва вокала, но низкие настройки могут испортить индексацию
-
Resample the output audio
- Опция изменяет частоту дискретизации выходного аудио, не влияет на качество
* - Значение может быть уникальным для каждого вокала
Прежде чем вы начнете делать свой кавер вам нужно будет отделить вокал от инструментала, делается это двумя способами:
- Установите нужную голосовую модель
- Загрузите файл
.pth
в папкуassets/weights
, а.index
вlogs
- Загрузите вокал отделенный от инструментала в папку
audios
- Нажмите кнопку
Refresh voice list, index path and audio files
чтобы обновить списки - Выберите в настройках нужную модель, index-файл и аудио
- Настройте RVC (если вы этого не делали)
- Нажмите кнопку
Convert
- В зависимости от вашей видеокарты обработка займет некоторое время
- Полученный файл сведите вместе с инструменталом при помощи audacity или других программ
Для того, чтобы вы могли создать собственную модель
вы должны иметь версию RVC с возможностью тренировки
Создание собственной модели может занять достаточно много времени, особенно на слабых компьютерах.
Датасет - набор данных, по которому будет обучаться новая модель, в нашем случае - это записи голоса (не обязательно голоса)
Внимание!
Датасет может быть ЛЮБЫМ, одни модели могут требовать определенных эффектов, а другие нет.
Все зависит от ваших требований к модели и желаемых результатов!
- Отсутствие шумов, кликов мыши/клавиатуры, тишины и прочего
- Примерная длина всех аудио от 1 до 30 минут, оптимально от 3 до 10 минут (лучший вариант - 5 минут с большим охватом спектра голоса)
- На монотонный голос хватит от 1 до 5 минут датасета
- На большой охват голоса (изменения интонации, высоты) хватит от 1 до 5 минут
- Для удобства можно разделить на отдельные файлы (можно и произвольной длины)
- Качество
- Диапазон (спектр)
- Количество (длина)
После того, как вы сделаете датасет можно переходить к обучению модели.
- Запустите RVC
- После загрузки RVC перейдите на вкладку
train
- Загрузите датасет в нужное поле
- Нажмите кнопку
process data
и ожидайте появления сообщения - Настройте некоторые настройки так, как вам нужно (rmvpe лучше оставить)
- Нажмите кнопку
Feature extraction
- Настройте сохранение промежуточных файлов, кол-во эпох и прочее
- Нажмите на кнопку
Train feature index
(можно и после обучения) - Нажмите на кнопку
Train Model
- Запустите Tensorboard
- Смотрите на графики и не допускайте переобучения
- Все ваши файлы будут в папках
assets/weights
иlogs
-
Enter the experiment name
- название вашей модели -
Target sample rate
- требуемая частота дискретизации (оставляем на 40к) -
Whether the model has pitch guidance
- регулировка высоты тона (оставляем по умолчанию) -
Version
- версия (лучше вторую) -
Number of CPU processes...
- кол-во потоков, которое будет задействовано при обучении (оставляем по умолчанию)
-
Enter the path of the training folder
- полный путь к датасету -
Please specify the speaker/singer ID
- идентификатор диктора/певца (оставляем по умолчанию)
-
Enter the GPU index(es)...
- ID видеокарт, которые будут обучать модель (отделять при помощи '-', пример: 0-1)
GPU Information
- ID карты и ее название -
Select the pitch extraction algorithm...
- алгоритм извлечения высоты (лучше mangio-crepe/rmvpe)
-
Save frequency
- кол-во эпох для сохранения (пример: 5 - каждая пятая эпоха будет сохранена) -
Total training epochs
- кол-во эпох, при котором завершится обучение (больше 700 не советую) -
Batch size per GPU
- зависит от доступной видеопамяти GPU -
Whether to save only the latest...
- держите это включенным, чтобы у вас не закончилось место -
Cache all training sets to GPU...
- кэширование датасета (если датасет маленький (менее 10 мин) ставьте) -
Save a small final model...
- сохранит пригодную для использования модель для каждого сохранения -
Load pre-trained base model G path
- советую не трогать -
Load pre-trained base model D path
- советую не трогать -
Enter the GPU index(es)...
- ID видеокарт, которые будут обучать модель (отделять при помощи '-', пример: 0-1)
Tensorboard - инструмент, предназначенный для того, чтобы выявлять перетренировку модели
- Установите Python (если не установлен)
- В командной строчке пропишите
pip install tensorflow
(именноtensorflow
) - Создайте
go-tensorboard.bat
в корневой папке RVC (можно любое другое) - Напишите внутри файла команду
tensorboard --logdir logs --bind_all
Простой вариант
Смотрите на график loss/g/total, пока он не начнет постоянно расти, после того, как вы выявили перетренировку ищите МИНИМАЛЬНОЕ значение графика и найдите значение steps
, затем в папке weights
найдите у сохраненных моделей значение s
чуть меньше или равное количеству steps
!
Подробный вариант
Если d/loss снижается, а g/loss растет, то модель перетренирована.
Если G падает, а D растет - это переобучение.
OVERFITTING - это правильное название переобучения,
но в принципе, пока G и D зеркально отражают друг друга, все хорошо.
Когда G и D перестают снижаться, это не значит, что обучение закончено.
Вы должны проверить также графики KL и Mel.
Если они тоже снижаются, то обучение еще не закончено.
Эти три параметра важны для создания хорошей модели:
Mel и KL - это, по сути, статистика того, насколько хороша модель (Вы можете игнорировать KL, он не очень важен).
Mel - это то, насколько точным является поле. Чем ближе к 0, тем точнее.
Но в принципе, если KL и Mel уменьшаются, то это хорошая модель.
KL означает расхождение [Кульбака-Лейблера](https://ru.wikipedia.org/wiki/Расстояние_Кульбака_—_Лейблера).
Информация взята из [гайда](https://rentry.org/RVC_making-models) от [LUSBERT](https://discord.com/users/917711764571951144)
Иногда возникает необходимость в продолжении обучения модели (например: вылетела программа, вырубили свет или просто завершилось обучение, но судя по Tensorboard модель не готова), тогда нужно выполнить следующие шаги:
- Снова запустите RVC (если этого не сделали)
- Выставьте идентичные настройки, которые вы использовали при тренировке модели
- Нажмите
Process Data
иFeature Extraction
(если файлы из папкиlogs
удалены) - Выставьте большее количество эпох (если обучение завершилось, но судя по Tensorboard модель не готова)
- Нажимаете кнопку
Train Model
(обучение продолжится с последней сохраненной эпохи)
Внимание!
Если обучение началось с первой эпохи, то прервите его кнопкой Stop Training
, либо Ctrl+C в консоли!
Дата последнего обновления: 11.02.2024 (ДД.ММ.ГГГГ)