
Как я построил 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
выполняет лучшее.
Оригинал