Прошу прощения
Добрый день, не разобрался как писать тут в лс и есть ли они вообще. А есть гайд как сделать датасет из своего голоса и озвучивать им текст? Если поможете - буду очень благодарен
Здравствуйте.
- Уроки по созданию "набора данных (датасет)", есть на "YouTube" - Но в принципе делается это не сложно:
1.1 - Понадобится любая программа для работы со звуком (Например: Adobe Audition), далее создаём проект для записи, который должен иметь следующие параметры:
Частота дискретизации = 44100 Гц (или 44.1 кГц);
Глубина звука (Битность) = 16 Бит;
Количество каналов записи = 1 (Моно).
Далее начинаем запись и читаем текст своим голос делая небольшие паузы (примерно от 1 до 5 секунд) каждые 10-15 секунд записи, но запись не останавливаем. - Таким образом необходимо записать звуковую дорожку с примерной длительностью от 15 минут и до 2 часов (Тут зависит от того какое вы хотите итоговое качество и от производительности компьютера на котором будет проходить тренировка последующего набора данных - Чем больше набор данных, тем выше качество натренированной модели, но существенно дольше процесс тренировки этого набора данных).
1.2 Обработка записанных данных (Необязательный этап) - В этом этапе необходимо почистить записанную аудиодорожку от фонового шума, от лишних звуком, а так-же убрать фрагменты речи, которые записались с проблемами (Например вы что-то говорили и на фоне произошёл какой-то звук или вы говорили и поперхнулись).
1.3 Нарезка записанной аудио дорожки на небольшие фрагменты с длительностью 10-15 секунд, тут есть несколько способов и вариантов нарезки:
- 1 Нарезать каждый фрагмент вручную (Это самый долгий способ);
- 2 Для каждого фрагмента сделать свой маркер и потом сделать экспорт аудио на основе выбранного диапазона маркеров (Это тоже долго);
- 3 Используя автоматическую нарезку на основе тишины при помощи программы "Audio Slicer (https://github.com/flutydeer/audio-slicer)", (Это быстро, но порой программа может принять вашу речь за тишину в итоге разрезав её на не приятные обрывистые куски);
- 4 Создать файл субтитров (.SRT) для вашей записанной аудиодорожки при помощи таких программ как "Subtitle Edit (https://github.com/SubtitleEdit/subtitleedit)" или "Speech Translate (https://github.com/Dadangdut33/Speech-Translate)" или другим способом. Далее используя программу "split media (https://github.com/danielbair/split-media-by-srt-gui)" и созданный (.SRT файл), нарезать длинную записанную аудио дорожку на небольшие фрагменты.
- Теперь набор данных готов и его необходимо натренировать для последующего использования. Для этого понадобятся:
- 1 Видеокарта Nvidia с поддержкой Cuda и объёмом видеопамяти не менее 6 гигабайт (можно и меньше, но тогда тренировка будет очень долгой), я для этого использую "GTX 1060 6 GB", если у вас другая видеокарта то некоторые параметры придётся подбирать индивидуально;
- 2 Установленная "Anaconda (https://www.anaconda.com/download/success)";
- 3 Установленная нейросеть "so-vits-svc-fork (https://github.com/voicepaw/so-vits-svc-fork)";
2.1 Устанавливаем "Anaconda", тут ничего сложно - но, если что на "YouTube" много уроков по установке. Я использовал вот этот урок по установке "https://www.youtube.com/watch?v=tZn0lcGO5OQ", но я указывал чуть другие параметры.
2.2 После установки "Anaconda", её необходимо запустить и начать установку нейросети "so-vits-svc-fork", при помощи следующих команд (эти команды актуальны для моей системы и не факт, что у вас они заработают как надо, поэтому рекомендую сначала попробовать установку из из видео по ссылке в пункте "2.1")
conda create --name so-vits-svc-fork python=3.10
conda activate so-vits-svc-fork
pip install --upgrade pip wheel
pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install -U so-vits-svc-fork
pip install chardet
pip install cchardet
2.3 Как только установка будет завершена (Anaconda закрывать не надо), необходимо будет проверить работу нейросети запустив её при помощи "svcf-gui.exe", который находится по следующему пути "Ваш путь до установки Anaconda\miniconda3\envs\so-vits-svc-fork\Scripts\svcf-gui.exe"
После запуска окно нейросети будет выглядеть вот-так
2.4 Если всё запустилось при этом есть галочка "Use GPU", значит всё установилось верно и можно переходить к следующему этапу. - Если нейросеть не запустилась или нет галочки "Use GPU", то необходимо повторить процесс установки (попробовав мой вариант установки или подобрав свой с помощью поиска в интернете)
2.5 Этап тренировки набора данных:
- 1 Переходим в корневую папку нейросети, которая находится по следующему пути "Ваш путь до установки Anaconda\miniconda3\envs\so-vits-svc-fork" и создаём там следующие папки, если их нет (configs, dataset, dataset_raw, filelists, logs);
- 2 Переходим в папку "dataset_raw" и создаём там папку с названием вашей будущей модели (Например: My_Voice_Test_One - В названии не должно быть пробелов и символов кириллицы);
- 3 Переходим к окну "Anaconda", которые использовалось для установки нейросети и прописываем поочерёдно следующие команды:
cd \miniconda3\envs\so-vits-svc-fork\logs\44k\miniconda3\envs\so-vits-svc-fork
(В моём случаи эта команда выглядит так: "cd C:\Programs\Audio-Editors\SO-VITS-SVC\miniconda3\envs\so-vits-svc-fork")
svc
svc pre-resample
svc pre-config
4 Переходим в папку "44k", которая находится по пути "Ваш путь до установки Anaconda\miniconda3\envs\so-vits-svc-fork\configs\44k" и открываем файл "config.json" в этом файле указаны параметры при которых будет тренироваться модель, нас на данный момент волнует только 2 параметра ""epochs": 10000," и ""batch_size": 16,".
"epochs": 10000, (Тут изначально указано 10000, это очень большое число и я его меняю на: 100, 200, 500 или 2000 в зависимости от количества данных - в большинстве случаев 500 это самый оптимальный вариант);
"batch_size": 16, (Тут изначально указано 16, но для GTX 1060 6gb это слишком много так-так не хватит видеопамяти, поэтому я обычно ставлю 4 - это чуть снижает качество тренировки и увеличивает время для тренировки, но при этом тренировка закончится без ошибок и модель будет спокойно работать);5 После изменения "config.json", необходимо сохранить файл и продолжить вводить команды:
svc pre-hubert
svc train
Теперь необходимо ждать завершения процесса обучения набора данных "Датасета"
- Использование обученного набора данных.
1 После завершения обучения в папке "44k", которая находится по пути "\miniconda3\envs\so-vits-svc-fork\logs\44k\miniconda3\envs\so-vits-svc-fork\logs\44k" появятся несколько файлов, нам нужны следующие:
D_500.pth
G_500.pth
config.json
Число 500 обозначает количество выбранных эпох в файле "config.json"2 Эти файлы необходимо скопировать в любую удобную для вас папку, после копирования необходимо запустить "svcf-gui.exe", который находится по следующему пути "Ваш путь до установки Anaconda\miniconda3\envs\so-vits-svc-fork\Scripts\svcf-gui.exe". Как только программа запуститься и появится окно управления, я рекомендую сразу поменять некоторые параметры:
"Silence Threshold" на "-60" (по умолчанию -35)
"Auto predict F0" включить поставив галочку (по умолчанию выключен)
"F0 Prediction method" установить на "Crepe" (по умолчанию "dio")
"Absolute Threshold" выключить (по умолчанию включен)
"Auto Play" выключить (по умолчанию включен)
После изменения этих параметров, рекомендую сохранить их как новый "Preset" используя своё название и кнопку "Add Current settings as a preset".
- 3 Процесс использования обученной модели:
в разделе "Paths" указать пути.
В поле "Model path" указать путь куда была скопирована обученная модель "" и указать файл модели G_**.pth
В поле "Config path" указать путь куда была скопирована обученная модель "" и указать файл config.json
В разделе "File" указать путь до аудио файла, к которому будет применена модель.
Нажать "Infer" и ждать результата, который будет рядом с изначальным аудио файлом.
- Это путь куда была скопирована обученная модель.
** - Это название файла модели, как пример "G_500.pth".
- Это путь куда была скопирована обученная модель.
4 Примеры работы такого способа:
00 Оригинальная фраза из игры "dlc1rv01_dlc1rv01questgive_00004c1a_2", которую говорить "Фьюра Кровопийца" (Текст: Но не привлекай внимания. Иногда мы убиваем ради удовольствия, иногда ради выгоды. А иногда для того, чтобы отправить послание. Так вот это - послание.)Сейчас пойдут разные синтезаторы речи в чистом виде, которые озвучили оригинальный текст:
"01_1 Microsoft Azure - Svetlana" (Без обработки)
"01_2 Yandex SpeechKit - Настя" (Без обработки)
"01_3 CereVoice - Avrora" (Без обработки)
"01_4 Suno Bark - Speaker 0 (ru)" (Без обработки)
"01_4 Suno Bark - Speaker 1 (ru)" (Без обработки)
"01_5 Silero TTS - kseniya" (Без обработки)
"01_5 Silero TTS - xenia" (Без обработки)Сейчас пойдут разные синтезаторы речи в обработанном обученной моделью виде, которые озвучили оригинальный текст:
"02_1 Microsoft Azure - Svetlana" (С обработкой)
"02_2 Yandex SpeechKit - Настя" (С обработкой)
"02_3 CereVoice - Avrora" (С обработкой)
"02_4 Suno Bark - Speaker 0 (ru)" (С обработкой)
"02_4 Suno Bark - Speaker 1 (ru)" (С обработкой)
"02_5 Silero TTS - kseniya" (С обработкой)
"02_5 Silero TTS - xenia" (С обработкой)
- Теперь немного затронем тему "ТВР - Текст В Речь (TTS - Text To Speech)". Я плохо знаком с этим и к сожалению знаю мало способов для генерация речи на основе обученных данных, но о нескольких я слышал, а какие-то даже пробовал:
- 1 "Vits TTS" (Часто слышал об этом инструменте, но как им воспользоваться так и не разобрался) - https://github.com/jaywalnut310/vits/
- 2 "Piper TTS" (Использовал несколько раз, но не пробовал обучать свои модели) - https://github.com/rhasspy/piper
- 3 "Tortoise TTS" (Пробовал использовать, по умолчанию нет поддержки русского языка, не пробовал тренировать) - https://github.com/neonbjb/tortoise-tts
Спасибо огромное за подробное объяснение