How to run Seed-VC voice conversion on a cloud GPU

Rent a GPU on Deploy, then open a terminal in JupyterLab or over SSH. Install Seed-VC from the official Plachtaa/seed-vc repository, run inference.py or inference_v2.py with a source wav and a reference wav, or start the Gradio app the README names. Copy the wav files off the instance before you destroy it, because destroying the instance deletes its disk.

Other voice pages: How to run RVC voice conversion on a cloud GPU, How to run OpenVoice on a cloud GPU, and How to run XTTS-v2 on a cloud GPU. The RVC README prints no GB figure. The OpenVoice README prints no GPU GB figure. The XTTS-v2 model card publishes no GPU GB figure. If the process runs out of memory: How to fix CUDA out of memory on a cloud GPU. The tunnel for the Gradio apps is How to use SSH port forwarding on a cloud GPU.

Convert a voice only when you have the rights and the speaker’s consent. The LICENSE file is the GNU General Public License, Version 3, 29 June 2007. The GitHub license field on 2026-11-13 was GPL-3.0. The model API for Plachta/Seed-VC the same day returned gated false and cardData.license gpl-3.0. Read the LICENSE file before you redistribute the program.

The commands below are copied from the upstream files named in each step. They were not run on a CloudGPU instance for this page. Anything this page adds around them is marked.

What the README says about memory

The README prints no GPU GB figure. It says “If you have limited memory, remove --enable-v2 or --enable-v1 to only load one of the model sets.” The training notes say to choose --batch-size depending on GPU memory. Neither sentence gives a number of GB. The model table’s Params column prints 25M, 98M, 200M, and 67M(CFM) + 90M(AR). Those cells are parameter counts, not GPU GB figures. This page does not convert them into VRAM.

The README’s real-time section says performance testing was done on an NVIDIA RTX 3060 Laptop GPU and prints a latency table for that card. RTX 3060 Laptop is not a name in gpu-prices.json. The fine-tuning sentence says “minimum 100 steps, 2 min on T4”. T4 is not a name in gpu-prices.json. That sentence is about fine-tuning. This page did not remeasure either test and does not treat those cards as a catalog row.

GET /v1/public/compute-capabilities does not list GPUs. It returns feature flags. The memory column is vram_gb from gpu-prices.json, updated_at 2026-11-13T08:10:03.664Z. GET /v1/public/gpu-catalog the same day (generated_at 2026-11-13T08:10:04.454Z) listed the same names and the same vram_gb values, plus Ascend 910B at 64, which is not in gpu-prices.json and is not listed here. The catalog response also includes an availability field. This page does not copy it. Every prices row has gpu_count 1. There is no upstream GPU GB figure to match these values against. How published FLUX and SDXL weight sizes are read: How much VRAM do I need for FLUX and SDXL. Those sizes are not a figure from this repository. This page did not run Seed-VC and does not mark a row as enough. Which listing you can start is on Deploy.

The catalog template list had no Seed-VC template.

Catalog name vram_gb
RTX 2080 8
RTX 3080 10
RTX 2080 Ti 11
RTX 3080 Ti 12
V100 16G 16
A30 24
RTX 3090 24
RTX 4090 24
RTX 4090D 24
RTX 4080 SUPER 32G 32
RTX 5090 32
RTX 5090D 32
V100 32G 32
A100 40G 40
A800 40G 40
A40 48
RTX 4090 48G 48
RTX 4090D 48G 48
RTX A6000 48
NVIDIA RTX PRO 5000 72G 72
RTX PRO 5000 72G 72
A100 80G 80
A800 80G 80
H800 80
RTX 6000D 83
H20 96G 96
RTX PRO 6000 96G 96
RTX PRO 6000 Max-Q 96
H20-3e 141G 141

Install

On Deploy, choose Raw GPU. The README says suggested Python is 3.10 on Windows, Mac M Series, or Linux. The Windows and Linux block, copied:

# The next two lines are added on this page. The README does not print a clone command.
git clone https://github.com/Plachtaa/seed-vc.git
cd seed-vc
pip install -r requirements.txt

