Мой опыт в нейросети RVC
Привет, читатели! Я — Селл, и хочу рассказать о своём опыте работы с нейросетью RVC, с помощью которой я делал «нейрокаверы» — перенос голосового исполнения одной песни на голос другого человека. Эксперименты стартовали летом 2023 года, к началу 2024-го я отточил оптимальные параметры, а потом время от времени возвращался, чтобы ещё чуть-чуть улучшить качество.
В основе всего лежит процесс тренировки: нужно подобрать такие значения аргументов, чтобы на выходе голос звучал максимально естественно и без лишних артефактов. Когда модель «недообучена», голос кажется роботизированным, а при «перетренировке» питч начинает «гулять», но голос сам по себе звучал как надо, потому уж лучше так если других вариантов не оставалось. Изначально лучшим аргументом для тренировки считался harvest, но после появления rmvpe тот стал, позже появился и rmvpe+, который незначательно, но улучшил результат по сравнению с версией без плюса.
Остальные аргументы при тренировке были следующие: bitrate (частота тренировки, зависит от частоты файлов датасета), hop length (отвечает за соответствие питча строго как в датасете и в зависимости от значения питч либо имел больше гибкости, либо стремился быть как в датасете без изменений), thread count (возможно что это как связано с задействием потоков видеокарты, что влияло на силу тренировки), batch (одновременная обработка файлов для ускорения тренировки, ставил максимально возможный), количество заданных и сохранённых эпох, видеокарт при тренировке.
Я тренировал модели на Kaggle — там можно было задействовать две видеокарты, но заметил, что на одной GPU итоговый голос получался чище. Для отделения вокала и инструментала пользовался Ultimate Vocal Remover, а артефакты удалял в Adobe Audition, RX Pro Audio Editor и SpectraLayers.
При генерации в качестве аргумента я всегда ставил rmvpe/rvmpe+, питч я тестировал отдельно чтобы голос соответствовал под датасет. В каких-то песнях где оригинальный голос песни пел на более высоких или низких тонах я повышал или понижал питч генерации по сравнению с обычной частью (где певец поёт неизменным тоном не повышая и не понижая его) чтобы голос оставался как в датасете.
Ну и наконец я расскажу о сборке датасета, переместил её под конец, ибо на неё я не раз тратил больше всего времени. Суммарно время датасета должно быть порядка 42-50 минут (точное значение не помню), из-за чего даже если это были датасеты например из игр где у персонажей много реплик, то нужно было их прослушивать и убирать лишние при этом стараясь укладываться во временные рамки. Самые сложными датасетами были реальные люди, ибо нужно было нарезать их речь и тратить очень много времени на чистку от лишних шумов программами, которые я указал выше. Собственно такие большие временные и энергетические затраты с отсутствием каких-либо донатов меня и демотивировали дальше заниматься нейрокаверами (хотя гипотетически я могу вернуться к ним, ибо идеи кое-какие есть).
Финальной частью при создании нейрокаверов была установка вокала персонажа под инструментал, выставление реверберации у вокала, создание или поиск тематического изображения с персонажем для обложки, встраивание его в шаблон обложки которые я делал в фотошопе, настройка анимации в Adobe After Effects и запуск рендера.
Получилась такая история с RVC, в своё время он впечатлял и доставлял удовольствие, но временные затраты и недостаточный отклик от аудитории отибили желание им заниматься. Моим приоритетным направлением сейчас является Stable Diffusion, которым я также занимаюсь с лета 2023 года. Скорее всего мой опыт с ним я разобью на серию постов, ибо материала там побольше будет, так что следите за обновлениями, будет много интересного!