RVC - MaHivka/ultimate-voice-models-FAQ GitHub Wiki

RVC

RVC (Retrieval based Voice Conversion) - это ИИ для замены вокала и создания собственных моделей, проще говоря, если вы хотите делать каверы и создать запись голоса друга или свою, то вам сюда.

Если у вас нет ПК, то вы можете попробовать использовать Kaggle или Colab, но через телефон это не весьма удобно.

Установка

Минимальные требования к ПК:

  • Видеокарта: GTX 1050 / эквивалент от AMD и выше (возможно и ниже)
  • Оперативная память: 8 Гб (желательно с файлом подкачки)
  • Место на диске: 4 Гб

Если вы удостоверились, что ваш компьютер сможет выдержать RVC или вы просто хотите протестить его на стресс, то переходим к следующему этапу.

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

  1. Установите одну из этих версий RVC:
  2. После загрузки архива распакуйте его по пути, который не содержит пробелы и русские символы
  3. Запустите go-web.bat (для замены кавера), либо go-realtime.bat (для изменения голоса в реальном времени)
  4. Дождитесь запуска RVC
  5. Поздравляем! У вас получилось запустить 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

Дополнительные настройки:

  • If >=3: apply median filtering - Может устранить эффект удушья (применяется если значение больше, либо равно 3)
  • Protect voiceless consonants - Защита глухих согласных и звуков дыхания, может устранить эффект разрыва вокала, но низкие настройки могут испортить индексацию

Настройки, которые лучше не менять:

  • Resample the output audio - Опция изменяет частоту дискретизации выходного аудио, не влияет на качество

* - Значение может быть уникальным для каждого вокала

Создание кавера

Прежде чем вы начнете делать свой кавер вам нужно будет отделить вокал от инструментала, делается это двумя способами:

  1. UVR
  2. Сторонние сайты, например MVSEP

Создание кавера:

  1. Установите нужную голосовую модель
  2. Загрузите файл .pth в папку assets/weights, а .index в logs
  3. Загрузите вокал отделенный от инструментала в папку audios
  4. Нажмите кнопку Refresh voice list, index path and audio files чтобы обновить списки
  5. Выберите в настройках нужную модель, index-файл и аудио
  6. Настройте RVC (если вы этого не делали)
  7. Нажмите кнопку Convert
  8. В зависимости от вашей видеокарты обработка займет некоторое время
  9. Полученный файл сведите вместе с инструменталом при помощи audacity или других программ

Создание собственной модели

Для того, чтобы вы могли создать собственную модель
вы должны иметь версию RVC с возможностью тренировки

Создание собственной модели может занять достаточно много времени, особенно на слабых компьютерах.

Создание датасета

Датасет - набор данных, по которому будет обучаться новая модель, в нашем случае - это записи голоса (не обязательно голоса)

Внимание!
Датасет может быть ЛЮБЫМ, одни модели могут требовать определенных эффектов, а другие нет.
Все зависит от ваших требований к модели и желаемых результатов!

Требования к датасету:

  1. Отсутствие шумов, кликов мыши/клавиатуры, тишины и прочего
  2. Примерная длина всех аудио от 1 до 30 минут, оптимально от 3 до 10 минут (лучший вариант - 5 минут с большим охватом спектра голоса)
    • На монотонный голос хватит от 1 до 5 минут датасета
    • На большой охват голоса (изменения интонации, высоты) хватит от 1 до 5 минут
  3. Для удобства можно разделить на отдельные файлы (можно и произвольной длины)

Приоритеты для датасета:

  1. Качество
  2. Диапазон (спектр)
  3. Количество (длина)

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

Обучение модели

Необходимые шаги:

  1. Запустите RVC
  2. После загрузки RVC перейдите на вкладку train
  3. Загрузите датасет в нужное поле
  4. Нажмите кнопку process data и ожидайте появления сообщения
  5. Настройте некоторые настройки так, как вам нужно (rmvpe лучше оставить)
  6. Нажмите кнопку Feature extraction
  7. Настройте сохранение промежуточных файлов, кол-во эпох и прочее
  8. Нажмите на кнопку Train feature index (можно и после обучения)
  9. Нажмите на кнопку Train Model
  10. Запустите Tensorboard
  11. Смотрите на графики и не допускайте переобучения
  12. Все ваши файлы будут в папках assets/weights и logs

Настройки

Первого шага:
  1. Enter the experiment name - название вашей модели
  2. Target sample rate - требуемая частота дискретизации (оставляем на 40к)
  3. Whether the model has pitch guidance - регулировка высоты тона (оставляем по умолчанию)
  4. Version - версия (лучше вторую)
  5. Number of CPU processes... - кол-во потоков, которое будет задействовано при обучении (оставляем по умолчанию)
Второго шага:
шаг A:
  1. Enter the path of the training folder - полный путь к датасету
  2. Please specify the speaker/singer ID - идентификатор диктора/певца (оставляем по умолчанию)
шаг B:
  1. Enter the GPU index(es)... - ID видеокарт, которые будут обучать модель (отделять при помощи '-', пример: 0-1)
    GPU Information - ID карты и ее название
  2. Select the pitch extraction algorithm... - алгоритм извлечения высоты (лучше mangio-crepe/rmvpe)
Третьего шага:
  1. Save frequency - кол-во эпох для сохранения (пример: 5 - каждая пятая эпоха будет сохранена)
  2. Total training epochs - кол-во эпох, при котором завершится обучение (больше 700 не советую)
  3. Batch size per GPU - зависит от доступной видеопамяти GPU
  4. Whether to save only the latest... - держите это включенным, чтобы у вас не закончилось место
  5. Cache all training sets to GPU... - кэширование датасета (если датасет маленький (менее 10 мин) ставьте)
  6. Save a small final model... - сохранит пригодную для использования модель для каждого сохранения
  7. Load pre-trained base model G path - советую не трогать
  8. Load pre-trained base model D path - советую не трогать
  9. Enter the GPU index(es)... - ID видеокарт, которые будут обучать модель (отделять при помощи '-', пример: 0-1)

Tensorboard

Tensorboard - инструмент, предназначенный для того, чтобы выявлять перетренировку модели

Установка Tensorboard
  1. Установите Python (если не установлен)
  2. В командной строчке пропишите pip install tensorflow (именно tensorflow)
  3. Создайте go-tensorboard.bat в корневой папке RVC (можно любое другое)
  4. Напишите внутри файла команду 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 модель не готова), тогда нужно выполнить следующие шаги:

  1. Снова запустите RVC (если этого не сделали)
  2. Выставьте идентичные настройки, которые вы использовали при тренировке модели
  3. Нажмите Process Data и Feature Extraction (если файлы из папки logs удалены)
  4. Выставьте большее количество эпох (если обучение завершилось, но судя по Tensorboard модель не готова)
  5. Нажимаете кнопку Train Model (обучение продолжится с последней сохраненной эпохи)

Внимание!
Если обучение началось с первой эпохи, то прервите его кнопкой Stop Training, либо Ctrl+C в консоли!

Доп. информация


Дата последнего обновления: 11.02.2024 (ДД.ММ.ГГГГ)

⚠️ **GitHub.com Fallback** ⚠️