Prendas
Mi último artículo sobre clonación de voz es hace más de un año, y aquí estamos nuevamente por adoptar algunos últimos avances. Al consultar alguna fuente china, como este weblog y este video, intentaba adoptar nuevas herramientas para mi servicio de audiolibros, como Cosyvoice, F5-TTS, GPT-Sovits y Fish-discurso.
Pero antes de comenzar, recomiendo:
Instale Miniconda para la cordura de la dependencia
wget && sudo chmod +x Miniconda3-latest-Linux-x86_64.sh && bash Miniconda3-latest-Linux-x86_64.sh
Configurar el entorno Pytorch según sea necesario y confirmar con python -m torch.utils.collect_env
Instalar nvtop
Si se prefiere sudo apt set up nvtop
Gpt-sovits
Este proyecto está hecho por el mismo grupo de personas de SO-VITS-SVC. La calidad del modelo mejoró mucho de V2 a V4. Aunque al hacer
TTS de texto largo, los errores son inevitables, es lo suficientemente bueno para mi caso de uso.
En el momento de escribir este articil, lanzaron una nueva versión 20250606v2pro
que puede tener algunas diferencias desde que estaba usando la versión 20250422v4
.
Pero, siempre puede usar su “paquete de Home windows” que llena con todos los modelos y funciona en los servidores de Linux a pesar de sus
Nombre, por lo que está destinado a proporcionar una experiencia más fácil de usar “un solo clic”.
Instalar en Linux
git clone && cd GPT-SoVITS
conda create -n GPTSoVits python=3.10
conda activate GPTSoVits
#auto set up script
bash set up.sh --source HF --download-uvr5
#(non-obligatory) handbook set up
pip set up -r extra-req.txt --no-deps
pip set up -r necessities.txt
Instalar FFMPEG y otros DEPS
sudo apt set up ffmpeg
sudo apt set up libsox-dev
#(non-obligatory for troubleshooting)
conda set up -c conda-forge 'ffmpeg<7'
pip set up -U gradio
python -m nltk.downloader averaged_perceptron_tagger_eng
(Opcional) Descargue modelos ASR previos al detenido para chino
git lfs set up
cd instruments/asr/fashions/
git clone instruments/asr/fashions/speech_fsmn_vad_zh-cn-16k-common-pytorch
git clone instruments/asr/fashions/punc_ct-transformer_zh-cn-common-vocab272727-pytorch
git clone instruments/asr/fashions/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch
Después de todo hecho, corre GRADIO_SHARE=0 GRADIO_ANALYTICS_ENABLED=0 DISABLE_TELEMETRY=1 DO_NOT_TRACK=1 python -m webui.py
Para iniciar el servidor y luego acceder a través de http://ip:9874/
Conjunto de datos de 0 fetch
preparación para grabación
Usé Audacity en lugar de UVR5 porque la grabación es limpia y clara.
Use la cortadora de audio incorporada de WebUI para cortar el nuevo registro.wav y colocar grabaciones antiguas (si las hay) todos juntos debajo output/slicer_opt
Use la herramienta ASR de lotes incorporada con Whisper más rápido, ya que esta vez estoy haciendo un modelo multilingüe.
Estos problemas están relacionados exclusivamente con la arquitectura antigua de GPU. No se preocupe por los nuevos usuarios de GPU (30×0/40×0).
Solución de problemas 1 RuntimeError: parallel_for failed: cudaErrorNoKernelImageForDevice: no kernel picture is offered for execution on the gadget.
pip uninstall -y ctranslate2
pip set up ctranslate2==3.24.0
Solución de problemas 2 'iwrk': array([], dfitpack_int), 'u': array([], float),
pip uninstall numpy scipy
pip set up numba==0.60.0 numpy==1.26.4 scipy
Después de terminar la transcripción, use la herramienta de etiquetado incorporada (Subfix) para eliminar muestras malas. Si la página net no aparece, use ip:9871
a mano. Elija Audio y elimine el audio, guarde el archivo cuando esté terminado.
1-GPT-SOVITS-TTS
Formato 1A-Dataset
Full los campos vacíos y haga clic Set One-Click on Formatting
:
#Textual content labelling file
/house/username/GPT-SoVITS/output/asr_opt/slicer_opt.record
#Audio dataset folder
output/slicer_opt
Entrenamiento de 1B-Wonderful sintonizado
Entrenamiento de 1BA-SOVITS
Usar batch measurement
en 1
, complete epoch
en 5
y save_every_epoch
en 1
.
Entrenamiento de 1BB-GPT
Para esta parte, mi batch measurement
es 6
con DPO enabled
. Las épocas de transmisión complete deben ser de alrededor de 5-15, ajustar la frecuencia de guardar según las necesidades.
Solución de problemas para las antiguas GPU
Error: cuFFT would not assist indicators of half kind with compute
functionality lower than SM_53, however the gadget containing enter half tensor
solely has SM_52
.
Fix1: Eidt webui.py
agregue una nueva línea después from multiprocessing import cpu_count
con is_half = False
Fix2: editar GPT_SoVITS/s2_train.py
agregar hps.practice.fp16_run = False
al comienzo (entre con torch.backends.cudnn.benchmark = False
)
1c-inferencia
hacer clic refreshing mannequin paths
y seleccionar modelo en ambas listas
Controlar Allow Parallel Inference Model
entonces open TTS Inference WebUI
esto necesita un tiempo para cargar, acceder manualmente ip:9872
si es necesario.
Resolución de problemas para ValueError: As a result of a critical vulnerability concern in torch.load
arreglar pip set up transformers==4.43
Configuración de inferencia:
- E3.CKPT
- E15.pth
- Audio de referencia principal con texto y audio de referencia múltiple
- Cortar por cada punzón
- top_k 5
- TOP_P 1
- Temperatura 0.9
- Penalización de repetición 2
- Speed_factor 1.3
Mantenga todo lo demás predeterminado.
Para encontrar el mejor peso GPT, parámetros y semillas aleatorias, la primera inferencia en un gran bloque de texto y recoger algunas oraciones problemáticas para la próxima inferencia. Luego, ajuste el peso y los parámetros de GPT para que el problema desaparezca mientras está en un número de semilla fija. Una vez el mejor
Se encuentran el peso y los parámetros de GPT, corríjalos y luego jueguen con el número de semilla de diferencia para refinar el resultado closing. Tome nota sobre los parámetros cuando
La inferencia se vuelve perfecta para el uso futuro.
Discurso de pescado
El discurso de pescado es contribuido por las mismas personas de Bert-VITS2 que usé durante mucho tiempo.
Siguiendo sus documentos oficiales para instalar la versión 1.4 (desafortunadamente, V1.5 tiene un problema de calidad de sonido mientras se hace finos)
git clone --branch v1.4.3 && cd fish-speech
conda create -n fish-speech python=3.10
conda activate fish-speech
pip3 set up torch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1
apt set up libsox-dev ffmpeg
apt set up build-essential
cmake
libasound-dev
portaudio19-dev
libportaudio2
libportaudiocpp0
pip3 set up -e .
Descargue los modelos requeridos
huggingface-cli obtain fishaudio/fish-speech-1.4 --local-dir checkpoints/fish-speech-1.4
Preparar el conjunto de datos
mkdir knowledge
cp -r /house/username/GPT-SoVITS/output/slicer_opt knowledge/
python instruments/whisper_asr.py --audio-dir knowledge/slicer_opt --save-dir knowledge/slicer_opt --compute-type float32
python instruments/vqgan/extract_vq.py knowledge
--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 instruments/llama/build_dataset.py
--input "knowledge"
--output "knowledge/protos"
--text-extension .lab
--num-workers 16
Editar parámetros por nano fish_speech/configs/text2semantic_finetune.yaml
y empieza a entrenar
python fish_speech/practice.py --config-name text2semantic_finetune
mission=$mission
[email protected]_config=r_8_alpha_16
Nota:
- Los números predeterminados son demasiado altos para mi configuración, por lo que ambos
num_workers
ybatch_size
debe bajar de acuerdo con los núcleos de CPU y VRAM. - Para la primera carrera, me puse
max_steps: 10000
yval_check_interval: 1000
tener 5 modelos que tienen pasos más bajos con cierta diversidad. - Cosas como
lr
,weight_decay
ynum_warmup_steps
Se puede ajustar aún más a este artículo. Mi entorno eslr: 1e-5
,weight_decay: 1e-6
,num_warmup_steps: 500
. - Para verificar las métricas de capacitación como la curva de pérdida, ejecutar
tensorboard --logdir fish-speech/outcomes/tensorboard/version_xx/
y accesolocalhost:6006
Vía navegador. Decide el sobreajuste con el gráfico y actúe con el resultado de la inferencia para cada punto de management. - Al principio descubrí que el sobreajuste comienza alrededor de 5000 pasos. Entonces AA Second Coaching para 5000 pasos y encontrar el mejor resultado es
step_000004000.ckpt
. - La capacitación requiere una GPU más nueva con BF16 y sin solución hasta ahora.
- Al entrenar un modelo para inferencias en una GPU más antigua, use
precision: 32-true
enfish_speech/configs/text2semantic_finetune.yaml
yconsequence
+= (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)
en/house/username/miniconda3/envs/fish-speech/lib/python3.10/site-packages/loralib/layers.py
.
El entrenamiento tomaría muchas horas en GPU débil. Después de terminar, convierta los pesos de Lora
python instruments/llama/merge_lora.py
--lora-config r_8_alpha_16
--base-weight checkpoints/fish-speech-1.4
--lora-weight outcomes/$mission/checkpoints/step_000005000.ckpt
--output checkpoints/fish-speech-1.4-yth-lora/
Generar fichas rápidas y semánticas
python instruments/vqgan/inference.py
-i "1.wav"
--checkpoint-path "checkpoints/fish-speech-1.4/firefly-gan-vq-fsq-8x1024-21hz-generator.pth"
Solución de problemas para la antigua GPU 1 Unable 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 set up ctranslate2==3.24.0
Solución de problemas para la antigua GPU 2 ImportError: can't import title 'is_callable_allowed' from partially initialized module 'torch._dynamo.trace_rules'
conda set up pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 pytorch-cuda=11.8 -c pytorch -c nvidia
Hazlo accesible desde LAN nano instruments/run_webui.py
app.launch(server_name="0.0.0.0", server_port=7860, show_api=True)
Cambiar el --llama-checkpoint-path
al recién entrenado Lora y comenzar webui (agregado --half
para que mi antigua GPU evite el error 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 instruments.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
Parámetros para inferencia
- Habilitar audio de referencia
- Verifique la normalización del texto
- Interativo rápido Lenth 200
- Prime-P 0.8
- Temperatura 0.7
- Penalización de repetición 1.5
- Sembrar
Nota:
- Número más alto para compensar el modelo sobrefiitado, número más bajo para el modelo subestimado.
- Cierto espacio de puntuación o pestaña puede activar la generación de ruido. Texto
- Normalización Suponga abordar este problema, pero a veces todavía necesito
- para encontrar y reemplazar.
Sin embargo, un error Unfavourable code discovered
ocurre bastante frecuente al inferir sin solución por ahora. Abandonar.
Cosivaza
Cosyvoice es uno de los kits de herramientas de Funaudiollm, que se desarrolló por el mismo equipo del Qwen de Alibaba, uso mucho.
Instalar
git clone --recursive && cd CosyVoice
git submodule replace --init --recursive
conda create -n cosyvoice -y python=3.10
conda activate cosyvoice
conda set up -y -c conda-forge pynini==2.1.5
sudo apt-get set up sox libsox-dev -y
pip set up -r necessities.txt
Descargar modelos previos a la aparición
git lfs set up
mkdir -p pretrained_models
git clone pretrained_models/CosyVoice2-0.5B
git clone pretrained_models/CosyVoice-300M
git clone -SFT pretrained_models/CosyVoice-300M-SFT
git clone -Instruct pretrained_models/CosyVoice-300M-Instruct
Correr con
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
Solución de problemas “Glibcxx_3.4.29 ‘no encontrado” con esto
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
discover / -name "libstdc++.so*"
rm /house/username/anaconda3/lib/python3.11/site-packages/../../libstdc++.so.6
ln -s /house/username/text-generation-webui/installer_files/env/lib/libstdc++.so.6.0.29 /house/username/anaconda3/lib/python3.11/site-packages/../../libstdc++.so.6
Termina funcionando bien pero no tan bien como GPT-Sovits. Espero que su versión 3.0 pueda bombearlo.
Conversión de voz
Tanto RVC como SEED-VC están destinados a reemplazar mi vieja instancia SO-VITS-SVC.
Devolución de recuperación-conversión
Instalar
git clone && cd Retrieval-based-Voice-Conversion-WebUI
conda create -n rvc -y python=3.8
conda activate rvc
pip set up torch torchvision torchaudio
pip set up pip==24.0
pip set up -r necessities.txt
python instruments/download_models.py
sudo apt set up ffmpeg
wget
Correr con python infer-web.py
rellene a continuación y luego haga clic en botones paso a paso con la configuración predeterminada:
Enter the experiment title:/path/to/uncooked/
Solución de problemas “habilitado = hps.practice.fp16_run”
VC de semillas
Instalar
git clone && cd Retrieval-based-Voice-Conversion-WebUI
conda create -n seedvc -y python=3.10
conda activate seedvc
pip set up -r necessities.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
Ajustes
#V2
Diffusion Steps: 100
Size Regulate: 1
Intelligibility CFG Fee: 0
Similarity CFG Fee: 1
Prime-p: 1
Temperature: 1
Repetition Penalty: 2
convert type/emotion/accent: test
#V1
Diffusion Steps: 100
Size Regulate: 1
Inference CFG Fee: 1
Use F0 conditioned mannequin: test
Auto F0 modify: test
Pitch shift: 0
Capacitación
python practice.py --config /house/username/seed-vc/configs/presets/config_dit_mel_seed_uvit_whisper_base_f0_44k.yml --dataset-dir /house/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
speed up launch train_v2.py --dataset-dir /house/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
Usando puntos de management
#Voice Conversion Net 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 Net 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 mannequin Net 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
Resultó el modelo V1 con la interfaz de conversión de voz de canto ui app_svc.py
realiza lo mejor.