Как я построил DIY Audiobook Voice Cloning Tipsing, используя GPT-Sovits и рыбную речь

Как я построил DIY Audiobook Voice Cloning Tipsing, используя GPT-Sovits и рыбную речь

9 июля 2025 г.

Предисловие

Моя последняя статьяНа голосовом клонировании более года назад, и здесь мы снова за принятием некоторого последнего продвижения. Ссылаясь на какой -то китайский источник, такой какэтот блогиэто видео, Я пытался принять новые инструменты для моего аудиокнигCosyvoiceВF5-TTSВGPT-Sovits, иРыба-речьПолем

Но прежде чем мы начнем, я рекомендую:

Установите Miniconda для санифона зависимости

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh && sudo chmod +x Miniconda3-latest-Linux-x86_64.sh && bash Miniconda3-latest-Linux-x86_64.sh

НастраиватьПИТОРЧ СРЕДАПо мере необходимости и подтвердить сpython -m torch.utils.collect_env

УстановитьnvtopЕсли предпочтительнееsudo apt install nvtop


GPT-Sovits

Этот проектпроизводится той же группой людей изSo-vits-SvcПолем Качество модели значительно улучшилось с V2 до V4. Хотя при выполнении

Длинный текст TTS, ошибки неизбежны, это достаточно для моего варианта использования.

К моменту написания этой артитуры они выпустили новую версию20250606v2proкоторые могут иметь некоторые различия, так как я использовал версию20250422v4Полем

Но вы всегда можете использовать их«Пакет Windows»который упаковал все модели и работает на серверах Linux, несмотря на его

Имя, так что это предназначено для обеспечения более удобного для пользователя опыт «один клик».

Установите на Linux

git clone https://github.com/RVC-Boss/GPT-SoVITS.git && cd GPT-SoVITS
conda create -n GPTSoVits python=3.10
conda activate GPTSoVits
#auto install script
bash install.sh --source HF --download-uvr5
#(optional) manual install
pip install -r extra-req.txt --no-deps
pip install -r requirements.txt

Установите FFMPEG и другие DEPS

sudo apt install ffmpeg
sudo apt install libsox-dev

#(optional for troubleshooting)
conda install -c conda-forge 'ffmpeg<7'
pip install -U gradio
python -m nltk.downloader averaged_perceptron_tagger_eng

(необязательно) Скачать предварительно подготовленные модели ASR для китайцев

git lfs install
cd tools/asr/models/
git clone https://www.modelscope.cn/iic/speech_fsmn_vad_zh-cn-16k-common-pytorch.git tools/asr/models/speech_fsmn_vad_zh-cn-16k-common-pytorch
git clone https://www.modelscope.cn/iic/punc_ct-transformer_zh-cn-common-vocab272727-pytorch.git tools/asr/models/punc_ct-transformer_zh-cn-common-vocab272727-pytorch
git clone https://www.modelscope.cn/iic/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch.git tools/asr/models/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch

После того, как все сделано, бегиGRADIO_SHARE=0 GRADIO_ANALYTICS_ENABLED=0 DISABLE_TELEMETRY=1 DO_NOT_TRACK=1 python -m webui.pyЧтобы запустить сервер, затем доступ черезhttp://ip:9874/

0 Избирательный набор данных

Подготовка к-вокальному записи

Я использовал Audacity вместо UVR5, потому что запись чистая и чистая.

Используйте встроенный Audio Slicer Webui, чтобы нарезать новую recording.wav и поместить старые записи (если таковые имеются) подoutput/slicer_opt

Используйте встроенный пакетный инструмент ASR с более быстрым шепотом, так как на этот раз я делаю многоязычную модель.

Эти проблемы связаны исключительно со старой архитектурой графического процессора. Не беспокойтесь о новых пользователях GPU (30x0/40x0).

Устранение неполадок 1RuntimeError: parallel_for failed: cudaErrorNoKernelImageForDevice: no kernel image is available for execution on the device.

pip uninstall -y ctranslate2
pip install ctranslate2==3.24.0

Устранение неполадок 2'iwrk': array([], dfitpack_int), 'u': array([], float),

pip uninstall numpy scipy
pip install numba==0.60.0 numpy==1.26.4 scipy

После завершения транскрипции используйте встроенный инструмент для маркировки (Subfix) для удаления плохих образцов. Если веб-страница не всплывает, используйтеip:9871вручную. Выберите аудио и удалите звук, сохраните файл, когда закончите.

1-GPT-Sovits-TTS

1А-датасет форматирование

Заполните пустые поля и нажмитеSet One-Click Formatting:

#Text labelling file
/home/username/GPT-SoVITS/output/asr_opt/slicer_opt.list

#Audio dataset folder
output/slicer_opt
1b-fine-unducted Training

