Qwen3-TTS Role Bank 👥
The tiny lookup table behind multi-role dialogue
- prev_role_bank
- prompt_1
- prompt_2
- prompt_3
- role_bank
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 (defaultsRole1,Role2,Role3).prompt_1/prompt_2/prompt_3- aQWEN3_PROMPTfor 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.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| prev_role_bankopt | QWEN3_ROLE_BANK | — | |
| role_name_1opt | STRING | Role1 | — |
| prompt_1opt | QWEN3_PROMPT | — | |
| role_name_2opt | STRING | Role2 | — |
| prompt_2opt | QWEN3_PROMPT | — | |
| role_name_3opt | STRING | Role3 | — |
| prompt_3opt | QWEN3_PROMPT | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| role_bank | QWEN3_ROLE_BANK | — |