Skip to main content

Run Retrieval-based Voice Conversion training and inference with ease.

Project description

ZeroRVC

Run Retrieval-based Voice Conversion training and inference with ease.

Features

  • Dataset Preparation
  • Hugging Face Datasets Integration
  • Hugging Face Accelerate Integration
  • Trainer API
  • Inference API
    • Index Support
  • Tensorboard Support
  • FP16 Support

Dataset Preparation

ZeroRVC provides a simple API to prepare your dataset for training. You only need to provide the path to your audio files. The feature extraction models will be downloaded automatically, or you can provide your own with the hubert and rmvpe arguments.

from zerorvc import prepare

dataset = prepare("./my-voices")

Since dataset is a Hugging Face Dataset object, you can easily push it to the Hugging Face Hub.

dataset.push_to_hub("my-rvc-dataset", token=HF_TOKEN)

And bring the preprocessed dataset back with the following code.

from datasets import load_dataset

dataset = load_dataset("my-rvc-dataset")

Training

Once you've prepared your dataset, you can start training your model with the RVCTrainer.

from tqdm import tqdm
from zerorvc import RVCTrainer

epochs = 100
trainer = RVCTrainer(checkpoint_dir="./checkpoints")
training = tqdm(
    trainer.train(
        dataset=dataset["train"], # preprocessed dataset
        resume_from=trainer.latest_checkpoint(), # resume training from the latest checkpoint if any
        epochs=epochs, batch_size=8
    )
)

# Training loop: iterate over epochs
for checkpoint in training:
    training.set_description(
        f"Epoch {checkpoint.epoch}/{epochs} loss: (gen: {checkpoint.loss_gen:.4f}, fm: {checkpoint.loss_fm:.4f}, mel: {checkpoint.loss_mel:.4f}, kl: {checkpoint.loss_kl:.4f}, disc: {checkpoint.loss_disc:.4f})"
    )

    # Save checkpoint every 10 epochs
    if checkpoint.epoch % 10 == 0:
        checkpoint.save(checkpoint_dir=trainer.checkpoint_dir)
        # Directly push the synthesizer to the Hugging Face Hub
        checkpoint.G.push_to_hub("my-rvc-model", token=HF_TOKEN)

print("Training completed.")

Inference

ZeroRVC provides an easy API to convert your voice with the trained model.

from zerorvc import RVC
from huggingface_hub import hf_hub_download

model = hf_hub_download("my-rvc-model", "model.safetensors")
config = hf_hub_download("my-rvc-model", "config.json")
rvc = RVC(model)
rvc.convert("path/to/audio.wav", "path/to/converted.wav")

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

zerorvc-0.0.2.tar.gz (33.0 kB view details)

Uploaded Source

Built Distribution

zerorvc-0.0.2-py3-none-any.whl (41.8 kB view details)

Uploaded Python 3

File details

Details for the file zerorvc-0.0.2.tar.gz.

File metadata

  • Download URL: zerorvc-0.0.2.tar.gz
  • Upload date:
  • Size: 33.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.0

File hashes

Hashes for zerorvc-0.0.2.tar.gz
Algorithm Hash digest
SHA256 b7164474940dfb2d29cf43045e9cfb466318df93f8e03c4153e24adc7b1aee37
MD5 99ae0757a0950471bcaff200a7667132
BLAKE2b-256 f4a9742afa363fe610188b6f3717bfdb7c5bdff9f360f90543a95fad20ca7670

See more details on using hashes here.

File details

Details for the file zerorvc-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: zerorvc-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 41.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.0

File hashes

Hashes for zerorvc-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5d9cf6c95fcc6c8a66aefa5ca7a01a66640f773e3dc6d0670e7d456659b9dcbe
MD5 bb5258d8bcd42706246d0a14fa274057
BLAKE2b-256 06dab0fa0c640058107a7cf24d044dc7449db55568e523ca2bc871b0e9e79c3e

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