Retrieval-based-Voice-Conversion-WebUI
A simple, easy-to-use voice timbre conversion / voice changer framework.Changelog | FAQ (Frequently Asked Questions)
English | 中文简体 | 日本語 | 한국어 (韓國語) | Français | Türkçe | Português
Check out our Demo Video here!
The dataset for the pre-training model uses nearly 50 hours of high quality audio from the VCTK open source dataset.
High quality licensed song datasets will be added to the training-set often for your use, without having to worry about copyright infringement.
Please look forward to the pretrained base model of RVCv3, which has larger parameters, more training data, better results, unchanged inference speed, and requires less training data for training.
Features:
- Reduce tone leakage by replacing the source feature to training-set feature using top1 retrieval;
- Easy + fast training, even on poor graphics cards;
- Training with a small amounts of data (>=10min low noise speech recommended);
- Model fusion to change timbres (using ckpt processing tab->ckpt merge);
- Easy-to-use WebUI;
- UVR5 model to quickly separate vocals and instruments;
- High-pitch Voice Extraction Algorithm InterSpeech2023-RMVPE to prevent a muted sound problem. Provides the best results (significantly) and is faster with lower resource consumption than Crepe_full;
- AMD/Intel systems use the CPU dependency set; Windows may use DirectML and Linux uses CPU;
Environment setup
This branch targets Python 3.12 x64. Run every command from the repository root. Ubuntu 24.04 x86_64 is recommended.
Ubuntu 24.04
sudo apt update
sudo apt install -y python3.12 python3.12-venv python3.12-dev ffmpeg unzip libsndfile1 libportaudio2
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip setuptools wheel
Windows
Install Python 3.12 x64, then create a virtual environment:
py -3.12 -m venv .venv
.venv\Scripts\activate
python -m pip install --upgrade pip setuptools wheel
Choose dependencies by hardware
| Hardware | Installation |
|---|---|
| CPU, AMD, Intel | Use requirments_cpu_py312.txt; Windows may use DirectML, while Linux uses CPU |
| NVIDIA RTX 50 series | Install the CUDA 12.8 Torch pair first, then requirments_cu128_py312.txt |
| NVIDIA GPUs before the RTX 50 series | Install the CUDA 11.8 Torch pair first, then requirments_cu118_py312.txt |
CPU, AMD, Intel
python -m pip install -r requirments_cpu_py312.txt
NVIDIA RTX 50 series: two stages
python -m pip install torch==2.7.1+cu128 torchaudio==2.7.1+cu128 \
--index-url https://download.pytorch.org/whl/cu128 \
--extra-index-url https://pypi.org/simple
python -m pip install -r requirments_cu128_py312.txt
NVIDIA GPUs before the RTX 50 series: two stages
python -m pip install torch==2.7.1+cu118 torchaudio==2.7.1+cu118 \
--index-url https://download.pytorch.org/whl/cu118 \
--extra-index-url https://pypi.org/simple
python -m pip install -r requirments_cu118_py312.txt
Verify Torch and CUDA:
python -c "import torch; print('torch:', torch.__version__); print('cuda:', torch.version.cuda); print('cuda available:', torch.cuda.is_available())"
The application also checks NVIDIA GPU memory and compute capability. GPUs with roughly less than 4 GiB or below SM 5.3 use the CPU path.
Package indexes
The three requirments_*.txt files define their package indexes at the top. Keep the default mirrors in mainland China. To use official indexes, replace only --index-url and --extra-index-url; keep package versions, CUDA suffixes, and the two-stage order unchanged.
| Default mirror | Official source |
|---|---|
https://mirrors.pku.edu.cn/pypi/simple |
https://pypi.org/simple |
https://mirrors.nju.edu.cn/pytorch/whl/cpu |
https://download.pytorch.org/whl/cpu |
https://mirrors.nju.edu.cn/pytorch/whl/cu118 |
https://download.pytorch.org/whl/cu118 |
https://mirrors.nju.edu.cn/pytorch/whl/cu128 |
https://download.pytorch.org/whl/cu128 |
Models and runtime directories
The WebUI creates runtime directories automatically. Download models from the Hugging Face model repository and keep this layout:
assets/
├── hubert_base/
│ ├── config.json
│ ├── preprocessor_config.json
│ └── pytorch_model.bin
├── rmvpe/rmvpe.pt
├── pretrained/
├── pretrained_v2/
├── uvr5_weights/
├── weights/ # user RVC .pth models
└── indices/ # user .index files
logs/
└── mute/ # training silence samples
# Exact paths used by the code
assets/hubert_base/config.json
assets/hubert_base/preprocessor_config.json
assets/hubert_base/pytorch_model.bin
assets/rmvpe/rmvpe.pt
assets/pretrained/*.pth
assets/pretrained_v2/*.pth
assets/uvr5_weights/*
assets/weights/*.pth
assets/indices/*.index
logs/mute/*
Download models
python -m pip install --upgrade huggingface_hub
# Required for inference and feature extraction
hf download lj1995/VoiceConversionWebUI --revision main \
--include "hubert_base/*" --local-dir assets
hf download lj1995/VoiceConversionWebUI rmvpe.pt --revision main \
--local-dir assets/rmvpe
# Required for v1/v2 training
hf download lj1995/VoiceConversionWebUI --revision main \
--include "pretrained/*" "pretrained_v2/*" --local-dir assets
hf download lj1995/VoiceConversionWebUI mute.zip --revision main \
--local-dir .model-downloads
python -m zipfile -e .model-downloads/mute.zip logs
# Required only for UVR5 vocal separation
hf download lj1995/VoiceConversionWebUI --revision main \
--include "uvr5_weights/*" --local-dir assets
Windows AMD/Intel DirectML environments additionally need:
hf download lj1995/VoiceConversionWebUI rmvpe.onnx --revision main \
--local-dir assets/rmvpe
The legacy hubert_base.pt file is not used by this branch. The current code uses the three-file Transformers model under assets/hubert_base/. FCPE is bundled with torchfcpe.
FFmpeg
The Ubuntu setup command above installs FFmpeg. On Windows, place these files in the repository root:
Start the WebUI
python webui.py
For a headless Ubuntu server:
python webui.py --noautoopen
The default port is 7865. Put personal .pth models in assets/weights/ and .index files in assets/indices/.
Credits
- ContentVec
- VITS
- HIFIGAN
- Gradio
- FFmpeg
- Ultimate Vocal Remover
- audio-slicer
- Vocal pitch extraction:RMVPE