Skip to main content

A fork of so-vits-svc.

Project description

SoftVC VITS Singing Voice Conversion Fork

CI Status Documentation Status Test coverage percentage

Poetry black pre-commit

PyPI Version Supported Python versions License

A fork of so-vits-svc with realtime support and greatly improved interface. Based on branch 4.0 (v1) and the models are compatible.

Installation

(Create a virtual environment)

Windows:

py -3.10 -m venv venv
venv\Scripts\activate

Linux/MacOS:

python3.10 -m venv venv
source venv/bin/activate

Anaconda:

conda create -n so-vits-svc-fork python=3.10 pip
conda activate so-vits-svc-fork

Install

Install this via pip (or your favourite package manager that uses pip):

pip install -U torch torchaudio --index-url https://download.pytorch.org/whl/cu117
pip install -U so-vits-svc-fork

Update

Please update this package regularly to get the latest features and bug fixes.

pip install -U so-vits-svc-fork

Features not available in the original repo

  • Realtime voice conversion (enhanced in v1.1.0)
  • More accurate pitch estimation using CREPE
  • GUI available
  • Unified command-line interface (no need to run Python scripts)
  • Ready to use just by installing with pip.
  • Automatically download pretrained base model and HuBERT model
  • Code completely formatted with black, isort, autoflake etc.
  • Volume normalization in preprocessing
  • Other minor differences

Usage

Inference

GUI

GUI

GUI launches with the following command:

svcg

CLI

  • Realtime (from microphone)
svc vc --model-path <model-path>
  • File
svc --model-path <model-path> source.wav

Pretrained models are available on HuggingFace.

Notes

  • If using WSL, please note that WSL requires additional setup to handle audio and the GUI will not work without finding an audio device.
  • In real-time inference, if there is noise on the inputs, the HuBERT model will react to those as well. Consider using realtime noise reduction applications such as RTX Voice in this case.

Training

Google Colab

Open In Colab

Local

Place your dataset like dataset_raw/{speaker_id}/**/{wav_file}.{any_format} (subfolders are acceptable) and run:

svc pre-resample
svc pre-config
svc pre-hubert
svc train

Notes

  • Dataset audio duration per file should be <~ 10s or VRAM will run out.
  • It is recommended to change the batch_size in config.json before the train command to match the VRAM capacity. As tested, the default requires about 14 GB.

Further help

For more details, run svc -h or svc <subcommand> -h.

> svc -h
Usage: svc [OPTIONS] COMMAND [ARGS]...

  so-vits-svc allows any folder structure for training data.
  However, the following folder structure is recommended.
      When training: dataset_raw/{speaker_name}/{wav_name}.wav
      When inference: configs/44k/config.json, logs/44k/G_XXXX.pth
  If the folder structure is followed, you DO NOT NEED TO SPECIFY model path, config path, etc.
  (The latest model will be automatically loaded.)
  To train a model, run pre-resample, pre-config, pre-hubert, train.
  To infer a model, run infer.

Options:
  -h, --help  Show this message and exit.

Commands:
  clean          Clean up files, only useful if you are using the default file structure
  infer          Inference
  onnx           Export model to onnx
  pre-config     Preprocessing part 2: config
  pre-hubert     Preprocessing part 3: hubert If the HuBERT model is not found, it will be...
  pre-resample   Preprocessing part 1: resample
  train          Train model If D_0.pth or G_0.pth not found, automatically download from hub.
  train-cluster  Train k-means clustering
  vc             Realtime inference from microphone

Contributors ✨

Thanks goes to these wonderful people (emoji key):

34j
34j

💻 🤔 📖 💡 🚇 🚧 👀 ⚠️ 📣 🐛
GarrettConway
GarrettConway

💻 🐛 📖
BlueAmulet
BlueAmulet

🤔 💬
ThrowawayAccount01
ThrowawayAccount01

🐛

This project follows the all-contributors specification. Contributions of any kind welcome!

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

so_vits_svc_fork-1.2.7.tar.gz (61.2 kB view details)

Uploaded Source

Built Distribution

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

so_vits_svc_fork-1.2.7-py3-none-any.whl (71.2 kB view details)

Uploaded Python 3

File details

Details for the file so_vits_svc_fork-1.2.7.tar.gz.

File metadata

  • Download URL: so_vits_svc_fork-1.2.7.tar.gz
  • Upload date:
  • Size: 61.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.9.6 readme-renderer/37.3 requests/2.28.2 requests-toolbelt/0.10.1 urllib3/1.26.15 tqdm/4.65.0 importlib-metadata/6.1.0 keyring/23.13.1 rfc3986/2.0.0 colorama/0.4.6 CPython/3.10.10

File hashes

Hashes for so_vits_svc_fork-1.2.7.tar.gz
Algorithm Hash digest
SHA256 21ffae7c09a0603cf38155b207c9e9f16df745b23986e86beac2d0c9f5e949fa
MD5 5c27540913c32eb1f37b8caf5ad51a32
BLAKE2b-256 ee5f95472d039fdda653bbed42fe5cd1a117823d4194ed794cea5bbae5359104

See more details on using hashes here.

File details

Details for the file so_vits_svc_fork-1.2.7-py3-none-any.whl.

File metadata

  • Download URL: so_vits_svc_fork-1.2.7-py3-none-any.whl
  • Upload date:
  • Size: 71.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.9.6 readme-renderer/37.3 requests/2.28.2 requests-toolbelt/0.10.1 urllib3/1.26.15 tqdm/4.65.0 importlib-metadata/6.1.0 keyring/23.13.1 rfc3986/2.0.0 colorama/0.4.6 CPython/3.10.10

File hashes

Hashes for so_vits_svc_fork-1.2.7-py3-none-any.whl
Algorithm Hash digest
SHA256 6a5b32826c98a7fdc3a82ae13633bbb2d1f81abd5945942dbaa12595dd32abcd
MD5 2212b9bc2781b9e45d8ee2e5961a73d6
BLAKE2b-256 a30c56b62b33108323f95b5aef445a18adc670693d0ba81e619074ab8b63603f

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