How to run CosyVoice on a cloud GPU
Rent a GPU on Deploy, then open a terminal in JupyterLab or over SSH. Install CosyVoice from the official FunAudioLLM repository, download the Fun-CosyVoice 3.0 checkpoint the README names, run example.py, and copy the wav files off the instance before you destroy it. Destroying the instance deletes its disk.
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.
Use a reference clip you have the right to clone. The README does not add a separate permission line.
Other TTS installs on the same kind of instance: how to run Kokoro TTS, how to run F5-TTS, and how to run Chatterbox TTS.
What the README and the model card say about memory
The CosyVoice README and the FunAudioLLM/Fun-CosyVoice3-0.5B-2512 model card publish no GB figure (read 2026-11-12). The README evaluation table lists Fun-CosyVoice3-0.5B-2512 with Model Size 0.5B. This page does not treat that cell as a VRAM figure. The model API reported gated: false, pipeline_tag: text-to-speech, and license apache-2.0. The repository LICENSE is Apache-2.0. The card language list is zh, en, fr, es, ja, ko, it, ru, de, the same nine languages the README highlight names.
The README also prints an evaluation table with error rates and similarity scores, and a latency sentence in the highlight list. This page leaves both in the README.
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-12T10:02:26.669Z. GET /v1/public/gpu-catalog the same day (generated_at 2026-11-12T10:02:27.380Z) listed the same names and the same vram_gb values, plus Ascend 910B, which is not in gpu-prices.json and is not listed here. There is no upstream GB cutoff to match these values against. Which listing you can start is on Deploy. This page does not say which listings are available.
| 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 |
Install
On Deploy, choose Raw GPU. The README says Python 3.10 in the conda block. If conda is not on PATH, use how to set up a conda environment on a cloud GPU. This page did not check whether the Raw GPU image already has conda.
Copied from the install section. The pip line uses the index the README prints.
git clone --recursive https://github.com/FunAudioLLM/CosyVoice.git
cd CosyVoice
git submodule update --init --recursive
conda create -n cosyvoice -y python=3.10
conda activate cosyvoice
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com
The README puts the sox packages under “If you encounter sox compatibility issues”. Ubuntu lines, copied:
sudo apt-get install sox libsox-dev
requirements.txt (read 2026-11-12) starts with --extra-index-url https://download.pytorch.org/whl/cu121 and pins torch==2.3.1 and torchaudio==2.3.1. A second extra index in that file is not copied here. How to install a specific PyTorch CUDA version is the wheel index.
Download Fun-CosyVoice 3.0 and run example.py
The README says it strongly recommends Fun-CosyVoice3-0.5B for better performance, and to follow example.py. The Hugging Face download for that checkpoint, copied from the README block. The same block also downloads older checkpoints. Those lines stay in the README.
from huggingface_hub import snapshot_download
snapshot_download('FunAudioLLM/Fun-CosyVoice3-0.5B-2512', local_dir='pretrained_models/Fun-CosyVoice3-0.5B')
How to download a Hugging Face model is the manual hf download reference. cloudgpu-net is not in the CosyVoice README. The download speed guide says to leave it off during pip, then turn it on for a weight download.
example.py main() calls cosyvoice3_example(). The load and the first save, copied. The prompt wav path is ./asset/zero_shot_prompt.wav. The function writes more wav files after this call. They stay in the file.
cosyvoice = AutoModel(model_dir='pretrained_models/Fun-CosyVoice3-0.5B')
for i, j in enumerate(cosyvoice.inference_zero_shot('八百标兵奔北坡,北坡炮兵并排跑,炮兵怕把标兵碰,标兵怕碰炮兵炮。', 'You are a helpful assistant.<|endofprompt|>希望你以后能够做的比我还好呦。',
'./asset/zero_shot_prompt.wav', stream=False)):
torchaudio.save('zero_shot_{}.wav'.format(i), j['tts_speech'], cosyvoice.sample_rate)
The documented way to run that function is the README command:
python example.py
torchaudio.save paths in cosyvoice3_example() are zero_shot_{}.wav, fine_grained_control_{}.wav, instruct_{}.wav, hotfix_{}.wav, and japanese_{}.wav, with {} the enumerate index, in the working directory. A comment in that function says Japanese text must be translated to katakana. The sample in the file is the comment, not a measurement.
The README vLLM section says CosyVoice2/3 supports vLLM 0.11.x+ (V1 engine) and vLLM 0.9.0 (legacy), and that versions below 0.9.0 do not support CosyVoice inference. The comment in the block says vllm==0.9.0. The command under that comment says vllm==v0.9.0. Both are copied as printed. Neither was installed.
conda create -n cosyvoice_vllm --clone cosyvoice
conda activate cosyvoice_vllm
pip install vllm==v0.9.0 transformers==4.51.3 numpy==1.26.4 -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com
pip install vllm==v0.11.0 transformers==4.57.1 numpy==1.26.4 -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com
python vllm_example.py
Gradio
The README web demo command points at pretrained_models/CosyVoice-300M. The 3.0 download above does not create that directory. AutoModel in cosyvoice/cli/cosyvoice.py (read 2026-11-12) calls modelscope.snapshot_download on model_dir when that path does not exist, so the string is sent to ModelScope as a repository id. Download the checkpoint the command names first. This line is in the README’s Hugging Face block. It was not run.
from huggingface_hub import snapshot_download
snapshot_download('FunAudioLLM/CosyVoice-300M', local_dir='pretrained_models/CosyVoice-300M')
Then the README command, copied:
python3 webui.py --port 50000 --model_dir pretrained_models/CosyVoice-300M
webui.py (read 2026-11-12) defaults --port to 8000 and --model_dir to pretrained_models/CosyVoice2-0.5B. That default directory is also absent after the 3.0 download. The README’s Hugging Face line for it, not run, is snapshot_download('FunAudioLLM/CosyVoice2-0.5B', local_dir='pretrained_models/CosyVoice2-0.5B'). demo.launch sets server_name='0.0.0.0' and server_port=args.port. The argparse has no host flag. The README does not print a Fun-CosyVoice3 webui command. This page does not invent one. example.py is the 3.0 path the README points at.
On your own computer, for the port in the README command:
ssh -N -L 50000:127.0.0.1:50000 -p <ssh-port> <ssh-user>@<ssh-host>
Then open http://localhost:50000. How to use SSH port forwarding is the forwarding reference. If you start webui.py with no --port, the code default is 8000, and the forward has to match that port. This page did not run the demo.
The CosyVoice README does not document a ComfyUI route. This page does not add one. The README also documents a Docker runtime and a TensorRT-LLM compose file. This page follows example.py.
When it fails
CUDA out of memory. The README and the 3.0 model card publish no GB cutoff. Then use how to fix CUDA out of memory on a cloud GPU.
“CUDA error: no kernel image is available” on an RTX 5090. Catalog RTX 5090 and RTX 5090D are 32 GB. That is the catalog value, not a CosyVoice requirement. requirements.txt pins torch==2.3.1 from the cu121 index. The RTX 5090 guide says that card needs a PyTorch build for CUDA 12.8 or newer. This page did not re-test that pin on an RTX 5090.
Save the wav files, then destroy
Copy the wav files example.py writes in the working directory 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 billing rule is on the pricing page. Prices are not copied here.
Frequently asked questions
How much VRAM does CosyVoice publish?
The FunAudioLLM/CosyVoice README and the FunAudioLLM/Fun-CosyVoice3-0.5B-2512 model card publish no GB figure (read 2026-11-12). The README evaluation table lists Fun-CosyVoice3-0.5B-2512 with Model Size 0.5B. This page does not treat that cell as a VRAM figure. gpu-prices.json lists vram_gb for the rental catalog, and this page does not mark any of those values as enough or not enough for CosyVoice. Which listing you can start is on https://cloudgpu.app/deploy.
How do I run zero-shot voice cloning with Fun-CosyVoice 3.0?
example.py calls cosyvoice3_example, which loads pretrained_models/Fun-CosyVoice3-0.5B and calls inference_zero_shot with a text, a prompt string, and ./asset/zero_shot_prompt.wav. torchaudio.save writes zero_shot_0.wav in the working directory, then more wav files in that same function. The Hugging Face download in the README is snapshot_download of FunAudioLLM/Fun-CosyVoice3-0.5B-2512 into that directory. Use a reference clip you have the right to clone.
Does the official CosyVoice repository document ComfyUI?
The CosyVoice README does not document ComfyUI. It documents python example.py and python3 webui.py --port 50000 --model_dir pretrained_models/CosyVoice-300M. Download FunAudioLLM/CosyVoice-300M into pretrained_models/CosyVoice-300M before that command. If that path does not exist, AutoModel in cosyvoice/cli/cosyvoice.py calls modelscope.snapshot_download on the same string. webui.py defaults --port to 8000 and --model_dir to pretrained_models/CosyVoice2-0.5B, and launch sets server_name to 0.0.0.0. The README does not print a Fun-CosyVoice3 webui command.
Will the wav files stay after the instance is destroyed?
No. example.py writes wav files in the working directory, including zero_shot_0.wav. Copy them before you destroy the instance. The terms say data on local instance storage is permanently deleted when the instance is destroyed. The billing rule is on https://cloudgpu.app/pricing. The repository LICENSE and the model card license field are apache-2.0.
Sources (read 2026-11-12, Asia/Shanghai)
- CosyVoice README (clone, Python 3.10, pip index, model download,
python example.py, webui command, vLLM pins): https://github.com/FunAudioLLM/CosyVoice - example.py (
cosyvoice3_example,pretrained_models/Fun-CosyVoice3-0.5B, wav names, katakana note): https://github.com/FunAudioLLM/CosyVoice/blob/main/example.py - webui.py (default port 8000, default model dir
pretrained_models/CosyVoice2-0.5B,server_name='0.0.0.0'): https://github.com/FunAudioLLM/CosyVoice/blob/main/webui.py - cosyvoice/cli/cosyvoice.py (
AutoModelcallsmodelscope.snapshot_downloadwhenmodel_dirdoes not exist): https://github.com/FunAudioLLM/CosyVoice/blob/main/cosyvoice/cli/cosyvoice.py - requirements.txt (cu121 extra index,
torch==2.3.1,torchaudio==2.3.1): https://github.com/FunAudioLLM/CosyVoice/blob/main/requirements.txt - FunAudioLLM/Fun-CosyVoice3-0.5B-2512 model card (
apache-2.0, APIgated: false, no GB figure): https://huggingface.co/FunAudioLLM/Fun-CosyVoice3-0.5B-2512 - Public GPU memory: https://cloudgpu.app/gpu-prices.json and https://cloudgpu.app/v1/public/gpu-catalog.
GET /v1/public/compute-capabilitiesreturned feature flags and no GPU list.
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-12 (Asia/Shanghai).