requirements.txt begins with unpinned torch, torchvision, and torchaudio lines that pass --pre and --index-url https://download.pytorch.org/whl/nightly/cu126. Later lines pin torch==2.4.0, torchvision==0.19.0, and torchaudio==2.4.0. The file also pins gradio==5.23.0 and transformers==4.46.3. This page did not run pip and does not say which torch line the installer keeps. The commits API for the default branch main listed 51383efd921027683c89e5348211d93ff12ac2a8, committed 2025-04-20T05:27:04Z. The README was 3e152dc6b80802690e2214b6934bd056c0d4423d, committed 2025-04-16T05:24:42Z. requirements.txt was eb92b1e4aaada0d75a177f834004e31d7feb0e96, committed 2025-04-18T10:22:20Z. The git clone and cd lines in that block are marked. The README’s own line is pip install -r requirements.txt. This page did not run them.

The RTX 5090 guide says that card is compute capability 12.0 (sm_120) and that PyTorch 2.7 and later, on a build for CUDA 12.8 or newer, is the line that announced support. The pinned line is torch==2.4.0. The nightly lines do not pin a version. This page did not install a wheel and did not re-test Seed-VC on an RTX 5090. Catalog RTX 5090 and RTX 5090D are 32. That is the catalog number only.

Checkpoints

The README says checkpoints of the latest release are downloaded automatically on the first inference run. inference.py calls load_custom_model_from_hf("Plachta/Seed-VC", ...) when --checkpoint is omitted. For f0-condition false it requests DiT_seed_v2_uvit_whisper_small_wavenet_bigvgan_pruned.pth. For f0-condition true it requests DiT_seed_v2_uvit_whisper_base_f0_44k_bigvgan_pruned_ft_ema_v2.pth. The README model-table link for the singing row names DiT_seed_v2_uvit_whisper_base_f0_44k_bigvgan_pruned_ft_ema.pth, without _v2. The preset file configs/presets/config_dit_mel_seed_uvit_whisper_base_f0_44k.yml sets pretrained_model to that same name without _v2. This page did not download either file.

The README table’s Content Encoder cells print XLSR-large, Whisper-small, Whisper-small, and ASTRAL-Quantization. Two preset files set speech_tokenizer.name, and configs/v2/vc_wrapper.yaml sets tokenizer_name, to a Hugging Face repo id owned by a closed-model vendor. This page does not print that id. Copy the field from those files. The vocoder names the preset files do print are nvidia/bigvgan_v2_22khz_80band_256x, nvidia/bigvgan_v2_44khz_128band_512x, and, for the tiny preset, facebook/wav2vec2-xls-r-300m. configs/v2/vc_wrapper.yaml also sets ssl_model_name to facebook/hubert-large-ll60k. The commits API listed the three preset files at 904a65b673146f6b1d8343c2674493b084cd4de0 (2024-11-26T18:34:32Z) and configs/v2/vc_wrapper.yaml at fc973944c2a13b369f8f88969d73d08f64a941f0 (2025-04-16T01:28:14Z).

The README also says to prefix a command with HF_ENDPOINT=https://hf-mirror.com if Hugging Face is not reachable. That prefix is the README’s.

The model table, with the columns the README prints. The Remarks cells are the README’s words.

Version Name Purpose Sampling rate Content encoder Vocoder Params Remarks
v1.0 seed-uvit-tat-xlsr-tiny Voice conversion 22050 XLSR-large HIFT 25M suitable for real-time voice conversion
v1.0 seed-uvit-whisper-small-wavenet Voice conversion 22050 Whisper-small BigVGAN 98M suitable for offline voice conversion
v1.0 seed-uvit-whisper-base Singing voice conversion 44100 Whisper-small BigVGAN 200M strong zero-shot performance, singing voice conversion
v2.0 hubert-bsqvae-small Voice and accent conversion 22050 ASTRAL-Quantization BigVGAN 67M(CFM) + 90M(AR) Best in suppressing source speaker traits

Hidden dim and layer counts are also in that table: 384 and 9, 512 and 13, 768 and 17, and 512 and 13. The README says a reference speech of 1 to 30 seconds is enough for the released zero-shot models. This page did not remeasure that range.

Voice and singing inference

The README’s V1 command, copied. The angle brackets and the placeholder spelling referene-wav are the README’s. The block does not join lines with backslashes.

python inference.py --source <source-wav>
--target <referene-wav>
--output <output-dir>
--diffusion-steps 25 # recommended 30~50 for singingvoice conversion
--length-adjust 1.0
--inference-cfg-rate 0.7
--f0-condition False # set to True for singing voice conversion
--auto-f0-adjust False # set to True to auto adjust source pitch to target pitch level, normally not used in singing voice conversion
--semi-tone-shift 0 # pitch shift in semitones for singing voice conversion
--checkpoint <path-to-checkpoint>
--config <path-to-config>
 --fp16 True