1BA-Sovits Training

Использоватьbatch sizeв1Вtotal epochв5иsave_every_epochв1Полем

1BB-GPT Training

Для этой части мойbatch sizeявляется6сDPO enabledПолем Общие эпохи для трансляции должны составлять около 5-15, адаптировать частоту сохранения на основе потребностей.

Устранение неполадок для старых графических процессоров

Ошибка:cuFFT doesn't support signals of half type with compute

capability less than SM_53, but the device containing input half tensor

only has SM_52Полем

Fix1: Eidtwebui.py, добавить новую линию послеfrom multiprocessing import cpu_countсis_half = False

FIX2: РЕДАКТИРОВАТЬGPT_SoVITS/s2_train.py, добавлятьhps.train.fp16_run = Falseв начале (средиtorch.backends.cudnn.benchmark = False)

1c-инференция

нажиматьrefreshing model pathsи выберите модель в обоих списках

ПроверятьEnable Parallel Inference Versionзатемopen TTS Inference WebUI, это нужно некоторое время для загрузки, вручную доступ кip:9872При необходимости.

Устранение неполадок дляValueError: Due to a serious vulnerability issue in torch.loadисправитьpip install transformers==4.43

Настройки вывода:

  • e3.ckpt
  • E15.pth
  • Основной справочный звук с текстом и несколькими эталонными аудио
  • Нарезать каждым пунктом
  • top_k 5
  • top_p 1
  • температура 0,9
  • Наказание за повторение 2
  • speed_factor 1.3

Держите все остальное по умолчанию.

Чтобы найти лучший вес GPT, параметры и случайные семя, сначала вывод на большом блоке текста и выберите несколько проблемных предложений для следующего вывода. Затем настраивайте вес и параметры GPT, чтобы проблема исчезла, находясь на фиксированном номере семян. Когда -то лучшее

Вес GPT и параметры найдены, исправьте их, затем играйте с разностным номером семян, чтобы уточнить конечный результат. Обратите внимание на параметры, когда

Вывод идеально подходит для будущего использования.

Рыбная речь

Рыба-речьвносится теми же людьми изBert-Vits2который я использовал долгое время.

После ихофициальные документыЧтобы установить версию 1.4 (к сожалению, v1.5 имеет проблемы с качеством звука во время создания)

git clone --branch v1.4.3 https://github.com/fishaudio/fish-speech.git && cd fish-speech

conda create -n fish-speech python=3.10
conda activate fish-speech

pip3 install torch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1

apt install libsox-dev ffmpeg 

apt install build-essential \
    cmake \
    libasound-dev \
    portaudio19-dev \
    libportaudio2 \
    libportaudiocpp0

pip3 install -e .

СкачатьТребуемые модели

huggingface-cli download fishaudio/fish-speech-1.4 --local-dir checkpoints/fish-speech-1.4

Подготовьте набор данных

mkdir data
cp -r /home/username/GPT-SoVITS/output/slicer_opt data/
python tools/whisper_asr.py --audio-dir data/slicer_opt --save-dir data/slicer_opt --compute-type float32

python tools/vqgan/extract_vq.py data \
    --num-workers 1 --batch-size 16 \
    --config-name "firefly_gan_vq" \
    --checkpoint-path "checkpoints/fish-speech-1.5/firefly-gan-vq-fsq-8x1024-21hz-generator.pth"
	
python tools/llama/build_dataset.py \
    --input "data" \
    --output "data/protos" \
    --text-extension .lab \
    --num-workers 16

Изменить параметры поnano fish_speech/configs/text2semantic_finetune.yamlи начать обучение

python fish_speech/train.py --config-name text2semantic_finetune \
    project=$project \
    +lora@model.model.lora_config=r_8_alpha_16

Примечание:

  • Номера по умолчанию слишком высоки для моей настройки, так что обаnum_workersиbatch_sizeнеобходимо снизитьСогласно ядрам процессоров и VRAMПолем
  • Для первого запуска я установилmax_steps: 10000иval_check_interval: 1000иметь 5 моделей, которые имеют более низкие шаги с некоторым разнообразием.
  • Такие вещи, какlrВweight_decayиnum_warmup_stepsможет быть дополнительно скорректированЭта статьяПолем Моя обстановкаlr: 1e-5Вweight_decay: 1e-6Вnum_warmup_steps: 500Полем
  • Чтобы проверить метрики обучения, такие как кривая потери, запуститеtensorboard --logdir fish-speech/results/tensorboard/version_xx/и доступlocalhost:6006через браузер. Определите переосмысление с помощью графика и Actuall, чтобы услышать результат вывода для каждой контрольной точки.
  • Сначала я узнал, что переосмысление начинается около 5000 шагов. Затем вторая тренировка за 5000 шагов и найти лучший результатstep_000004000.ckptПолем
  • Обучение требует более нового графического процессора сBF16И пока нет обходного пути.
  • При обучении модели для вывода на старый графический процессор, используйтеprecision: 32-trueвfish_speech/configs/text2semantic_finetune.yamlиresult
  • += (self.lora_dropout(x).to(torch.float32) @
  • self.lora_A.to(torch.float32).transpose(0, 1) @
  • self.lora_B.to(torch.float32).transpose(0, 1)) *
  • self.scaling.to(torch.float32)в/home/username/miniconda3/envs/fish-speech/lib/python3.10/site-packages/loralib/layers.pyПолем

