A step-by-step setup guide for installing Retrieval-based Voice Conversion WebUI (RVC WebUI) on machines with NVIDIA RTX 50-series GPUs.
I originally had this issue with RTX 5080 and fixed it via a useful github post after spending several days trying to fix. It’s worth noting that the first install of following this didn’t work for me. Also worth noting, although sometimes it states an error on the GUI, it is in fact running. Always check the terminal.
I tried multiple times with different pytorch installs and nightly builds but always ran into more and more issues. Below seems to be the most consistant way of getting it to work.
Credit to: https://github.com/quasiblob
Credit to ChatGPT for doing a lot of the leg work on troubleshooting.
⚠️ Important Notes
- These instructions are only for RTX 50-series GPUs
- Assumes usage of Python 3.10.x
- Uses a
venv
virtual environment - Some steps may need manual tweaks due to evolving dependencies
- Core WebUI features appear to work:
- ✅ Inference tab
- ✅ Training tab
- ✅ Checkpoint tab
- ✅ ONNX export (without simplify)
📜 Installation Steps
1. Clone the Repository
git clone https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI RVC_webUI
cd RVC_webUI
2. Create and Activate Virtual Environment (Python 3.10)
py -3.10 -m venv venv
call ./venv/Scripts/activate.bat
3. Update Pip
python.exe -m pip install pip==24.0
4. Install Requirements
pip install -r requirements.txt
5. Install PyTorch (SM 12.0 requires >= 2.7)
pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu128 --force-reinstall
6. Install Missing Dependencies
pip install onnxsim
pip install matplotlib==3.10.3 # Optional
7. Verify ONNX Packages
pip show onnx onnxruntime onnxruntime-gpu
# Recommended to keep either CPU or GPU runtime—not both
8. Verify CUDA-Enabled PyTorch
pip show torch torchaudio
9. Check for Dependency Conflicts
pip check
10. Save Installed Packages (Optional)
pip freeze > install_packages.txt
11. Ensure Pip is Still v24.0
pip --version
python.exe -m pip install pip==24.0 # If not 24.0
12. Confirm ffmpeg
is in PATH
ffmpeg # Should return a version
# If not, install ffmpeg and add it to system PATH
13. Download Required Models
python tools/download_models.py
14. Modify go-web.bat
Open go-web.bat
in a text editor and change:
From:
runtime\python.exe infer-web.py --pycmd runtime\python.exe --port 7897
To:
venv\scripts\python.exe infer-web.py --pycmd venv\scripts\python.exe --port 7897
🛠️ Fixing Known Errors (Do all of the following)
❌ Error #1 – pickle.UnpicklingError
(Inference)
- Fix: Modify
checkpoint_utils.py
Open:
.\venv\Lib\site-packages\fairseq\checkpoint_utils.py
At line 315, change:
state = torch.load(f, map_location=torch.device("cpu"), weights_only=False)
❌ Error #2 – 'FigureCanvasAgg' has no attribute 'tostring_rgb'
(Training)
Open:
.\infer\lib\train\utils.py
At line 238, replace:
# data = ...
data = np.frombuffer(fig.canvas.tostring_rgb(), dtype=np.uint8).reshape(fig.canvas.get_width_height()[::-1] + (3,))
Repeat this fix in the plot_alignment_to_numpy
function below.
Also, downgrade matplotlib
:
pip install matplotlib==3.9.0
❌ Error #3 – PermissionError
during ONNX Export
Modify infer-web.py
Locate and change export_onnx
function:
def export_onnx(ModelPath, ExportedPath):
from infer.modules.onnx.export import export_onnx as eo
result = eo(ModelPath, ExportedPath)
return result
Modify export.py
Open:
.\infer\modules\onnx\export.py
Update:
cpt = torch.load(ModelPath, map_location="cpu", weights_only=False)
And near the end, replace:
model, _ = onnxsim.simplify(ExportedPath)
onnx.save(model, ExportedPath)
return "Finished"
With:
try:
# model, _ = onnxsim.simplify(ExportedPath)
# onnx.save(model, ExportedPath)
print("export_onnx: onnxsim/onnx.save skipped/completed (if uncommented).")
except NameError:
print("export_onnx: onnxsim.simplify was skipped.")
except Exception as e:
print(f"export_onnx: An unexpected error occurred: {e}")
print("export_onnx: About to return 'Finished'.")
return "Finished"
❌ Error #4 – Error during training
Open
.\infer\modules\train\
Create
If you click 'train model' it should work however, sometimes when you click 'Train feature index' it might error out. After clicking 'Train model' create a file called train_index.py and paste in the following:
.\iimport os
import numpy as np
import faiss
from pathlib import Path
import argparse
def compute_faiss_index(feat_dir, index_path):
feats = []
for f in Path(feat_dir).glob("*.npy"):
feats.append(np.load(f))
feats = np.concatenate(feats, axis=0)
print(f"Total features shape: {feats.shape}")
dim = feats.shape[1]
print(f"Using faiss index of dimension {dim}")
index = faiss.IndexFlatL2(dim)
index.add(feats)
faiss.write_index(index, str(index_path))
print(f"Index saved to {index_path}")
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("-e", "--exp_name", required=True)
parser.add_argument("-sr", "--sampling_rate", default="40k")
parser.add_argument("-v", "--version", default="v2")
args = parser.parse_args()
exp_dir = Path(f"logs/{args.exp_name}/3_feature768")
index_path = exp_dir / "index.pkl"
print(f"Building index from {exp_dir}")
compute_faiss_index(exp_dir, index_path)
Then run:
python infer\modules\train\train_index.py -e NAME_OF_EXPERIMENT -sr 40k -v v2
That should then allow the train feature to work
✅ Run the App
go-web.bat
You’re done! 🎉