The README says --diffusion-steps defaults to 25 in that explanation, to use 30 to 50 for singing quality, and to use 4 to 10 for the fastest inference. inference.py defaults --diffusion-steps to 30, --output to ./reconstructed, --source to ./examples/source/source_s1.wav, --target to ./examples/reference/s1p1.wav, --inference-cfg-rate to 0.7, --f0-condition to false, and --fp16 to true. It writes vc_{source}_{target}_{length_adjust}_{diffusion_steps}_{inference_cfg_rate}.wav under --output and prints an RTF line. This page has no measured RTF. The commits API listed inference.py at 501179d1bbc8ec20f8eacdcb381770638052bd22 (2025-03-17T20:09:14Z). This page did not run it.

The README’s V2 command, copied the same way:

python inference_v2.py --source <source-wav>
--target <referene-wav>
--output <output-dir>
--diffusion-steps 25 # recommended 30~50 for singingvoice conversion
--length-adjust 1.0 # same as V1
--intelligibility-cfg-rate 0.7 # controls how clear the output linguistic content is, recommended 0.0~1.0
--similarity-cfg-rate 0.7 # controls how similar the output voice is to the reference voice, recommended 0.0~1.0
--convert-style true # whether to use AR model for accent & emotion conversion, set to false will only conduct timbre conversion similar to V1
--anonymization-only false # set to true will ignore reference audio but only anonymize source speech to an "average voice"
--top-p 0.9 # controls the diversity of the AR model output, recommended 0.5~1.0
--temperature 1.0 # controls the randomness of the AR model output, recommended 0.7~1.2
--repetition-penalty 1.0 # penalizes the repetition of the AR model output, recommended 1.0~1.5
--cfm-checkpoint-path <path-to-cfm-checkpoint> # path to the checkpoint of the CFM model, leave to blank to auto-download default model from huggingface
--ar-checkpoint-path <path-to-ar-checkpoint> # path to the checkpoint of the AR model, leave to blank to auto-download default model from huggingface

inference_v2.py defaults --output to ./output, --diffusion-steps to 30, --intelligibility-cfg-rate to 0.7, --similarity-cfg-rate to 0.7, --convert-style to false, and --anonymization-only to false. It writes vc_v2_{source}_{target}_{length_adjust}_{diffusion_steps}_{similarity_cfg_rate}.wav and prints Output saved to: plus that path. It also prints Voice conversion completed in plus the elapsed seconds. This page has no measured elapsed time. The commits API listed inference_v2.py at fc973944c2a13b369f8f88969d73d08f64a941f0 (2025-04-16T01:28:14Z). This page did not run it.

Web UI

The README’s voice-conversion UI, copied:

python app_vc.py --checkpoint <path-to-checkpoint> --config <path-to-config> --fp16 True

The next sentence says to open http://localhost:7860/. app_vc.py calls .launch(share=args.share) and does not pass a port. app_svc.py does the same. app_vc_v2.py and app.py call .launch() with no arguments. This page does not take 7860 from those calls. It is the URL the README prints for app_vc.py. Forward the local URL the process prints with how to use SSH port forwarding on a cloud GPU.

The singing UI and the V2 UI, copied:

python app_svc.py --checkpoint <path-to-checkpoint> --config <path-to-config> --fp16 True
python app_vc_v2.py --cfm-checkpoint-path <path-to-cfm-checkpoint> --ar-checkpoint-path <path-to-ar-checkpoint>

The integrated UI, copied:

python app.py --enable-v1 --enable-v2

The README says that command loads pretrained models for zero-shot inference, and that a custom checkpoint uses app_vc.py or app_svc.py. It says you may consider adding --compile to gain ~x6 speed-up on AR model inference. That figure is the README’s. This page did not remeasure it. app_vc.py was 1ad34717f741653b58629e7ff322493a2564f86d (2025-03-07T11:13:54Z), the same commit as app_svc.py. app.py was 904f8319468af63c53650a8d12f0ad9c66e748ab (2025-04-18T09:53:14Z). app_vc_v2.py was fc973944c2a13b369f8f88969d73d08f64a941f0 (2025-04-16T01:28:14Z). This page did not start the UI.

The real-time GUI command, copied:

python real-time-gui.py --checkpoint-path <path-to-checkpoint> --config-path <path-to-config>

real-time-gui.py imports FreeSimpleGUI. This page did not start it and does not add a desktop display. The README’s table for the RTX 3060 Laptop test, copied. That card is not in the catalog.