Обучение займет много часов на слабом графическом процессоре. После завершения, преобразуйте вес Weights Lora

python tools/llama/merge_lora.py \
    --lora-config r_8_alpha_16 \
    --base-weight checkpoints/fish-speech-1.4 \
    --lora-weight results/$project/checkpoints/step_000005000.ckpt \
    --output checkpoints/fish-speech-1.4-yth-lora/

Генерировать быстрые и семантические жетоны

python tools/vqgan/inference.py \
    -i "1.wav" \
    --checkpoint-path "checkpoints/fish-speech-1.4/firefly-gan-vq-fsq-8x1024-21hz-generator.pth"

Устранение неполадок для старого GPU 1Unable to load any of {libcudnn_ops.so.9.1.0, libcudnn_ops.so.9.1, libcudnn_ops.so.9, libcudnn_ops.so}

pip uninstall -y ctranslate2
pip install ctranslate2==3.24.0

Устранение неполадок для старого GPU 2ImportError: cannot import name 'is_callable_allowed' from partially initialized module 'torch._dynamo.trace_rules'

conda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1  pytorch-cuda=11.8 -c pytorch -c nvidia

Сделать его доступным из локальной сетиnano tools/run_webui.py

app.launch(server_name="0.0.0.0", server_port=7860, show_api=True)

Изменить--llama-checkpoint-pathв недавно обученную Лору и запустить WebUI (добавлено--halfДля моего старого графического процессора, чтобы избежать ошибки BF16)

GRADIO_SHARE=0 GRADIO_SERVER_NAME=0.0.0.0 GRADIO_SERVER_PORT=7860 GRADIO_ANALYTICS_ENABLED=0 DISABLE_TELEMETRY=1 DO_NOT_TRACK=1 python -m tools.webui \
    --llama-checkpoint-path "checkpoints/fish-speech-1.4-yth-lora" \
    --decoder-checkpoint-path "checkpoints/fish-speech-1.4/firefly-gan-vq-fsq-8x1024-21hz-generator.pth" \
    --decoder-config-name firefly_gan_vq \
    --half

Параметры для вывода

  • Включить справочный аудио
  • Проверьте нормализацию текста
  • Международная подсказка Lente 200
  • Топ-P 0,8
  • Температура 0,7
  • Наказание за повторение 1.5
  • Установить семя

Примечание:

  • более высокое число, чтобы компенсировать переосмысленную модель, более низкое число для подключенной модели.
  • Определенная пунктуация или пространство вкладки могут вызвать генерацию шума. Текст
  • Нормализация Предположим, чтобы решить эту проблему, но иногда мне все еще нужно
  • Чтобы найти и заменить.

Однако ошибкаNegative code foundвстречается довольно частым при выводе без решения. Сдаться.

Cosyvoice

Cosyvoiceэто один из инструментов Funaudiollm, который разработан той же командой из QWEN Alibaba, который я часто использую.

Установить

git clone --recursive https://github.com/FunAudioLLM/CosyVoice.git && cd CosyVoice
git submodule update --init --recursive
conda create -n cosyvoice -y python=3.10
conda activate cosyvoice
conda install -y -c conda-forge pynini==2.1.5
sudo apt-get install sox libsox-dev -y
pip install -r requirements.txt

Загрузите предварительные модели

git lfs install
mkdir -p pretrained_models
git clone https://huggingface.co/FunAudioLLM/CosyVoice2-0.5B pretrained_models/CosyVoice2-0.5B
git clone https://huggingface.co/FunAudioLLM/CosyVoice-300M pretrained_models/CosyVoice-300M
git clone https://huggingface.co/FunAudioLLM/CosyVoice-300M-SFT pretrained_models/CosyVoice-300M-SFT
git clone https://huggingface.co/FunAudioLLM/CosyVoice-300M-Instruct pretrained_models/CosyVoice-300M-Instruct

Бежать с

GRADIO_SHARE=0 GRADIO_SERVER_NAME=0.0.0.0 GRADIO_SERVER_PORT=7860 GRADIO_ANALYTICS_ENABLED=0 DISABLE_TELEMETRY=1 DO_NOT_TRACK=1 python -m  webui.py --port 50000 --model_dir pretrained_models/CosyVoice-300M

