Nodes/ComfyUI-Qwen3-TTS/Qwen3-TTS Role Bank 👥
ComfyUI Node

Qwen3-TTS Role Bank 👥

The tiny lookup table behind multi-role dialogue

By wanaigc·Created 7 months ago·Updated 7 months ago· 113
Qwen3-TTS Role Bank 👥
  • prev_role_bank
  • prompt_1
  • prompt_2
  • prompt_3
  • role_bank
role_name_1Role1
role_name_2Role2
role_name_3Role3

The dialogue engine needs to know which voice belongs to "角色A" and which to "角色B". That mapping is this node's entire job. Qwen3TTSRoleBank is a small lookup table: up to three named roles, each bound to a cloned-voice prompt, output as a single role_bank object that the Advanced Dialogue node consumes. It's the middle link in the pack's three-node smart-script chain (Script Processor → Role Bank → Advanced Dialogue), and it's about as simple as a node gets.

What it does

Each instance gives you three slots:

  • role_name_1 / role_name_2 / role_name_3 - the name the script uses for this character (defaults Role1, Role2, Role3).
  • prompt_1 / prompt_2 / prompt_3 - a QWEN3_PROMPT for that role, i.e. the output of a Voice Clone Prompt node (or a loaded prompt from the Prompt Manager).

Fill in the slots you need and the node merges them into one QWEN3_ROLE_BANK output. There's also an optional prev_role_bank input, and if you chain banks through it you can build up more than three roles - the new bank starts as a copy of the previous one and adds on top. That's the "无限角色" (unlimited roles) the changelog brags about: more characters, more banks, daisy-chained.

The one rule that matters

Role names are matched by exact string against the roles list from the Script Processor. 角色A must be spelled identically in both places. The dialogue engine is forgiving about a mismatch, which is the trap: if a role isn't found in the bank it silently falls back to the first voice it can find, and you'll hear two characters talking in the same voice wondering what went wrong. When a line comes out in the wrong voice, check spelling before anything else.

Where it sits

Qwen3TTSLoader ─> Qwen3TTSVoiceClonePrompt ─┬─> prompt_1 (角色A)
                                            └─> prompt_2 (角色B)
                                                      │
Qwen3TTSScriptProcessor ── texts/instructs/roles/pauses ──> Qwen3TTSAdvancedDialogue
        ▲                                                       ▲
        └────────────── role_bank ──────────────────────────────┘

You clone each character once (Voice Clone Prompt), name it here, and the dialogue engine replays those voices across every line the script hands it.

Gotchas

  • No prompts, no bank. Slots with a name but no connected prompt are simply skipped - an empty bank means the dialogue engine has nothing to generate with and will raise an error.
  • It's storage, not magic. The node does no cloning itself; if you want a role to sound different, you clone a different voice, not tweak a slider here.
  • Same pack-wide install as its neighbors: git clone https://github.com/wanaigc/ComfyUI-Qwen3-TTS, pip install -r requirements.txt, restart ComfyUI. It's a light node, but it lives in a heavy pack.
CategoryQwen3-TTS

Inputs (7)

NameTypeDefaultDescription
prev_role_bankoptQWEN3_ROLE_BANK
role_name_1optSTRINGRole1
prompt_1optQWEN3_PROMPT
role_name_2optSTRINGRole2
prompt_2optQWEN3_PROMPT
role_name_3optSTRINGRole3
prompt_3optQWEN3_PROMPT

Outputs (1)

NameTypeDescription
role_bankQWEN3_ROLE_BANK