Status: Tested locally. All four workflows run on my local RTX 3080 laptop. A first boot on a real RunPod pod is not verified yet; I’ll update this guide when it is.
Talking avatars, explainers and game dialogue all need a voiceover. Qwen3-TTS, from Alibaba’s Qwen team, is an open text-to-speech model with nine built-in voices, voice design from a written description, and voice cloning. I built a template that runs it in ComfyUI, mainly to make voiceovers for my avatar videos.
ComfyUI has no Qwen3-TTS nodes of its own, so the template includes a small node pack that drives Qwen’s official qwen-tts package. You get four workflows in the sidebar, each with working defaults, so the first run needs no input. Everything is on GitHub.
In short
- Open source: the models are released under Apache-2.0, which allows commercial use.
- 9 built-in voices that each speak 10 languages.
- Design a voice from a description, or clone one from a 3–20 second recording.
- Scripts of any length, split and rejoined automatically.
- Runs on any 8 GB+ GPU. About 13.6 GB of models; use a 40 GB volume.
The 9 built-in voices
| Voice | Native language | Character |
|---|---|---|
| Ryan | English | Dynamic male, strong rhythm |
| Aiden | English | Sunny American male, clear midrange |
| Vivian | Chinese | Bright, slightly edgy young female |
| Serena | Chinese | Warm, gentle young female |
| Uncle_Fu | Chinese | Seasoned male, low and mellow |
| Dylan | Chinese (Beijing) | Youthful Beijing male |
| Eric | Chinese (Sichuan) | Lively Chengdu male, slightly husky |
| Ono_Anna | Japanese | Playful female, light and nimble |
| Sohee | Korean | Warm female, rich emotion |
Every voice speaks all ten supported languages (English, Chinese, Japanese, Korean, German, French, Russian, Portuguese, Spanish and Italian), and sounds best in its native one. You can steer any of them with a style instruction.
The template ships a voice pool: a reference clip of every built-in voice with its exact transcript, 16 clips in all, in ComfyUI/input/voices/. Listen to them in JupyterLab to pick a voice before you render anything.
The four workflows
| Workflow | Model | What it does |
|---|---|---|
| 1. Built-in voice | CustomVoice | One of the nine voices reads your script, in the language and style you choose |
| 2. Voice design | VoiceDesign | Describe a voice (“a calm, warm narrator in her thirties”). It speaks a sample and saves it to the voice pool |
| 3. Voice clone | Base | Any voice in the pool reads your whole script, consistent from start to finish |
| 4. Add your voice | None | Adds your own recording and its transcript to the voice pool |
Workflows 2, 3 and 4 work together through the voice pool: design a voice or add your own recording, and it lands in the pool; then the clone workflow reads your full script in that voice. The finished voiceover is saved as both .wav and .mp3 in output/voiceover/, and plays right on the Save node.
Scripts of any length
A single Qwen3-TTS call is capped at 2,048 codec frames, about 2.5 minutes of speech, and long single calls drift in pace. So the template:
- Cuts the script into parts of at most 400 characters, always at a sentence or paragraph break.
- Renders every part with the same voice and the same seed.
- Joins them with a 0.25 second pause between sentences and 0.6 seconds after a paragraph (a blank line in your script).
A designed voice for a long script: voice design renders each part from the description, so the voice can shift slightly between parts. The fix, and the route Qwen recommends, is to design a short sample with workflow 2, then clone it for the whole script with workflow 3.
Your own voice: record 3–20 seconds of clean speech, type out exactly what you said, and add both with workflow 4. Only clone voices you have the right to use.
Hardware and cost
Each of the three 1.7B models needs about 4 GB of VRAM, and only one is loaded at a time, so any GPU with 8 GB or more works. Speech is generated one token at a time, so a faster GPU helps less here than it does for video.
- On my RTX 3080 laptop, the voice pool rendered at about 5 seconds per second of speech. A desktop or datacenter GPU is several times faster.
- On RunPod, an RTX A5000 at $0.27/hr is plenty. There’s no reason to pay for an RTX 5090 for this one.
- Storage: the three models are about 13.6 GB. A 40 GB network volume is about $2.80 a month on standard storage.
Running it on RunPod
- Create a 40 GB network volume. The template refuses to run without one, so your models and voices survive between sessions.
- Deploy the template on an 8 GB+ GPU with the volume attached.
- Watch the logs on first boot. You’re waiting for
Voice pool: 16 clips, the model downloads, and thenSetup complete! - Open ComfyUI (port 8188) and pick a workflow from the Workflows sidebar.
- Use JupyterLab (port 8888) to listen to the voice pool and download your voiceovers.
Later boots skip everything that’s already installed. If network volumes and pods are new to you, my introduction to RunPod walks through the basics.
Security note: JupyterLab runs without a login by default, so anyone with the pod’s URL gets a shell. For client work, set JUPYTER_NO_AUTH=0 and a JUPYTER_PASSWORD when you deploy.
For template builders
If you’re building your own RunPod template rather than using this one, a few details from the repository that took the most time:
- The base image is
runpod/comfyui:1.4.0-comfyuiv0.35.0-cuda12.8, with a 5 GB container disk and the network volume mounted at/workspace. qwen-tts0.1.1 fails to import on transformers 5.x, which the image ships. The template pins transformers 4.57.3 in ComfyUI’s environment and checks it on every boot.- The start command checks DNS for GitHub and Hugging Face, falls back to public resolvers if needed, and retries the clone up to ten times.
New to RunPod? My referral link gives new accounts that sign up with Google $5–$500 in credit after their first $10, and I get a small commission.
Credits: Qwen3-TTS by the Alibaba Qwen team, Apache-2.0. Template, nodes and workflows by me, free on GitHub.
FAQ
Is Qwen3-TTS free for commercial use?
The models are released under the Apache-2.0 licence, which allows commercial use. Cloning is a separate question: only clone voices you have the right to use.
Which languages does Qwen3-TTS support?
English, Chinese, Japanese, Korean, German, French, Russian, Portuguese, Spanish and Italian. Every built-in voice speaks all ten.
How long can a voiceover be?
Any length. The template splits the script at sentence and paragraph breaks, renders each part with the same voice and seed, and joins them with natural pauses.
What GPU do I need?
Any GPU with 8 GB of VRAM or more. On RunPod, an RTX A5000 is plenty.
Can I run it locally instead of on RunPod?
Yes. The ComfyUI nodes and workflows are in the GitHub repository, and they run on a local 8 GB laptop GPU.