Устранение неполадок «Glibcxx_3.4.29’ Не найдено »сэтот

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
strings $CONDA_PREFIX/lib/libstdc++.so.6 | grep GLIBCXX

nano ~/.bashrc
export LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$LD_LIBRARY_PATH

find / -name "libstdc++.so*"
rm /home/username/anaconda3/lib/python3.11/site-packages/../../libstdc++.so.6
ln -s /home/username/text-generation-webui/installer_files/env/lib/libstdc++.so.6.0.29 /home/username/anaconda3/lib/python3.11/site-packages/../../libstdc++.so.6

В конечном итоге он работает нормально, но не так хорошо, как GPT-Sovits. Надеюсь, их версия 3.0 сможет накачать это.


Преобразование голоса

ОбаRVCиСемя vcпредназначены для замены моего старого старогоSo-vits-Svcпример.

В поисках, основанной на голосе конверсия

Установить

git clone https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI && cd Retrieval-based-Voice-Conversion-WebUI
conda create -n rvc -y python=3.8
conda activate rvc
pip install torch torchvision torchaudio
pip install pip==24.0
pip install -r requirements.txt
python tools/download_models.py
sudo apt install ffmpeg
wget https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/rmvpe.pt

Бежать сpython infer-web.py, заполните следующее, затем нажмите кнопки шаг за шагом с настройками по умолчанию:

Enter the experiment name:/path/to/raw/

Устранение неполадок «enabled = hps.train.fp16_run»


Семя vc

Установить

git clone https://github.com/Plachtaa/seed-vc && cd Retrieval-based-Voice-Conversion-WebUI
conda create -n seedvc -y python=3.10
conda activate seedvc
pip install -r requirements.txt
GRADIO_SHARE=0 GRADIO_SERVER_NAME=0.0.0.0 GRADIO_SERVER_PORT=7860 GRADIO_ANALYTICS_ENABLED=0 DISABLE_TELEMETRY=1 DO_NOT_TRACK=1 python app.py --enable-v1 --enable-v2

Настройки

#V2
Diffusion Steps: 100
Length Adjust: 1
Intelligibility CFG Rate: 0
Similarity CFG Rate: 1
Top-p: 1
Temperature: 1
Repetition Penalty: 2
convert style/emotion/accent: check

#V1
Diffusion Steps: 100
Length Adjust: 1
Inference CFG Rate: 1
Use F0 conditioned model: check
Auto F0 adjust: check
Pitch shift: 0

Обучение

python train.py --config /home/username/seed-vc/configs/presets/config_dit_mel_seed_uvit_whisper_base_f0_44k.yml --dataset-dir /home/username/GPT-SoVITS-v4/output/slicer_opt --run-name username --batch-size 6 --max-steps 10000 --max-epochs 10000 --save-every 1000 --num-workers 1

accelerate launch train_v2.py --dataset-dir /home/username/GPT-SoVITS-v4/output/slicer_opt --run-name username-v2 --batch-size 6 --max-steps 2000 --max-epochs 2000 --save-every 200 --num-workers 0 --train-cfm

Использование контрольных точек

#Voice Conversion Web UI
GRADIO_SHARE=0 GRADIO_SERVER_NAME=0.0.0.0 GRADIO_SERVER_PORT=7860 GRADIO_ANALYTICS_ENABLED=0 DISABLE_TELEMETRY=1 DO_NOT_TRACK=1 python app_vc.py --checkpoint ./runs/test01/ft_model.pth --config ./configs/presets/config_dit_mel_seed_uvit_whisper_base_f0_44k.yml --fp16 False

#Singing Voice Conversion Web UI
GRADIO_SHARE=0 GRADIO_SERVER_NAME=0.0.0.0 GRADIO_SERVER_PORT=7860 GRADIO_ANALYTICS_ENABLED=0 DISABLE_TELEMETRY=1 DO_NOT_TRACK=1 python app_svc.py --checkpoint ./runs/username/DiT_epoch_00029_step_08000.pth --config ./configs/presets/config_dit_mel_seed_uvit_whisper_base_f0_44k.yml --fp16 False

#V2 model Web UI
GRADIO_SHARE=0 GRADIO_SERVER_NAME=0.0.0.0 GRADIO_SERVER_PORT=7860 GRADIO_ANALYTICS_ENABLED=0 DISABLE_TELEMETRY=1 DO_NOT_TRACK=1 python app_vc_v2.py --cfm-checkpoint-path runs/Satine-V2/CFM_epoch_00000_step_00600.pth

Оказалась модель V1 с веб -интерфейсом по пению Voice Conversion Webapp_svc.pyвыполняет лучшее.


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