Nodes/FireRedAudio · T8star-Aix/FireRedAudio 长录音参考候选 · T8star-Aix
ComfyUI Node

FireRedAudio 长录音参考候选 · T8star-Aix

Mine the good 8 seconds out of an hour of audio

By T8mars·Created 19 days ago·Updated 15 days ago· 21
FireRedAudio 长录音参考候选 · T8star-Aix
  • source_audio
  • model
  • 信号/ASR 推荐候选
  • 全部候选
  • 推荐 line ID
  • 候选 Manifest 路径
  • 排序报告
project_namereference-search
subfolderfireredaudio/reference-candidates
min_seconds3.0
preferred_seconds8.0
max_seconds15.0
padding_seconds0.20
max_candidates8
run_asr_checkfalse
languagezh

Voice cloning wants 3–15 clean seconds, but the clip with that person's best voice is usually buried somewhere inside a long recording - a podcast episode, a narration session, a voice note. ReferenceCandidates does the mining: it scans a long audio file, extracts candidate segments in the 3–15 second range, ranks them by clipping, silence, energy contrast, voice activity and duration, and hands you the survivors as a batch plus a recommendation. It's the difference between "let me scrub through an hour to find one usable sentence" and "here are eight candidates, pick one."

How it works

The node writes your source to WAV, then runs the worker's candidate discovery: it finds speech-active stretches, slices them into segments (with a little padding_seconds of voice at each edge), and scores each one. The signal score weighs things you can't hear at a glance - clipping ratio, how much of the segment is dead silence, how much the energy stands out from the background - plus a duration preference around preferred_seconds. Nothing is destructively modified: the source stays byte-identical, and the README is explicit that the ranking is a signal-quality ordering, not a subjective "this sounds nicest" judgment.

There's an optional second pass: run_asr_check transcribes each candidate and re-ranks with an intelligibility proxy (non-empty text, speech rate, repetition) blended 80/20 with the signal score. Read the fine print carefully - the manifest marks it asr_metric_is_proxy_not_accuracy. It tells you which clips are most likely understandable speech; it is not WER/CER against a ground-truth transcript, and it can't tell you the voice is on-model. That's why the flow always ends at human ears.

The inputs that matter

  • source_audio - the long recording. It must validate: the node checks the source SHA-256 stays consistent, and it preserves the source's sample rate and channels.
  • min_seconds / preferred_seconds / max_seconds - the candidate window. Defaults 3/8/15, and the validation enforces 1 ≤ min ≤ preferred ≤ max ≤ 30.
  • max_candidates - default 8 (up to 20). More candidates means more listening on the review board.
  • run_asr_check + language - turn this on and you must connect model (optional otherwise). ASR costs a worker round-trip per candidate.

Outputs: 信号/ASR 推荐候选 (the top pick as AUDIO), 全部候选 (as an AudioBatch), 推荐 line ID, 候选 Manifest 路径, and 排序报告. The results area also gets native players for every candidate, so you can audition without any extra preview node.

Where it fits

The pack's 23_long_reference_screening example is the intended flow: long recording → this node → human audition on the TakeReviewBoard → 参考音频 ASR 逐字稿 to verify the text → VoiceProfile. The recommendation is a starting point, not a verdict. Feed the winning candidate into PrepareReference for the clean 24 kHz copy, then clone from that.

Installing

Pack-wide: ComfyUI Manager search comfyui-fireredaudio-T8, or clone + python scripts\setup_runtime.py, then download models if you want the ASR pass. One trap: don't set min_seconds/max_seconds at their validation edges without thinking - a 1-second candidate is almost always too short for a good clone, and 30 seconds wastes context. The 3/8/15 defaults are sane for a reason.

CategoryT8star-Aix/Audio/FireRedAudio

Inputs (11)

NameTypeDefaultDescription
source_audioAUDIO
project_nameSTRINGreference-search
subfolderSTRINGfireredaudio/reference-candidates
min_secondsFLOAT3.01–30
preferred_secondsFLOAT8.01–30
max_secondsFLOAT15.01–30
padding_secondsFLOAT0.200–2
max_candidatesINT81–20
run_asr_checkBOOLEANfalse
languageCOMBOzh2 options: zh, en
modeloptT8_FIREREDAUDIO_MODEL

Outputs (5)

NameTypeDescription
信号/ASR 推荐候选AUDIO
全部候选T8_FIREREDAUDIO_AUDIO_BATCH
推荐 line IDSTRING
候选 Manifest 路径STRING
排序报告STRING