How rvc-project/retrieval-based-voice-conversion works
RVC is a VITS-based voice-conversion framework exposed as a Python library, CLI, and HTTP API. The principal workflow accepts audio and a voice model, extracts content and pitch features, performs indexed voice conversion, and returns or saves converted audio. Separate product branches support model training and checkpoint handling, vocal separation (UVR5), and ONNX export/inference. The excerpts directly show CLI/API calls into the VC facade and conversion internals; wiring in unsampled modules is represented only where their roles are clear from the documented entry points and paths.
Main entry points: pipeline.py Conversion pipeline · modules.py VC facade · train.py Training command · infer.py CLI inference
Components 24
User interfaces
- CLI inference
rvc/wrapper/cli/handler/infer.py - API inference
rvc/wrapper/api/endpoints/inference.py
Voice conversion
- VC facade
rvc/modules/vc/modules.py - Conversion pipeline
rvc/modules/vc/pipeline.py - Audio processing
rvc/lib/audio.py - Content features
rvc/lib/jit/get_hubert.py - Pitch extraction
rvc/lib/infer_pack/modules/F0Predictor - RMVPE predictor
rvc/lib/rmvpe.py - VITS synthesizer
rvc/lib/infer_pack/models.py - FAISS feature index
rvc/modules/vc/pipeline.py
Training and models
- Training command
rvc/wrapper/cli/handler/train.py - Training data
rvc/lib/train/data_utils.py - Training losses
rvc/lib/train/losses.py - Checkpoint processing
rvc/lib/train/process_ckpt.py
Audio tools
- UVR command
rvc/wrapper/cli/handler/uvr5.py - UVR endpoint
rvc/wrapper/api/endpoints/uvr.py - Vocal separation
rvc/modules/uvr5 - ONNX export
rvc/modules/onnx/export.py - ONNX inference
rvc/lib/infer_pack/onnx_inference.py
Other components
- CLI user
- API client
- Library caller
- Converted audio
- Separated audio
Connections 23
- CLI user → CLI inference: runs inference
- API client → API inference: posts audio
- Library caller → VC facade: calls inference
- CLI inference → VC facade: calls inference
- API inference → VC facade: calls inference
- VC facade → Conversion pipeline: runs conversion
- Conversion pipeline → Content features: extracts features
- Conversion pipeline → Pitch extraction: computes pitch
- Conversion pipeline → RMVPE predictor: loads predictor
- Conversion pipeline → FAISS feature index: reads index
- Conversion pipeline → VITS synthesizer: synthesizes audio
- Conversion pipeline → Audio processing: processes audio
- Conversion pipeline → Converted audio: produces audio
- Converted audio → CLI inference: writes WAV
- Converted audio → API inference: returns audio
- Training command → Training data: loads datasets
- Training command → Training losses: uses losses
- Training command → Checkpoint processing: processes checkpoints
- UVR command → Vocal separation: runs separation
- UVR endpoint → Vocal separation: runs separation
- Vocal separation → Separated audio: produces stems
- ONNX export → VITS synthesizer: exports model
- ONNX inference → Converted audio: returns audio