Оглавление Глубокое погружение в клонирование голоса с помощью SoftVC VITS и Bert-VITS2 Подготовьте набор данных Отрывок из песни Рабочие процессы УФР Подготовка к записи вокала Аудиооборудование Скряги Рабочие процессы Audacity аудио-слайсер Очистка набора данных Громкость совпадения so-vits-svc Настройка среды Инициализация Загрузите предварительно обученные модели Подготовка набора данных Редактировать конфигурации Обучение Вывод Редактирование аудио so-vits-svc-fork Монтаж Подготовка Обучение Вывод ДДСП-SVC Подготовка Обучение Вывод Берт-витс2-В2.3 Инициализация Подготовка Транскрипция Обучение и вывод Витс-простой-API Твики Поделиться моделями В я немного попробовал и нашел его интересным. Итак, я решил обучить полезную модель своему собственному голосу. предыдущем посте TTS Generation WebUI В этом проекте клонирования голоса рассматриваются как SVC для изменения голоса, так и для преобразования текста в речь. Не существует одного инструмента, который выполнял бы все задачи. VITS Я протестировал несколько инструментов для этого проекта. Многие хорошие руководства, такие как , и , написаны на китайском языке. Поэтому я подумал, что было бы полезно опубликовать мои заметки на английском языке. это это это Хотя был заархивирован несколько месяцев, вероятно, из-за притеснений, он по-прежнему остается инструментом для достижения наилучшего результата. so-vits-svc Другие связанные инструменты, такие как , , и , обеспечивают либо более быструю оптимизацию, либо больше функций, либо лучшие интерфейсы. so-vits-svc-fork so-vits-svc-5.0 DDSP-SVC RVC Но при наличии достаточного количества времени и ресурсов ни одна из этих альтернатив не сможет конкурировать с превосходным результатом, полученным исходным so-vits-svc. Для TTS новый инструмент под названием работает фантастически и уже вышел на рынок в прошлом месяце. У него есть совершенно разные варианты использования, например, создание аудиоконтента. Bert-VITS2 Подготовьте набор данных Аудиофайлы набора данных должны быть в формате WAV, 44100 Гц, 16 бит, моно, в идеале 1-2 часа. Отрывок из песни — самый простой инструмент для этой работы. Есть , где все подробно описано. Ultimate Vocal Remover тема Рабочие процессы УФР Удалить и извлечь Инструментальную Модель: VR-UVR(4_HP-Vocal-UVR) Настройки: 512 - 10 - графический процессор Выход и нечистый вокал Инструментальный Удалите и извлеките бэк-вокал. Модель: VR-UVR(5_HP-Караоке-UVR) Настройки: 512 - 10 - графический процессор Выходной и нечистый основной вокал бэк-вокал Уберите реверберацию и шум. Модель: VR-UVR-DeEcho-DeReverb и UVR-DeNoise Настройки: 512 - 10 - GPU - Только другое. Выход чистого основного вокала (Необязательно) Использование RipX (платного) для ручной тонкой очистки. Подготовка к записи вокала Записывать в обработанном помещении лучше с помощью конденсаторного микрофона, в противном случае для снижения шума используйте направленный или динамический микрофон. Аудиооборудование Скряги Впервые я увлекся музыкой еще в старшей школе, когда у меня были синие 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, тоже подойдут. Я использую кабель TRS XLR-3,5 мм для подключения микрофона к микрофонному/внешнему входу рекордера, а затем использую кабель AUX для подключения линейного выхода рекордера к входу UCA202. Не рекомендуется покупать «аудиоинтерфейс» и специальный усилитель, чтобы повторить мою настройку. Звуковая карта c-media USB стоимостью 10 долларов должна подойти. Модель Syba, которая у меня была, способна напрямую «предусиливать» динамические микрофоны и даже некоторые более дешевые микрофоны с фантомным питанием. Установка может стоить очень дешево (40–60 долларов), но с UCA202 и DR-05 звук намного чище. И мне очень нравится физическое управление, универсальность и портативность моего старого доброго цифрового диктофона. Рабочие процессы Audacity Хотя когда мне как дизайнеру платили, я был вполне доволен Audition. Но для личного использования в забавном проекте Audacity — это способ избежать хаотического зла Adobe. Подавление шума дереверб Усечь тишину Нормализовать аудио-слайсер Используйте или чтобы разрезать аудиофайл на небольшие части для дальнейшего использования. аудио-слайсер аудио-слайсер (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 предварительный поезд/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 : частота печати журнала : частота сохранения контрольных точек. : общее количество шагов. : количество сохраненных контрольных точек, 0 для неограниченного количества. : fp32 В моем случае : чем меньше, тем быстрее (грубее), чем больше, тем медленнее (лучше). log interval eval interval epochs keep ckpts half_type 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 По этапам обучения: Используйте для обучения основной модели; обычно можно использовать 20-30 тысяч, а 50 тысяч и выше будет достаточно. Это может занять несколько дней в зависимости от скорости графического процессора. train.py Не стесняйтесь остановить его, нажав , и обучение будет продолжено путем повторного запуска в любое время. ctrl+c python train.py -c configs/config.json -m 44k Используйте для обучения модели диффузии; шаги обучения рекомендуется составлять 1/3 от основной модели. train_diff.py Помните о перетренированности. Используйте , чтобы отслеживать графики, чтобы убедиться, что они не совпадают. tensorboard --logdir=./logs/44k При необходимости измените с 0,0001 на 0,00005. learning rate Когда закончите, поделитесь/перенесите эти файлы для анализа. конфигурация/ config.json диффузия.yaml журналы/44 тыс. Feature_and_index.pkl kmeans_10000.pt model_0.pt G_xxxxx.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 predictor RMVPE полезно при пении женской песни с использованием модели мужским голосом или наоборот. Pitch change — это способ управления тоном. Используйте , чтобы получить наиболее четкую речь, и используйте чтобы получить тон, наиболее близкий к модели. Clustering model/feature retrieval mixing ratio 0.1 0.9 следует установить в районе , это улучшает результат на шагах. shallow diffusion steps 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 ДДСП-SVC требует меньше аппаратных ресурсов и работает быстрее, чем so-vits-svc. Он поддерживает как модели реального времени, так и диффузионные модели (Diff-SVC). DDSP-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 Вывод Рекомендуется использовать поскольку он включает в себя как DDSP, так и модель диффузии. main_diff.py python main_diff.py -i "input.wav" -diff "model_xxxxxx.pt" -o "output.wav" Графический интерфейс в реальном времени для клонирования голоса: python gui_diff.py Берт-витс2-В2.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 Запустите , чтобы нарезать WAV-файл. python3 audio_slicer.py Очистите набор данных ( ), удалив небольшие файлы длительностью менее 2 секунд. Data/xxx/raw Транскрипция Установите шепот 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" Запустите , чтобы запустить webui для вывода. python3 webui.py Витс-простой-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 vits-simple-api/Model/xxx/ Отредактируйте для и по своему усмотрению. config.py MODEL_LIST Default parameter Отредактируйте как показано ниже: 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 emotion style Поделиться моделями В есть множество моделей VITS, которыми поделились другие. Вы можете сначала опробовать его, а затем скачать нужные модели из . репозитории Hugging Face Files широко используется в некоторых сообществах по созданию контента из-за ее высокого качества. Он содержит сотни символов, хотя поддерживаются только китайский и японский языки. Модель Genshin В много моделей Берт-витс2, сделанных из популярных китайских стримеров и VTuberов. другом репое Уже есть проекты создающие Втуберов с искусственным интеллектом. Я с нетерпением жду того, как эта технология может изменить отрасль в ближайшем будущем. , таких https://techshinobi.org/posts/voice-vits/https://techshinobi.org/posts/voice-vits/