Skip to main content

High performance RVC inferencing, intended for multiple instances in memory at once. Also includes the latest pitch estimator RMVPE, Python 3.8-3.11 compatible, pip installable, memory + performance improvements in the pipeline and model usage.

Project description

RVC Inference

Translations provided by GPT-4.

This project is a lightweight, fast, and memory efficient api that runs v1/v2 RVC models. It is intended for use in production environments and compatibility with existing codebases. It makes integrating RVC as a stage in a pipeline or workflow easy. Installation is quick using pip and should be compatible with Linux/Windows/Mac and the latest python versions.

Install

If using Python 3.11+ install the fairseq fork first as fairseq is not yet compatible with 3.11. (Will take a minute).

Pip install the repo like below and all dependencies will be installed automatically.

pip uninstall inferrvc
pip install inferrvc --no-cache-dir

By default pypi installs the pytorch cpu build. To install for gpu using Nvidia or AMD, visit https://pytorch.org/get-started/locally/ and pip install torch and torchaudio with gpu before installing this library.

Support should be available for Python 3.8-3.12 but only 3.11 was tested. If there are any problems with installation or compatibility please open an issue and I'll push out fixes. PR's with fixes and improvements are welcome.

Usage

First set the optional environment variables:

import os
os.environ['RVC_MODELDIR']='path/to/rvc_model_dir' #where model.pth files are stored.
os.environ['RVC_INDEXDIR']='path/to/rvc_index_dir' #where model.index files are stored.
#the audio output frequency, default is 44100.
os.environ['RVC_OUTPUTFREQ']='44100'
#If the output audio tensor should block until fully loaded, this can be ignored. But if you want to run in a larger torch pipeline, setting to False will improve performance a little.
os.environ['RVC_RETURNBLOCKING']='True'

Notes on environment variables:

  • Both RVC_OUTPUTFREQ and RVC_RETURNBLOCKING set defaults for the RVC class, but they can be overriden per instance with self.outputfreq and self.returnblocking.
  • Setting RVC_OUTPUTFREQ to None will disable standard resampling and return the model's native sample rate.
  • If you do not set RVC_INDEXDIR the RVC class will fallback to RVC_MODELDIR and lastly the absolute path of the model directory os.path.dirname(model_path).
  • If you do not set RVC_MODELDIR then arg model must be an absolute path.

Load models:

from inferrvc import RVC
whis,obama=RVC('Whis.pth',index='added_IVF1972_Flat_nprobe_1_Whis_v2'),RVC(model='obama')

print(whis.name)
print('Paths',whis.model_path,whis.index_path)
print(obama.name)
print('Paths',obama.model_path,obama.index_path)
Model: Whis, Index: added_IVF1972_Flat_nprobe_1_Whis_v2
Paths Z:\Models\RVC\Models\Whis.pth Z:\Models\RVC\Indexes\added_IVF1972_Flat_nprobe_1_Whis_v2.index
Model: obama, Index: obama
Paths Z:\Models\RVC\Models\obama.pth Z:\Models\RVC\Indexes\obama.index

Run Inferencing:

from inferrvc import load_torchaudio
aud,sr = load_torchaudio('path/to/audio.wav')

paudio1=whis(aud,f0_up_key=6,output_device='cpu',output_volume=RVC.MATCH_ORIGINAL,index_rate=.75)
paudio2=obama(aud,5,output_device='cpu',output_volume=RVC.MATCH_ORIGINAL,index_rate=.9)

import soundfile as sf

sf.write('path/to/audio_whis.wav',paudio1,44100)
sf.write('path/to/audio_obama.wav',paudio2,44100)

Whis example.
Obama example.

Changes from the original repo:

  • Removed most code not related to inferencing. Now much fewer dependencies.
  • Made a streamlined inference class and pipeline.
  • Performance and memory efficiency improvements.
  • Generic models are now managed by huggingface_hub and cached through the path HF_HOME environment variable.
  • Flexible referencing of RVC model directory and files.
  • Disabled the butterworth filter by default as there is usually no difference and might slightly reduce quality. Can be enabled with inferrvc.pipeline.enable_butterfilter=True.

Project details


Release history Release notifications | RSS feed

This version

1.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

inferrvc-1.0.tar.gz (42.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

inferrvc-1.0-py3-none-any.whl (48.8 kB view details)

Uploaded Python 3

File details

Details for the file inferrvc-1.0.tar.gz.

File metadata

  • Download URL: inferrvc-1.0.tar.gz
  • Upload date:
  • Size: 42.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.10.12

File hashes

Hashes for inferrvc-1.0.tar.gz
Algorithm Hash digest
SHA256 e80b73bab06823fb21902366b00de4bb94b8c865b815cbaf4ae0e176b26da8c7
MD5 5ecdf23dd39c399ac3600ce2da0113c8
BLAKE2b-256 af78934b9befd9f75f0433fb6bb40f5dfc5b82647a2d3bea7c417739cb73d56e

See more details on using hashes here.

File details

Details for the file inferrvc-1.0-py3-none-any.whl.

File metadata

  • Download URL: inferrvc-1.0-py3-none-any.whl
  • Upload date:
  • Size: 48.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.10.12

File hashes

Hashes for inferrvc-1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5ce4f0538761bafcf02ff723cc55f4fa97bf38a5c207f200f06d313f6f291d4f
MD5 d949b019c7d0584889ab76105c09093a
BLAKE2b-256 aee9e9e33dfcf4a6f32ebcf86523e5eda9477bf9fde17f9bc9beff92546a43fe

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page