Model configuration Diffusion steps Inference CFG rate Max prompt length Block time (s) Crossfade length (s) Extra context left (s) Extra context right (s) Latency (ms) Inference time per chunk (ms)
seed-uvit-xlsr-tiny 10 0.7 3.0 0.18s 0.04s 2.5s 0.02s 430ms 150ms

The README says the algorithm delay is approximately Block Time * 2 + Extra context (right), and that device-side delay is usually ~100ms. Earlier it says algorithm delay of ~300ms and device-side delay of ~100ms. Those sentences are the README’s. This page did not remeasure them. The same section says setting the inference CFG rate to 0.0 gains about 1.5x speed-up. That figure is the README’s.

The README does not name ComfyUI. The ComfyUI examples top-level directory list on 2026-11-13 had no directory named for this project. Examples HEAD was f9431bb000ce792094ff345446e22cac1ea6cef3, committed 2025-11-26T20:33:58Z. This page does not add a ComfyUI install.

Fine-tuning, as the README documents it

The README says each audio file should range from 1 to 30 seconds or it is ignored, and that formats are .wav, .flac, .mp3, .m4a, .opus, and .ogg. It says each speaker needs at least 1 utterance. It names three preset configs: ./configs/presets/config_dit_mel_seed_uvit_xlsr_tiny.yml for real-time voice conversion, ./configs/presets/config_dit_mel_seed_uvit_whisper_small_wavenet.yml for offline voice conversion, and ./configs/presets/config_dit_mel_seed_uvit_whisper_base_f0_44k.yml for singing voice conversion. The training command, copied. The block does not join lines with backslashes.

python train.py 
--config <path-to-config> 
--dataset-dir <path-to-data>
--run-name <run-name>
--batch-size 2
--max-steps 1000
--max-epochs 1000
--save-every 500
--num-workers 0

train.py also accepts --pretrained-ckpt and --gpu, which that block does not print. Defaults in the file match the numbers in the block: batch size 2, max steps 1000, max epochs 1000, save every 500, num workers 0. The V2 command, copied:

accelerate launch train_v2.py 
--dataset-dir <path-to-data>
--run-name <run-name>
--batch-size 2
--max-steps 1000
--max-epochs 1000
--save-every 500
--num-workers 0
--train-cfm

train_v2.py also accepts --train-ar, --config, --pretrained-cfm-ckpt, and --pretrained-ar-ckpt. The README says a stopped run resumes when --run-name and --config match, and that checkpoints land under ./runs/<run-name>/ as ft_model.pth. The commits API listed train.py at 1fff96a16e657979364bb07385d2be18f2516c96 (2025-03-04T11:21:13Z) and train_v2.py at fc973944c2a13b369f8f88969d73d08f64a941f0 (2025-04-16T01:28:14Z). This page did not run training. The “2 min on T4” sentence is in the memory section.

When it fails

CUDA out of memory. The README’s limited-memory sentence is to drop --enable-v2 or --enable-v1 on python app.py. It prints no GPU GB cutoff. If the process still raises that error, use how to fix CUDA out of memory on a cloud GPU.

“CUDA error: no kernel image is available for execution on the device” on an RTX 5090. See the install section. This page did not re-test the package on that card.

Mac Tkinter. The README says real-time-gui.py on Mac can raise ModuleNotFoundError: No module named '_tkinter'. That sentence is about Mac. This page does not copy the linked fix.

Save the audio, then destroy

Copy the wav path inference.py or inference_v2.py writes, or the audio the Gradio widget returns, before you destroy the instance. Save your work before you destroy a cloud GPU is the checklist. The terms say data on local instance storage is permanently deleted when the instance is destroyed.

The pricing page FAQ states the billing rule in these words:

Per-minute options have a 1-minute minimum; unused prepaid minutes are refunded when you destroy the instance. Some configurations use whole-hour billing with a 1-hour minimum; unused time within a charged hour is not refunded on voluntary stop. The billing period, minimum charge and initial prepayment are shown before confirmation. No subscription.

Frequently asked questions

How much VRAM does the Seed-VC README publish?

The Seed-VC README does not print a GPU GB figure. It says to drop --enable-v1 or --enable-v2 when memory is limited, and it prints parameter counts of 25M, 98M, 200M, and 67M plus 90M. Those counts are not GPU GB figures. The real-time table is for an NVIDIA RTX 3060 Laptop GPU, which is not in gpu-prices.json. The fine-tuning sentence says minimum 100 steps, 2 min on T4. T4 is not in gpu-prices.json. Catalog RTX 2080 is 8. This page does not mark a catalog vram_gb as enough. Which listing you can start is on https://cloudgpu.app/deploy.

