How to run Zonos TTS on a cloud GPU
Rent a GPU on Deploy, then open a terminal in JupyterLab or over SSH. Install Zonos from the official Zyphra/Zonos repository, let from_pretrained download the checkpoint the README names, and run sample.py or the Gradio app. Copy sample.wav, or the audio from the Gradio widget, off the instance before you destroy it, because destroying the instance deletes its disk.
Other speech pages: How to run F5-TTS on a cloud GPU, How to run Kokoro TTS on a cloud GPU, How to run XTTS-v2 on a cloud GPU, and How to run Dia text-to-speech on a cloud GPU. The F5-TTS README prints no GB figure. The Dia README’s RTX 4090 table prints ~4.4GB and ~7.9GB, and the Dia model card says around 10GB. The VoxCPM README table prints ~8 GB, ~6 GB, and ~5 GB: How to run VoxCPM text-to-speech on a cloud GPU. Speech from a text description, whose README prints no GPU GB figure and calls the mini checkpoint an 880M parameter model, is How to run Parler-TTS on a cloud GPU. How published FLUX and SDXL weight sizes are read: How much VRAM do I need for FLUX and SDXL. If the process runs out of memory: How to fix CUDA out of memory on a cloud GPU. The tunnel for the Gradio app is How to use SSH port forwarding on a cloud GPU.
Use a speaker clip you have the right to clone. The features list says a 10-30s speaker sample. The repository LICENSE file is the Apache License, Version 2.0, January 2004. The appendix copyright line is still the unfilled template Copyright [yyyy] [name of copyright owner]. The GitHub license field on 2026-11-13 was Apache-2.0. The model cards for Zyphra/Zonos-v0.1-transformer and Zyphra/Zonos-v0.1-hybrid that day had cardData.license apache-2.0, top-level license null, and gated false, lastModified 2025-06-03T00:31:22.000Z and 2025-06-03T00:31:00.000Z. Zyphra/Zonos-v0.1-speaker-embedding had the same license fields, gated false, lastModified 2025-02-12T09:17:08.000Z. Read the file before you redistribute the program or the weights.
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 and languages
The README system-requirements line says 6GB+ VRAM, and that Hybrid additionally requires a 3000-series or newer Nvidia GPU (read 2026-11-13). The features list says the model runs with a real-time factor of ~2x on an RTX 4090, and the parenthetical says that means it generates 2 seconds of audio per 1 second of compute time. Those sentences are the README’s. This page did not remeasure them. The same requirements note says Zonos can also run on CPU provided there is enough free RAM, and that this will be a lot slower than running on a dedicated GPU. The features list says Zonos-v0.1 supports English, Japanese, Chinese, French, and German.
zonos/conditioning.py defines supported_language_codes and make_cond_dict asserts the language is in that list. The Gradio language dropdown uses that list. This page does not treat the code list as a second support claim beyond the README’s five-language sentence. The README sample passes language="en-us".
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-13T09:12:35.958Z. GET /v1/public/gpu-catalog the same day (generated_at 2026-11-13T09:12:36.283Z) 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. The smallest vram_gb in that file is 8, on RTX 2080, which is above the README’s 6GB+ sentence. Catalog RTX 4090 is 24. Those catalog numbers are not the real-time-factor sentence. This page did not map “3000-series or newer” onto catalog names. This page did not run Zonos and does not mark a row as enough. Which listing you can start is on Deploy.
The catalog template list had no Zonos 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’s uv section does not repeat a clone. The clone line below is the one in the Docker section. The comment marking that is this page’s.
# The uv section does not print a clone. This line is the Docker section's clone.
git clone https://github.com/Zyphra/Zonos.git
cd Zonos
apt install -y espeak-ng # For Ubuntu
# brew install espeak-ng # For MacOS
pip install -U uv
uv sync
uv sync --extra compile # optional but needed to run the hybrid
uv pip install -e .
pyproject.toml requires Python >=3.10 and lists torch>=2.5.1, torchaudio>=2.5.1, and gradio>=5.15.0. The optional compile extra lists flash-attn>=2.7.3, mamba-ssm>=2.2.4, and causal-conv1d>=1.5.0.post8. The README also prints uv pip install -e . plus uv pip install -e .[compile] for an existing environment, and pip install -e . plus pip install --no-build-isolation -e .[compile]. The heading above the uv-into-the-current-environment block spells the word “actived”. The commits API for the default branch main listed bc40d98e1e1ab54fc65c483be127a90e3c7c0645, committed 2025-03-05T20:01:59Z. README.md was 5739a31244fcddc015cfa308eb3246c0a4d9ca1e, committed 2025-02-16T23:12:12Z. pyproject.toml and sample.py were 0b697e0da568180ef62fd7cec2a3aae31833eb10, committed 2025-02-12T18:10:04Z.
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. pyproject.toml requires torch>=2.5.1. This page did not re-test Zonos on an RTX 5090. Catalog RTX 5090 and RTX 5090D are 32. That is the catalog number only.
The README links an experimental Windows fork. This page does not copy that fork.
The documented Python sample
The usage sample, copied. It loads assets/exampleaudio.mp3, which is in the repository.
import torch
import torchaudio
from zonos.model import Zonos
from zonos.conditioning import make_cond_dict
from zonos.utils import DEFAULT_DEVICE as device
# model = Zonos.from_pretrained("Zyphra/Zonos-v0.1-hybrid", device=device)
model = Zonos.from_pretrained("Zyphra/Zonos-v0.1-transformer", device=device)
wav, sampling_rate = torchaudio.load("assets/exampleaudio.mp3")
speaker = model.make_speaker_embedding(wav, sampling_rate)
cond_dict = make_cond_dict(text="Hello, world!", speaker=speaker, language="en-us")
conditioning = model.prepare_conditioning(cond_dict)
codes = model.generate(conditioning)
wavs = model.autoencoder.decode(codes).cpu()
torchaudio.save("sample.wav", wavs[0], model.autoencoder.sampling_rate)
Zonos.from_pretrained downloads config.json and model.safetensors from the repo id. zonos/utils.py sets DEFAULT_DEVICE to the current CUDA device when CUDA is available, and otherwise to CPU. zonos/autoencoder.py calls DacModel.from_pretrained("descript/dac_44khz"). The model API for that id on 2026-11-13 returned gated false, top-level license null, and no license field in the card metadata this page read, lastModified 2024-10-11T13:31:19.000Z. preprocess resamples the waveform to 44100. The saved rate is model.autoencoder.sampling_rate, which the file sets from dac.config.sampling_rate. This page did not load that config. The README says the model outputs speech natively at 44kHz. speaker_cloning.py downloads ResNet293_SimAM_ASP_base.pt and ResNet293_SimAM_ASP_base_LDA-128.pt from Zyphra/Zonos-v0.1-speaker-embedding.
The install section’s check command is:
uv run sample.py
# python sample.py
sample.py is the same sample, and it is the file that calls torchaudio.save("sample.wav", ...). The README sentence “This should produce a sample.wav file in your project root directory” sits under the Gradio heading. gradio_interface.py returns audio to the widget and does not call torchaudio.save. This page did not run sample.py.
Gradio
The README’s Gradio commands:
uv run gradio_interface.py
# python gradio_interface.py
gradio_interface.py calls demo.launch(server_name="0.0.0.0", server_port=7860, share=share). share is true only when the environment variable GRADIO_SHARE is true, 1, or t. The model dropdown appends Zyphra/Zonos-v0.1-transformer when the backbone supports transformer, and Zyphra/Zonos-v0.1-hybrid when it supports hybrid. If hybrid is absent, the file prints that the mamba-ssm library has probably not been installed. The generate function returns (sampling_rate, wav) to a Gradio audio output. It does not write sample.wav. The commits API listed this file at a09ff4fa50cfa66bf79986e19c191f85f5cb53e8, committed 2025-02-18T11:08:05Z. This page did not start the app. Forward port 7860 with how to use SSH port forwarding on a cloud GPU. Download the audio from the widget before you destroy the instance.
The Docker block in the README, copied. It was not run. The comment in the last line is the README’s.
git clone https://github.com/Zyphra/Zonos.git
cd Zonos
# For gradio
docker compose up
# Or for development you can do
docker build -t zonos .
docker run -it --gpus=all --net=host -v /path/to/Zonos:/Zonos -t zonos
cd /Zonos
python sample.py # this will generate a sample.wav in /Zonos
ComfyUI
The README does not document a ComfyUI install. 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. Installing ComfyUI itself is How to install ComfyUI and ComfyUI-Manager on a cloud GPU. This page does not add a ComfyUI install.
When it fails
CUDA out of memory. The files this page read do not print a second low-memory flag. The README’s GPU line is 6GB+ VRAM. If the process 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.
Hybrid model missing from the dropdown. gradio_interface.py adds Zyphra/Zonos-v0.1-hybrid only when the backbone supports hybrid. The README says uv sync --extra compile is needed to run the hybrid.
Gradio and sample.wav. The sentence under the Gradio heading says that command should produce sample.wav. The file that writes sample.wav is sample.py. The Gradio function returns audio to the widget.
Save the audio, then destroy
sample.py writes sample.wav in the working directory. The Gradio app returns audio to the widget and does not write that file. Copy the file, or download the widget audio, 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
What GPU requirement and which languages does the Zonos README state?
The README says 6GB+ VRAM, and that Hybrid additionally requires a 3000-series or newer Nvidia GPU. It says the model runs with a real-time factor of ~2x on an RTX 4090, which it explains as generating 2 seconds of audio per 1 second of compute time. It says Zonos-v0.1 supports English, Japanese, Chinese, French, and German. zonos/conditioning.py defines supported_language_codes and make_cond_dict asserts the language is in that list. The Gradio dropdown uses that list. This page does not treat the code list as a second support claim beyond the README sentence. The smallest vram_gb in gpu-prices.json (updated_at 2026-11-13T09:12:35.958Z) is 8, on RTX 2080, which is above the 6GB+ sentence. Catalog RTX 4090 is 24. Those are catalog numbers, not the real-time factor in the README. This page did not map the hybrid sentence onto catalog names, did not run Zonos, and does not mark a row as enough. Which listing you can start is on https://cloudgpu.app/deploy.
Which file writes sample.wav, and which weights does the sample load?
sample.py calls torchaudio.save with the filename sample.wav, the first waveform, and model.autoencoder.sampling_rate. The check command in the install section is uv run sample.py, and the comment offers python sample.py. The README sentence that this should produce a sample.wav file in the project root directory sits under the Gradio heading. gradio_interface.py returns audio to a Gradio audio widget and does not call torchaudio.save. The Docker section says python sample.py will generate a sample.wav in /Zonos. The usage sample calls Zonos.from_pretrained with Zyphra/Zonos-v0.1-transformer and comments Zyphra/Zonos-v0.1-hybrid. from_pretrained downloads config.json and model.safetensors. zonos/autoencoder.py loads descript/dac_44khz. The card for that id on 2026-11-13 had gated false and no license field. speaker_cloning.py downloads ResNet293_SimAM_ASP_base.pt and ResNet293_SimAM_ASP_base_LDA-128.pt from Zyphra/Zonos-v0.1-speaker-embedding. This page did not run those commands.
Which command starts the Gradio interface, and does the repository document ComfyUI?
The README prints uv run gradio_interface.py and comments python gradio_interface.py. gradio_interface.py calls demo.launch with server_name 0.0.0.0 and server_port 7860. share is true only when GRADIO_SHARE is true, 1, or t. The model dropdown lists Zyphra/Zonos-v0.1-transformer when the backbone supports transformer, and Zyphra/Zonos-v0.1-hybrid when it supports hybrid. This page did not start the app. The README does not document ComfyUI. The ComfyUI examples top-level directory list on 2026-11-13 had no directory named for this project. Examples HEAD was f9431bb000ce792094ff345446e22cac1ea6cef3.
Which license covers Zonos?
The repository LICENSE file is the Apache License, Version 2.0, January 2004, and the appendix copyright line is still the unfilled template Copyright [yyyy] [name of copyright owner]. The GitHub license field on 2026-11-13 was Apache-2.0. The cards for Zyphra/Zonos-v0.1-transformer, Zyphra/Zonos-v0.1-hybrid, and Zyphra/Zonos-v0.1-speaker-embedding had cardData.license apache-2.0, top-level license null, and gated false. Section 2 of that Apache file grants a no-charge, royalty-free copyright license. That wording is the upstream license, not a CloudGPU price and not a storage allowance. Read the file before you redistribute the program or the weights.
Sources (read 2026-11-13, Asia/Shanghai)
- Zonos README (6GB+ VRAM, hybrid 3000-series sentence, five languages, ~2x on an RTX 4090, espeak-ng, uv install,
uv run sample.py, Gradio commands, thesample.wavsentence under the Gradio heading, Docker clone andpython sample.py): https://github.com/Zyphra/Zonos/blob/main/README.md commit5739a31244fcddc015cfa308eb3246c0a4d9ca1e. Repository HEADbc40d98e1e1ab54fc65c483be127a90e3c7c0645, committed 2025-03-05T20:01:59Z sample.py(torchaudio.save("sample.wav", ...),Zyphra/Zonos-v0.1-transformer, commented hybrid id): commit0b697e0da568180ef62fd7cec2a3aae31833eb10pyproject.toml(torch>=2.5.1,compileextra): commit0b697e0da568180ef62fd7cec2a3aae31833eb10gradio_interface.py(server_name="0.0.0.0",server_port=7860,GRADIO_SHARE, model dropdown): commita09ff4fa50cfa66bf79986e19c191f85f5cb53e8zonos/model.py(from_pretraineddownloadsconfig.jsonandmodel.safetensors): commit467de6bd7704cd9b63af2082b4819c88b74deffezonos/conditioning.py(supported_language_codes, language assert): commitf82e2229316ce5d4a29bd08cf20b4ee037f1a220zonos/autoencoder.py(descript/dac_44khz, resample to 44100): commitc6f770411461556cf479b751c5096822ddbd1eddzonos/speaker_cloning.py(Zyphra/Zonos-v0.1-speaker-embeddingfilenames): commit0b697e0da568180ef62fd7cec2a3aae31833eb10zonos/utils.py(DEFAULT_DEVICE): commit049cf6667860745836d09316cac6b4e831dc4c0cLICENSE(Apache-2.0, unfilled copyright template): commit8a2168711a3f3eae44ce566ffcb3879bce183823. GitHub license field Apache-2.0- Model cards
Zyphra/Zonos-v0.1-transformer,Zyphra/Zonos-v0.1-hybrid, andZyphra/Zonos-v0.1-speaker-embedding(apache-2.0,gatedfalse), anddescript/dac_44khz(gatedfalse, no license field read on the card), read 2026-11-13 - ComfyUI examples top-level directories (no Zonos directory): https://github.com/comfyanonymous/ComfyUI_examples commit
f9431bb000ce792094ff345446e22cac1ea6cef3 - Public GPU memory: https://cloudgpu.app/gpu-prices.json (
updated_at2026-11-13T09:12:35.958Z) and https://cloudgpu.app/v1/public/gpu-catalog (generated_at2026-11-13T09:12:36.283Z).GET /v1/public/compute-capabilitiesreturned feature flags and no GPU list. The catalog had no Zonos 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).