ComfyUI Node

千问3TTS

A cloud voice for your graph that never touches your VRAM

By mailzwj·Created about a year ago·Updated 12 months ago· 5
千问3TTS
    • 音频
    • 采样率
    model_idqwen3-tts-flash
    content你好,千问3!
    voice四川-晴儿, Sunny
    languageChinese

    You want a narrator for your video and you do not want to babysit a model download. That's the whole pitch of Qwen3TTS (千问3TTS in the menu): it turns a chunk of text into an AUDIO clip using Alibaba's qwen3-tts-flash, but nothing runs on your machine. No weights, no VRAM, no GGUF hunting. The node is a thin wrapper over the DashScope (Bailian) API, so your GPU stays dark and the speech is generated on Alibaba's side.

    Get this straight first: this is an API node, not the open-weights model. The community's local Qwen3-TTS talk - the 1.7B/0.6B models, voice cloning, running on 8GB of RAM - refers to a different pack that happens to share the exact name "ComfyUI-Qwen-TTS". That one's by flybirdxx and downloads the real weights. This one, by mailzwj, is the cloud wrapper: it needs an Alibaba Bailian API key and a working internet connection, and it bills per character. Both come from the same Alibaba Qwen umbrella that brought you Qwen-Image and Wan, but they are not the same thing, and beginners install the wrong one all the time. Check the GitHub owner before you clone.

    How it works

    The source is about 60 lines. On run, it calls dashscope.audio.qwen_tts.SpeechSynthesizer.call(...) with your text, voice, and language, waits for the API to hand back a URL to a generated audio file, downloads that file, decodes it with torchaudio, and wraps it in the standard ComfyUI {"waveform", "sample_rate"} audio dict. Which is exactly why it's so cheap on your system: the real work happens on Alibaba's side, where qwen3-tts-flash does its thing.

    The inputs that matter

    Only three things on this node are worth touching:

    • content - the text to speak, a multiline box like a CLIP text encoder. This is what you'll wire from a prompt node or just type in.
    • voice - 17 choices, and this is the fun part. Qwen3-TTS's voice list is Chinese-first: alongside generic ones like "Cherry" and "Ethan" you get regional dialect voices - 四川-晴儿/Sunny, 北京-晓东/Dylan, 粤语-阿强/Rocky, 闽南-阿杰/Roy. The node picks the English name out of the "中文名, EnglishName" pair automatically.
    • language - Chinese, English, German, Italian, Portuguese, Spanish, Japanese, Korean, French, Russian. Keep it matched to your content; the API uses it to drive prosody.

    model_id is a dropdown with exactly one option (qwen3-tts-flash) - set it and forget it.

    Outputs and where they go

    Two outputs, both useful:

    • 音频 (AUDIO) - the waveform dict. Wire it into ComfyUI's save-audio or an audio preview node and you're done.
    • 采样率 (INT) - the sample rate as a number, which you need if the audio feeds anything downstream that has to know the rate.

    Installing it

    From the README, the no-frills way:

    cd ComfyUI/custom_nodes
    git clone https://github.com/mailzwj/ComfyUI-Qwen-TTS.git
    cd ComfyUI-Qwen-TTS
    pip install -r requirements.txt
    

    That installs dashscope and requests - the pack's real dependencies. ComfyUI Manager will also find it if you search the pack title, though the README's clone is the documented path. Restart ComfyUI and add the node via right-click → New Node → Qwen → 千问3TTS.

    Configuring the key

    This is the step everyone forgets and the one that makes the node invisible. Open ComfyUI-Qwen-TTS/config.json and replace YOUR_BAILIAN_API_KEY with a key from the Bailian console:

    { "bailian_api_key": "sk-xxxxxxxx", "default_model": "qwen-tts-latest" }
    

    If you skip it, the pack raises ValueError on import and the node never appears. Note the nice security property: the key lives in config.json, not in the workflow, so sharing a workflow file doesn't leak your credential. Keep that file out of git and out of screenshots anyway.

    Where people get burned

    • No network. The README says it in Chinese up front: this node needs a working internet connection. If it fails with a network-ish error, that's the first thing to check - there is no offline mode.
    • Wrong pack. See the top of this article. If you cloned for open-weights cloning and got an API key prompt, you grabbed the cloud wrapper, not flybirdxx's local node.
    • Missing key / wrong key. A typo'd key fails at call time with an auth error; a missing one fails at startup. Both are the same fix: re-check config.json and restart.

    Any node that carries a credential and phones home by design is exactly the shape of what's been weaponized in this ecosystem once already. This one is a small, readable file - fine. But the category earns a skeptical glance before you run it.

    CategoryQwen

    Inputs (4)

    NameTypeDefaultDescription
    model_idCOMBOqwen3-tts-flash1 options: qwen3-tts-flash
    contentSTRING你好,千问3!
    voiceCOMBO四川-晴儿, Sunny17 options: 芊悦, Cherry, 晨煦, Ethan, 不吃鱼, Nofish, 詹妮弗, Jennifer, 甜茶, Ryan, 卡捷琳娜, Katerina, +11
    languageCOMBOChinese10 options: Chinese, English, German, Italian, Portuguese, Spanish, +4

    Outputs (2)

    NameTypeDescription
    音频AUDIO
    采样率INT