Which commands does the repository document for voice and singing conversion?

The README voice command is python inference.py with --source, --target, --output, and --f0-condition False. It sets --f0-condition True for singing voice conversion. The README block uses diffusion-steps 25. inference.py defaults diffusion-steps to 30 and --output to ./reconstructed. The V2 command is python inference_v2.py. inference_v2.py defaults --output to ./output and --convert-style to false. The README block prints --convert-style true.

Where are outputs saved, and which URL does the README print for the Web UI?

inference.py writes a wav under --output. The name joins vc, the source basename, the target basename, length adjust, diffusion steps, and the inference cfg rate. inference_v2.py writes a wav whose name joins vc_v2, the source basename, the target basename, length adjust, diffusion steps, and the similarity cfg rate, and it prints Output saved to plus that path. The README says to open http://localhost:7860/ after python app_vc.py. app_vc.py calls launch with share and does not pass a port. app.py calls launch with no arguments. This page did not start the UI.

Which license covers Seed-VC?

The LICENSE file is the GNU General Public License, Version 3, 29 June 2007. The preamble says: When we speak of free software, we are referring to freedom, not price. That sentence is license text, not a CloudGPU price and not a storage allowance. The GitHub license field on 2026-11-13 was GPL-3.0. The model API for Plachta/Seed-VC returned gated false and cardData.license gpl-3.0. Read the LICENSE file before you redistribute the program.

Sources (read 2026-11-13, Asia/Shanghai)

  • Seed-VC README (install, model table, inference commands, http://localhost:7860/, real-time table, fine-tuning command, “2 min on T4”): https://github.com/Plachtaa/seed-vc/blob/main/README.md commit 3e152dc6b80802690e2214b6934bd056c0d4423d. Repository HEAD 51383efd921027683c89e5348211d93ff12ac2a8, committed 2025-04-20T05:27:04Z
  • inference.py (checkpoint filenames, --output ./reconstructed, diffusion-steps default 30, wav name): commit 501179d1bbc8ec20f8eacdcb381770638052bd22
  • inference_v2.py (--output ./output, --convert-style default false, Output saved to): commit fc973944c2a13b369f8f88969d73d08f64a941f0
  • app_vc.py and app_svc.py (.launch(share=args.share) with no port): commit 1ad34717f741653b58629e7ff322493a2564f86d
  • app.py (demo.launch() with no arguments, --enable-v1, --enable-v2): commit 904f8319468af63c53650a8d12f0ad9c66e748ab
  • app_vc_v2.py: commit fc973944c2a13b369f8f88969d73d08f64a941f0
  • real-time-gui.py: commit e3ed784c99a2def78f0ec8e3f4b94bf9a180af70
  • requirements.txt (nightly cu126 lines and torch==2.4.0): commit eb92b1e4aaada0d75a177f834004e31d7feb0e96
  • Preset configs (vocoder names, closed-vendor tokenizer id not printed here): commit 904a65b673146f6b1d8343c2674493b084cd4de0
  • configs/v2/vc_wrapper.yaml: commit fc973944c2a13b369f8f88969d73d08f64a941f0
  • train.py and train_v2.py: commits 1fff96a16e657979364bb07385d2be18f2516c96 and fc973944c2a13b369f8f88969d73d08f64a941f0
  • LICENSE (GNU GPL Version 3, 29 June 2007): commit 631cf7bccc73f5ef495ecd3ae062661953d62a8e. GitHub license field GPL-3.0. Plachta/Seed-VC model API cardData.license gpl-3.0, gated false
  • ComfyUI examples top-level directories (no Seed-VC directory): https://github.com/comfyanonymous/ComfyUI_examples commit f9431bb000ce792094ff345446e22cac1ea6cef3
  • Public GPU memory: https://cloudgpu.app/gpu-prices.json (updated_at 2026-11-13T08:10:03.664Z) and https://cloudgpu.app/v1/public/gpu-catalog (generated_at 2026-11-13T08:10:04.454Z). GET /v1/public/compute-capabilities returned feature flags and no GPU list. The catalog had no Seed-VC template

Cards you can start are on the Deploy page. Prices are on https://cloudgpu.app/pricing and are not repeated here.

Last updated: 2026-11-13 (Asia/Shanghai).