zhenzhen-qwen3-tts-lowprice
A flash-speech node for ComfyUI
- api_config
- audio
- audio_url
- task_id
- response
Voice is the one thing the local ecosystem still reliably hands to the cloud, and this node is the budget version of that move. Comfly_qwen3_tts_lowprice runs Alibaba's Qwen3 text-to-speech models through zhenzhen's domestic low-price shop (api.seedance.nz), turns your text into an actual AUDIO tensor inside ComfyUI, and bills you per character-ish instead of making you rent a GPU. If you're doing narration, character dialogue, or an audiobook read, it's a "good enough voice for pennies" option.
The "lowprice" in the name is the whole story: unlike the pack's FAL nodes, which take a per-node api_key, this one takes an api_config dictionary that comes from the pack's API Settings node (Comfly_seedance2_low_price_settings). That node carries the base URL and token for the domestic shop, which the README says runs about 75–80% of the overseas price. You can feed it one shared settings node and drive every low-price node in your workflow from the same key.
How it works
It's an async task: submit the request, poll the shop's task endpoint until it's done, download the audio, and hand it back as a real AUDIO output you can wire into a video's audio track or a save node. No model files, no VRAM, no local torch inference for the speech itself.
The inputs that matter
model-qwen3-tts-flash(default) orqwen3-tts-instruct-flash. The instruct variant is the one that honorsinstructions- the plain flash model ignores them.prompt- the text to speak.voice- a voice name,Cherryby default. There's a catalog of voices on the shop side; you type the name as a string.language_type- Chinese, English, Japanese, Korean, German, French, Russian, Portuguese and more. Pick it or the prosody will be off.instructions- only used by the instruct model: "speak slowly, sound like a news anchor," that sort of thing.optimize_instructions- default on; lets the model clean up your instruction before speaking.
The seed input is a ComfyUI cache-control seed only - it's deliberately not sent to the API, which doesn't expose one. Fixed reuses the cached result; randomize forces a new run. Don't go hunting for reproducible voice takes via seed; that's not what this is.
Outputs: audio (the tensor - wire it to video or a save node), audio_url, task_id (handy for looking the job up in the shop's async-task page if something goes wrong), and response for debugging.
Installing it
Same story as every zhenzhen node: ComfyUI Manager, search "Comfyui-zhenzhen", or
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-zhenzhen
then restart. No model downloads - the dependencies are plain HTTP/audio-stack stuff. You need a token from the domestic shop (https://api.seedance.nz) and a Comfly_seedance2_low_price_settings node wired into api_config.
Common issues
- Empty
audiowith no error - you usually haveskip_erroron, which swallows failures and returns a blank. Flip it off while debugging. - Wrong language prosody - the
language_typematters more than it looks like it should. - Audio doesn't appear on your video - check that you're feeding the
audiotensor into the right input; theaudio_urlalone won't sync anything.
It's not ElevenLabs-grade cloning and the README doesn't pretend it is - this is the "cheap, fast, good enough for a voiceover" lane, and for that it does the job. The audio-generation side of our KB makes the same call: cloud wins where reliability matters, and this node makes that call cheap.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | qwen3-tts-flash | 2 options: qwen3-tts-flash, qwen3-tts-instruct-flash |
| prompt | STRING | — | |
| voice | STRING | Cherry | — |
| language_type | COMBO | Chinese | 10 options: Chinese, English, Japanese, Korean, German, French, +4 |
| instructions | STRING | — | |
| optimize_instructions | BOOLEAN | true | — |
| api_configopt | ZHENZHEN_SEEDANCE2_CONFIG | — | |
| skip_erroropt | BOOLEAN | false | — |
| seedopt | INT | 00–18446744073709550000 | Execution seed for ComfyUI cache control. Fixed reuses the cached result; randomize/increment/decrement requests a new run. This compatibility seed is not sent to APIs that do not expose a native seed parameter. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| audio_url | STRING | — |
| task_id | STRING | — |
| response | STRING | — |