Как озвучить клон с помощью SoftVC VITS и Bert-VITS2: глубокое погружение

Как озвучить клон с помощью 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/< /а>


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE