Skip to main content

Python wrapper for fast inference with rvc

Project description

RVC Python Inference

A streamlined Python wrapper for fast inference with RVC. Specifically designed for inference tasks.

Introduction

This streamlined wrapper offers an efficient solution for integrating RVC into your Python projects, focusing primarily on rapid inference. Whether you're working on voice conversion applications or related projects, this tool simplifies the process while maintaining performance.

Key Features

  • Preloaded Models: Accelerate inference by loading models into memory beforehand, minimizing latency during runtime.
  • Batch Processing: Enhance efficiency by enabling batch processing, allowing for simultaneous conversion of multiple inputs, further optimizing throughput.
  • Support for Array Input and Output: Facilitate seamless integration with existing data pipelines by accepting and returning arrays, enhancing compatibility across various platforms and frameworks.

Getting Started

Prerequisites

  • You need to have ffmpeg and Python 3.10 installed.

  • In windows is needed to install Microsoft Visual C++ Build Tools, MSVC and Windows 10 SDK:

    • Go to the Visual Studio downloads page; Or maybe you already have Visual Studio Installer? Open it. If you have it already click modify.
    • Download and install the "Build Tools for Visual Studio" if you don't have it.
    • During installation, under "Workloads", select "C++ build tools" and ensure the latest versions of "MSVCv142 - VS 2019 C++ x64/x86 build tools" and "Windows 10 SDK" are selected ("Windows 11 SDK" if you are using Windows 11); OR go to individual components and find those two listed.
    • Complete the installation.

Installation

pip install rvc_py

Usage

Initialize the base class

from rvc_py import BaseLoader

converter = BaseLoader(only_cpu=False, hubert_path=None, rmvpe_path=None)

Define a tag and select the model along with other parameters.

converter.apply_conf(
        tag="yoimiya",
        file_model="model.pth",
        pitch_algo="rmvpe+",
        pitch_lvl=0,
        file_index="model.index",
        index_influence=0.66,
        respiration_median_filtering=3,
        envelope_ratio=0.25,
        consonant_breath_protection=0.33
    )

Select the audio or audios you want to convert.

# audio_files = ["audio.wav", "haha.mp3"]
audio_files = "myaudio.mp3"

# speakers_list = ["sunshine", "yoimiya"]
speakers_list = "yoimiya"

Perform inference

result = converter(
    audio_files,
    speakers_list,
    overwrite=False,
    parallel_workers=4
)

The result is a list with the paths of the converted files.

Unload models

converter.unload_models()

Preloading model (Reduces inference time)

The initial execution will preload the model for the tag. Subsequent calls to inference with the same tag will benefit from preloaded components, thereby reducing inference time.

result_array, sample_rate = converter.generate_from_cache(
    audio_data="myaudiofile_path.wav",
    tag="yoimiya",
)

The param audio_data can be a path or a tuple with (array_data, sampling_rate)

# array_data = np.array([-22, -22, -15, ..., 0, 0, 0], dtype=np.int16)
# source_sample_rate = 16000
data = (array_data, source_sample_rate)
result_array, sample_rate = converter.generate_from_cache(
    audio_data=data,
    tag="yoimiya",
)

The result in both cases will be (array, sample_rate), which you can save or play in a notebook

# Save
import soundfile as sf

sf.write(
    file="output_file.wav",
    samplerate=sample_rate,
    data=result_array
)

you now can separate audio using:

from rvc_py import separate_audio

audio = ""

audio(separate_audio)
# Play; need to install ipython
from IPython.display import Audio

Audio(result_array, rate=sample_rate)

When settings or the tag are altered, the model requires reloading. To maintain multiple preloaded models, you can instantiate another BaseLoader object.

second_converter = BaseLoader()

Credits

  • RVC-Project
  • FFMPEG
  • audio-separator

License

This project is licensed under the MIT License.

Disclaimer

This software is provided for educational and research purposes only. The authors and contributors of this project do not endorse or encourage any misuse or unethical use of this software. Any use of this software for purposes other than those intended is solely at the user's own risk. The authors and contributors shall not be held responsible for any damages or liabilities arising from the use of this software inappropriately.

Project details


Download files

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

Source Distribution

inf_rvc_py-1.0.0.tar.gz (31.4 kB view details)

Uploaded Source

Built Distribution

inf_rvc_py-1.0.0-py3-none-any.whl (35.0 kB view details)

Uploaded Python 3

File details

Details for the file inf_rvc_py-1.0.0.tar.gz.

File metadata

  • Download URL: inf_rvc_py-1.0.0.tar.gz
  • Upload date:
  • Size: 31.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for inf_rvc_py-1.0.0.tar.gz
Algorithm Hash digest
SHA256 bd9fbbc13997cff31c94128c39a59ae0acdcd13792d37465967b82930d71509e
MD5 873e36008c0acc95186a3f9826d868ea
BLAKE2b-256 727a587a7a9db3075300977755f7eb53121b23ed08189eaadb56f797dd389831

See more details on using hashes here.

File details

Details for the file inf_rvc_py-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: inf_rvc_py-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 35.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for inf_rvc_py-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 acadeeefb3aade2239718fb532817f6aaf2793eaabfc784e8d63f992a419460c
MD5 ae857ccedd8da64f996b567e2d5dfe9f
BLAKE2b-256 14587ed1db9ece9ab6a9ecbcd8383ccd829421e77ede3a0792db32f401aafd1b

See more details on using hashes here.

Supported by

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