Как озвучить клон с помощью SoftVC VITS и Bert-VITS2: глубокое погружение
6 марта 2024 г.Содержание
- Углубленное изучение клонирования голоса с помощью SoftVC VITS и Bert-VITS2
- Подготовка набора данных
- Отрывок из песни
- Рабочие процессы UVR
- Подготовка к записи вокала.
- Аудиооборудование Cheapskate
- Рабочие процессы Audacity
- нарезка аудио
- Очистка набора данных
- Соответствие громкости
- so-vits-svc
- Настройка среды
- Инициализация
- Загрузить предварительно обученные модели
- Подготовка набора данных
- Изменить конфигурации
- Обучение
- Вывод
- Редактирование аудио
- so-vits-svc-fork
- Установка
- Подготовка
- Обучение
- Вывод
- DDSP-SVC
- Подготовка
- Обучение
- Вывод
- Берт-витс2-V2.3
- Инициализация
- Подготовка
- Транскрипция
- Обучение и вывод
- vits-simple-api
- Изменения
- Поделиться моделями
В предыдущем посте я попробовал немного Веб-интерфейс создания TTS и нашел это интересным. Итак, я решил обучить полезную модель своему собственному голосу.
В этом проекте клонирования голоса рассматриваются как SVC для изменения голоса, так и VITS для преобразования текста в речь. Не существует единого инструмента, который выполнял бы все задачи.
Я протестировал несколько инструментов для этого проекта. Многие хорошие руководства, такие как это, это и это на китайском языке. Поэтому я подумал, что было бы полезно опубликовать свои заметки на английском языке.
Хотя so-vits-svc находится в архиве несколько месяцев, вероятно, из-за притеснений, он по-прежнему является инструментом для достижения наилучшего результата.
Другие связанные инструменты, такие как so-vits-svc-fork, so-vits-svc-5.0, DDSP-SVC и RVC обеспечивают либо более быструю/литражную оптимизацию, либо больше функций, либо лучшие интерфейсы.
Но при наличии достаточного количества времени и ресурсов ни одна из этих альтернатив не сможет конкурировать с превосходным результатом, полученным исходным so-vits-svc.
Для TTS новый инструмент под названием Bert-VITS2 работает фантастически и уже усовершенствован, выпустив свою финальную версию в прошлом месяце. У него есть совершенно разные варианты использования, например создание аудиоконтента.
Подготовка набора данных
Аудиофайлы набора данных должны быть в формате WAV, 44 100 Гц, 16 бит, моно, в идеале 1–2 часа.
Отрывок из песни
Ultimate Vocal Remover — самый простой инструмент для этой работы. Существует тема, в которой все подробно объясняется.
Рабочие процессы UVR
- Удалить и извлечь инструментальную часть
- Модель: VR-UVR(4_HP-Vocal-UVR)
- Настройки: 512 – 10 – GPU <ли>
Выход Инструментал и нечистый вокал
* Удаление и извлечение бэк-вокала. * Модель: VR-UVR(5_HP-Караоке-UVR) * Настройки: 512 - 10 - графический процессор * Вывод бэк-вокала и нечистого основного вокала
* Удалить реверберацию и шум. * Модель: VR-UVR-DeEcho-DeReverb & UVR-DeNoise * Настройки: 512 - 10 - GPU - Только другое. * Вывод: чистый основной вокал
* (Необязательно) Использование RipX (платного) для ручной тонкой очистки.
Подготовка к записи вокала
Записывать в обработанном помещении лучше с помощью конденсаторного микрофона, в противном случае для снижения шума используйте направленный или динамический микрофон.
Аудиооборудование Cheapskate
Впервые я увлекся музыкой еще в старшей школе, когда у меня были синие Sennheiser MX500 и Koss Porta Pro. Я до сих пор помню, как впервые записывал песню на Sony VAIO с помощью Cool Edit Pro.
В настоящее время я, будучи любителем, до сих пор не хочу тратить много денег на аудиооборудование, потому что это буквально черная дыра, высасывающая деньги.
Тем не менее, я очень ценю надежность этого дешевого производственного оборудования.
Основной частью моей установки является Behringer UCA202, и он идеально подходит для моих случаев использования. Я купил его за 10 долларов во время падения цен.
Это так называемый «аудиоинтерфейс», но по сути это просто звуковая карта с несколькими портами. Для наушников я использовал кабели RCA-3,5 мм TRS, полуоткрытый K240 для обычного выхода и закрытый HD669/MDR7506 для выхода на монитор.
Все три упомянутых наушника стоят менее 100 долларов за обычную цену. Также есть клоны Samson, Tascam, Knox Gear и других производителей менее чем за 50 долларов США.
В качестве устройства ввода я использую динамический микрофон, чтобы избежать шума окружающей среды. Это копия SM58 (Pyle) + магнитола Tascam DR-05 (в качестве усилителя). Другие клоны, такие как SL84c или wm58, тоже подойдут.
Я использую кабель XLR-3,5 мм TRS для подключения микрофона к микрофонному/внешнему входу рекордера, а затем использую кабель AUX для подключения линейного выхода рекордера к входу UCA202.
Не рекомендуется покупать «аудиоинтерфейс» и специальный усилитель, чтобы повторить мою настройку. Звуковая карта c-media USB стоимостью 10 долларов должна подойти. Модель Syba, которая у меня была, способна напрямую «предусиливать» динамические микрофоны и даже некоторые более дешевые микрофоны с фантомным питанием.
Установка может стоить очень дешево (40–60 долларов), но с UCA202 и DR-05 звук намного чище. И мне очень нравится физическое управление, универсальность и портативность моего старого доброго цифрового диктофона.
Рабочие процессы Audacity
Хотя когда мне как дизайнеру платили, я был вполне доволен Audition. Но для личного использования в интересном проекте Audacity — это способ избежать хаотичного зла Adobe.
нарезка звука
Используйте audio-slicer или audio-slicer (gui), чтобы разрезать аудиофайл на небольшие фрагменты для дальнейшего использования.
Настройка по умолчанию работает отлично.
Очистка набора данных
Удалите очень короткие и повторно разрежьте те, которые продолжаются более 10 секунд.
В случае большого набора данных удалите все, что меньше 4 секунд. В случае небольшого набора данных удаляйте те, которые занимают менее 2 секунд.
При необходимости выполните ручную проверку каждого файла.
Соответствие громкости
Снова используйте Audacity с нормализацией громкости; 0db должен это сделать.
so-vits-svc
Настройка среды
Виртуальная среда необходима для запуска нескольких инструментов Python в одной системе. Раньше я использовал виртуальные машины и Docker, но теперь обнаружил, что anaconda работает намного быстрее и удобнее, чем другие. р>
Создайте новую среду для so-vits-svc и активируйте ее.
conda create -n so-vits-svc python=3.8
conda activate so-vits-svc
Затем установите требования.
git clone https://github.com/svc-develop-team/so-vits-svc
cd so-vits-svc
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
#for linux
pip install -r requirements.txt
#for windows
pip install -r requirements_win.txt
pip install --upgrade fastapi==0.84.0
pip install --upgrade gradio==3.41.2
pip install --upgrade pydantic==1.10.12
pip install fastapi uvicorn
Инициализация
Загрузить предварительно обученные модели
- предварительная подготовка
wget https://huggingface.co/WitchHuntTV/checkpoint_best_legacy_500.pt/resolve/main/checkpoint_best_legacy_500.pt
<ли>
wget https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/rmvpe.pt
* журналы/44 тыс.
* wget https://huggingface.co/datasets/ms903/sovits4.0-768vec-layer12/resolve/main/sovits_768l12_pre_large_320k/clean_D_320000.pth
* wget https://huggingface.co/datasets/ms903/sovits4.0-768vec-layer12/resolve/main/sovits_768l12_pre_large_320k/clean_G_320000.pth
* журналы/44k/диффузия
* wget https://huggingface.co/datasets/ms903/Diff-SVC-refactor-pre-trained-model/resolve/main/fix_pitch_add_vctk_600k/model_0.pt
* (Альтернатива) wget https://huggingface.co/datasets/ms903/DDSP-SVC-4.0/resolve/main/pre-trained-model/model_0.pt
* (Альтернатива) wget https://huggingface.co/datasets/ms903/Diff-SVC-refactor-pre-trained-model/blob/main/hubertsoft_fix_pitch_add_vctk_500k/model_0.pt
* pre-train/nsf_hifigan
* wget -P pretrain/ https://github.com/openvpi/vocoders/releases/download/nsf-hifigan-v1/nsf_hifigan_20221211.zip
* unzip -od pretrain/nsf_hifigan pretrain/nsf_hifigan_20221211.zip
Подготовка набора данных
Поместите все подготовленные файлы audio.wav в dataset_raw/character
cd so-vits-svc
python resample.py --skip_loudnorm
python preprocess_flist_config.py --speech_encoder vec768l12 --vol_aug
python preprocess_hubert_f0.py --use_diff
Изменить конфигурации
Файл находится по адресу configs/config.json
интервал журнала
: частота печати журнала eval интервал
: частота сохранения контрольных точек эпохи
: общее количество шагов keep ckpts< /code>: количество сохраненных контрольных точек, 0 — неограниченно.
half_type
: fp32 В моем случае batch_size
: чем меньше, тем быстрее (грубее), чем больше, тем медленнее (лучше).
Рекомендуемый размер пакета на видеопамять: 4=6ГБ;6=8ГБ;10=12ГБ;14=16ГБ;20=24ГБ
Оставьте значение по умолчанию для configs/diffusion.yaml
Обучение
python cluster/train_cluster.py --gpu
python train_index.py -c configs/config.json
python train.py -c configs/config.json -m 44k
python train_diff.py -c configs/diffusion.yaml
Об этапах обучения:
Используйте train.py
для обучения основной модели; обычно можно использовать 20–30 тысяч, а 50 тысяч и выше будет достаточно. Это может занять несколько дней в зависимости от скорости графического процессора.
Не стесняйтесь остановить его, нажав ctrl+c
, и он продолжит обучение, перезапустив python train.py -c configs/config.json -m 44k
в любое время.
Используйте train_diff.py
для обучения модели диффузии; шаг обучения рекомендуется составлять 1/3 от основной модели.
Помните о перетренированности. Используйте tensorboard --logdir=./logs/44k
, чтобы отслеживать графики, чтобы убедиться, что они не совпадают.
При необходимости измените скорость обучения
с 0,0001 на 0,00005.
Когда закончите, поделитесь/перенесите эти файлы для анализа.
*конфигурация/ * конфиг.json * диффузия.yaml
- журналы/44 тыс.
- feature_and_index.pkl
- kmeans_10000.pt
- model_0.pt
- G_xxxxxx.pt
Вывод
Пришло время опробовать обученную модель. Я бы предпочел Webui из-за удобства настройки параметров.
Но прежде чем запустить его, отредактируйте следующие строки в webUI.py
для доступа к локальной сети:
os.system("start http://localhost:7860")
app.launch(server_name="0.0.0.0", server_port=7860)
Запустите python webUI.py
; затем откройте его ipaddress:7860
из веб-браузера.
Веб-интерфейс не имеет английской локализации, но Immersive Translate будет полезен.
Большинство параметров будут хорошо работать со значениями по умолчанию. См. это и это, чтобы внести изменения.
Загрузите эти 5 файлов:
main model.pt
и его config.json
diffusion model.pt
и его diffusion.yaml
Либо модель кластера kmeans_10000.pt
для речи, либо функция поиска feature_and_index.pkl
для пения.
Предиктор F0
предназначен только для разговора, а не для пения. Рекомендуйте RMVPE
при использовании.
Изменение высоты звука
полезно при пении женской песни с использованием модели мужским голосом или наоборот.
Соотношение моделей и объектов кластеризации
— это способ управления тоном. Используйте 0,1
, чтобы получить наиболее четкую речь, и используйте 0,9
, чтобы получить тон, наиболее близкий к модели.
шаги мелкого распространения
должны быть установлены в районе 50
, это улучшает результат при 30–100
шагах.
Редактирование аудио
Эта процедура не является обязательной. Просто для создания лучшей песни.
Я не буду вдаваться в подробности, поскольку используемое мной программное обеспечение для редактирования звука, или так называемая DAW (цифровая звуковая рабочая станция), не является бесплатным. Я не собираюсь защищать несвободное программное обеспечение, даже несмотря на то, что вся отрасль является платной и имеет закрытый исходный код.
Audacity поддерживает многодорожечное воспроизведение, эффекты и многое другое. Он также загружает некоторые продвинутые плагины VST.
Нетрудно найти учебные пособия по мастерингу песен с помощью Audacity.
Обычно процесс мастеринга включает в себя микширование/балансировку, эквализацию/компрессию, реверберацию и создание образов. Чем более продвинутым будет инструмент, тем проще будет этот процесс.
В будущем я обязательно потрачу больше времени на использование Audacity в процессе мастеринга и всем рекомендую это сделать.
so-vits-svc-fork
Это вилка so-vits-svc с поддержкой в реальном времени. Модели совместимый. Проще в использовании, но не поддерживает модель Diffusion. Для специального изменения голоса в реальном времени рекомендуется использовать устройство смены голоса.
Установка
conda create -n so-vits-svc-fork python=3.10 pip
conda activate so-vits-svc-fork
git clone https://github.com/voicepaw/so-vits-svc-fork
cd so-vits-svc-fork
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
pip install click
sudo apt-get install libportaudio2
Подготовка
Поместите файлы набора данных в формате .wav в so-vits-svc-fork/dataset_raw
svc pre-resample
svc pre-config
Отредактируйте batch_size
в configs/44k/config.json
. Эта вилка большего размера, чем оригинал.
Обучение
svc pre-hubert
svc train -t
svc train-cluster
Вывод
Используйте графический интерфейс с svcg
. Для этого требуется локальная среда рабочего стола.
Или используйте CLI с svc vc
для реального времени и svc infer -m "logs/44k/xxxxx.pth" -c "configs/config.json" raw/xxx.wav
для генерации.
DDSP-SVC
DDSP-SVC требует меньше аппаратных ресурсов и работает быстрее, чем so-vits-svc. Он поддерживает как модели реального времени, так и модели диффузии (Diff-SVC).
conda create -n DDSP-SVC python=3.8
conda activate DDSP-SVC
git clone https://github.com/yxlllc/DDSP-SVC
cd DDSP-SVC
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install -r requirements.txt
См. раздел Инициализация для двух файлов:
pretrain/rmvpe/model.pt
pretrain/contentvec/checkpoint_best_legacy_500.pt
Подготовка
python draw.py
python preprocess.py -c configs/combsub.yaml
python preprocess.py -c configs/diffusion-new.yaml
Отредактируйте configs/
batch_size: 32 (16 for diffusion)
cache_all_data: false
cache_device: 'cuda'
cache_fp16: false
Обучение
conda activate DDSP-SVC
python train.py -c configs/combsub.yaml
python train_diff.py -c configs/diffusion-new.yaml
tensorboard --logdir=exp
Вывод
Рекомендуется использовать main_diff.py
, поскольку он включает в себя как DDSP, так и диффузионную модель.
python main_diff.py -i "input.wav" -diff "model_xxxxxx.pt" -o "output.wav"
Графический интерфейс в реальном времени для клонирования голоса:
python gui_diff.py
Берт-витс2-V2.3
Это инструмент TTS, который полностью отличается от всего вышеперечисленного. С его помощью я уже создал несколько аудиокниг со своим голосом для родителей, и они им очень понравились.
Вместо использования оригинала я использовал форк от v3u для упрощения настройки.
Инициализация
conda create -n bert-vits2 python=3.9
conda activate bert-vits2
git clone https://github.com/v3ucn/Bert-vits2-V2.3.git
cd Bert-vits2-V2.3
pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 torchaudio==2.0.2+cu118 --index-url https://download.pytorch.org/whl/cu118
pip install -r requirements.txt
Загрузите предварительно обученные модели (включая китайский, японский и английский язык):
wget -P slm/wavlm-base-plus/ https://huggingface.co/microsoft/wavlm-base-plus/resolve/main/pytorch_model.bin
wget -P emotional/clap-htsat-fused/ https://huggingface.co/laion/clap-htsat-fused/resolve/main/pytorch_model.bin
wget -P emotional/wav2vec2-large-robust-12-ft-emotion-msp-dim/ https://huggingface.co/audeering/wav2vec2-large-robust-12-ft-emotion-msp-dim/resolve/main/pytorch_model.bin
wget -P bert/chinese-roberta-wwm-ext-large/ https://huggingface.co/hfl/chinese-roberta-wwm-ext-large/resolve/main/pytorch_model.bin
wget -P bert/bert-base-japanese-v3/ https://huggingface.co/cl-tohoku/bert-base-japanese-v3/resolve/main/pytorch_model.bin
wget -P bert/deberta-v3-large/ https://huggingface.co/microsoft/deberta-v3-large/resolve/main/pytorch_model.bin
wget -P bert/deberta-v3-large/ https://huggingface.co/microsoft/deberta-v3-large/resolve/main/pytorch_model.generator.bin
wget -P bert/deberta-v2-large-japanese/ https://huggingface.co/ku-nlp/deberta-v2-large-japanese/resolve/main/pytorch_model.bin
Создайте папку модели персонажа mkdir -p Data/xxx/models/
Скачать базовые модели:
!wget -P Data/xxx/models/ https://huggingface.co/OedoSoldier/Bert-VITS2-2.3/resolve/main/DUR_0.pth
!wget -P Data/xxx/models/ https://huggingface.co/OedoSoldier/Bert-VITS2-2.3/resolve/main/D_0.pth
!wget -P Data/xxx/models/ https://huggingface.co/OedoSoldier/Bert-VITS2-2.3/resolve/main/G_0.pth
!wget -P Data/xxx/models/ https://huggingface.co/OedoSoldier/Bert-VITS2-2.3/resolve/main/WD_0.pth
#More options
https://openi.pcl.ac.cn/Stardust_minus/Bert-VITS2/modelmanage/model_filelist_tmpl?name=Bert-VITS2_2.3%E5%BA%95%E6%A8%A1
https://huggingface.co/Erythrocyte/bert-vits2_base_model/tree/main
https://huggingface.co/OedoSoldier/Bert-VITS2-2.3/tree/main
Отредактируйте train_ms.py
, заменив все bfloat16
на float16
Отредактируйте webui.py
для доступа к локальной сети:
webbrowser.open(f"start http://localhost:7860")
app.launch(server_name="0.0.0.0", server_port=7860)
Отредактируйте Data/xxx/config.json
для batch_size
и spk2id
Подготовка
Рабочий процесс аналогичен описанному в предыдущем разделе.
Удалите шум и тишину, выполните нормализацию, затем поместите неразрезанный WAV-файл в Data/xxx/raw
.
Отредактируйте config.yml
, указав dataset_path
, num_workers
и keep_ckpts
.
Запустите python3 audio_slicer.py
, чтобы нарезать WAV-файл.
Очистите набор данных (Data/xxx/raw
), удалив небольшие файлы длительностью менее 2 секунд.
Транскрипция
Установить шепот pip install git+https://github.com/openai/whisper.git
Чтобы отключить автоматическое определение языка, установите только английский и используйте модель large
; отредактируйте short_audio_transcribe.py
, как показано ниже:
# set the spoken language to english
print('language: en')
lang = 'en'
options = whisper.DecodingOptions(language='en')
result = whisper.decode(model, mel, options)
# set to use large model
parser.add_argument("--whisper_size", default="large")
#Solve error "Given groups=1, weight of size [1280, 128, 3], expected input[1, 80, 3000] to have 128 channels, but got 80 channels instead" while using large model
mel = whisper.log_mel_spectrogram(audio,n_mels = 128).to(model.device)
Запустите python3 short_audio_transcribe.py
, чтобы начать транскрипцию.
Повторно выполните выборку срезанного набора данных: python3 resample.py --sr 44100 --in_dir ./Data/zizek/raw/ --out_dir ./Data/zizek/wavs/
Транскрипция предварительной обработки: python3 preprocess_text.py --transcription-path ./Data/zizek/esd.list
Создайте конфигурацию функции BERT: python3 bert_gen.py --config-path ./Data/zizek/configs/config.json
Обучение и вывод
Запустите python3 train_ms.py
, чтобы начать обучение
Отредактируйте config.yml
для пути к модели:
model: "models/G_20900.pth"
Запустите python3 webui.py
, чтобы запустить webui для вывода
vits-simple-api
vits-simple-api — это веб-интерфейс для использования обученных моделей. Я использую это в основном из-за поддержки длинных текстов, которой нет в исходном проекте.
git clone https://github.com/Artrajz/vits-simple-api
git pull https://github.com/Artrajz/vits-simple-api
cd vits-simple-api
conda create -n vits-simple-api python=3.10 pip
conda activate vits-simple-api &&
pip install -r requirements.txt
(Необязательно) Скопируйте файлы предварительно обученной модели из Bert-vits2-V2.3/
в vits-simple-api/bert_vits2/
Скопируйте Bert-vits2-V2.3/Data/xxx/models/G_xxxxx.pth
и Bert-vits2-V2.3/Data/xxx/config.json
в < code>vits-simple-api/Model/xxx/
Отредактируйте config.py
для MODEL_LIST
и параметра по умолчанию
по своему усмотрению
Отредактируйте Model/xxx/config.json
, как показано ниже:
"data": {
"training_files": "Data/train.list",
"validation_files": "Data/val.list",
"version": "2.3"
Проверьте/измените model_list
в config.yml
как [xxx/G_xxxxx.pth, xxx/config.json]
Запустите python app.py
Изменения
SDP Ratio
для тона, Noise
для случайности, Noise_W
для произношения и Length
для скорости. эмоция
и стиль
говорят сами за себя
Поделиться моделями
В его репозитории Hugging Face представлено множество моделей VITS, которыми поделились другие. Вы можете сначала опробовать его, а затем загрузить нужные модели из Files.
модель Genshin широко используется в некоторых сообществах по созданию контента из-за ее высокого качества. Он содержит сотни символов, хотя поддерживаются только китайский и японский языки.
В другом репозитории есть множество моделей Bert-vits2, сделанных с помощью популярных китайских стримеров и VTubers.
Уже есть проекты, создающие AI Vtuber, такие как это и это. Я с нетерпением жду, как эта технология сможет изменить отрасль в ближайшем будущем.
https://techshinobi.org/posts/voice-vits/https://techshinobi.org/posts/voice-vits/< /а>
Оригинал