FireRedAudio 单句创意候选池 · T8star-Aix
When QA says the line is 'fine' but your ears say no
- model
- audio_batch
- script_plan
- voice_bank
- settings
- 匿名候选 AudioBatch
- 原 line ID
- 候选 Manifest 路径
- Seed 与候选证据
QA can tell you a line is wrong; it can't tell you a line is flat. When a take passes every automated check but you still don't like the performance, your options used to be "live with it" or "re-roll the whole line and pray." This node is the "try it a few different ways on purpose" option: it generates 2–7 takes of one specified line, all different seeds, anonymizes them so you can't bias yourself, and hands them to a blind listening board. Nothing gets overwritten until you explicitly say so.
What it does
You give it a model, the production audio_batch, the script_plan, the voice_bank, and exactly one target_line_id. It generates candidate_count new takes with seeds stepping from seed_start by seed_step (defaults: 3 candidates, starting 1001, stepping 97). With include_original on (default), it also copies your original take into the pool anonymously - so you're forced to judge the existing take on its merits, not out of inertia. The candidate files get random anonymous filenames; seeds are recorded only in the audit manifest.
Outputs are the anonymous candidate batch, the original line ID (so you know which line you're exploring), the candidate manifest path, and a report with seeds and per-candidate evidence.
The two things that keep it honest
First, minimum_acoustic_difference (default 0.005). Before candidates enter the pool, the node computes pairwise differences in duration, energy envelope, and spectrum. A candidate that's acoustically near-duplicate of another is pre-filtered. This is a duplicate detector, not a taste meter - the README is explicit that these proxy metrics can't pretend to be a human ear on performance quality. It exists so you don't blind-listen to five versions of the same take.
Second, it does not auto-cover anything. The node's own description says it plainly: connect this to the multi-Take review board, then use the candidate-apply node to explicitly backfill. The pool is a generator; TakeReviewBoard is the judge; CandidateApply is the executioner. Skipping to the end and just copying a candidate file over your production WAV is how you lose the audit trail this whole chain exists to preserve.
If you want the quality angle rather than the creative one - e.g. QA flagged the line - use BatchRetry instead. Same family of ideas, opposite job: repair keeps text/voice/goal fixed and just clears the gates; this node is explicitly for exploring performance. The pack keeps them separate on purpose.
Install
Part of the comfyui-fireredaudio-T8 pack:
cd ComfyUI\custom_nodes
git clone https://github.com/T8mars/comfyui-fireredaudio-T8.git
cd comfyui-fireredaudio-T8
python scripts\setup_runtime.py
Needs the full model (--profile full) since it runs TTS generation; models live in ComfyUI/models/TTS/FireRedAudio/.
Gotchas
run_asr_qa (default off) transcribes each candidate so you can verify the words - turn it on and each candidate run gets noticeably slower, which is why it's off by default. And remember candidate_count + include_original is how many you'll be blind-listening to; 3 new + 1 original is the sweet spot for a single line. More than that and your "blind" ears start just picking the loudest. Generate, listen, adopt, move on - that loop is the whole workflow.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| model | T8_FIREREDAUDIO_MODEL | — | |
| audio_batch | T8_FIREREDAUDIO_AUDIO_BATCH | — | |
| script_plan | T8_FIREREDAUDIO_SCRIPT_PLAN | — | |
| voice_bank | T8_FIREREDAUDIO_VOICE_BANK | — | |
| target_line_id | STRING | — | |
| candidate_count | INT | 32–7 | — |
| seed_start | INT | 10010–4294267295 | — |
| seed_step | INT | 971–100000 | — |
| include_original | BOOLEAN | true | — |
| run_asr_qa | BOOLEAN | false | — |
| project_name | STRING | creative-line-candidates | — |
| subfolder | STRING | fireredaudio/candidates | — |
| minimum_acoustic_difference | FLOAT | 0.0050–1 | — |
| settingsopt | T8_FIREREDAUDIO_SETTINGS | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| 匿名候选 AudioBatch | T8_FIREREDAUDIO_AUDIO_BATCH | — |
| 原 line ID | STRING | — |
| 候选 Manifest 路径 | STRING | — |
| Seed 与候选证据 | STRING | — |