Nodes/ComfyUI-Spectrum-MiniMax-H3/Spectrum H3 Objective Quality Compare (Staged One-Shot / Full Media)
ComfyUI Node

Spectrum H3 Objective Quality Compare (Staged One-Shot / Full Media)

Same verdict, cleaner wiring — the staged H3 quality compare

By xmarre·Created 22 days ago·Updated about 23 hours ago· 566
Spectrum H3 Objective Quality Compare (Staged One-Shot / Full Media)
  • reference_media
  • legacy_media
  • candidate_media
  • summary
  • report_json_path
  • report_markdown_path
  • aggregate_json_path
  • aggregate_markdown_path
fps24.00
benchmark_idh3-objective-seed-1
seed0
provenance_json{"compatibility":{"model":"MiniMax-H3","model_weights":"same-workflow","precision":"same-workflow","sampler":"er_sde","scheduler":"same-workflow","steps":20,"conditioning":"same-workflow","video_vae":"same-workflow","audio_decoder":"same-workflow","generation_settings":{"provenance_status":"user-unverified-same-workflow"}},"R":{"spectrum":"bypassed","role":"native_full_compute_reference"},"A":{"spectrum":"enabled","generic_correction_mode":"legacy","generic_correction_attenuation":"mode_default","generic_correction_limiter":"rational","generic_correction_limit":0.25},"B":{"spectrum":"enabled","generic_correction_mode":"coordinate_rls","generic_correction_attenuation":"no_attenuation","generic_correction_limiter":"hard_clip","generic_correction_limit":0.4}}
frame_chunk_size4

This node exists to make the one-shot quality compare tidier on the wire. Where Spectrum H3 Objective Quality Compare takes three raw IMAGE batches, this one takes three SPECTRUM_H3_OBJECTIVE_MEDIA objects - which is the exact type that the pack's Spectrum H3 Objective Media Stage node produces. The verdict machinery underneath is identical; only the plumbing differs.

Why the staging step exists

Media Stage is the pack's helper for "move one decoded result to CPU." You drop one Media Stage node per branch, feed it that branch's IMAGE (and optionally AUDIO), and it hands back a staged media object that keeps the video and audio together. So the layout becomes:

R branch IMAGE  -> Spectrum H3 Objective Media Stage -> reference_media  ---+
A branch IMAGE  -> Spectrum H3 Objective Media Stage -> legacy_media    ---+--> this node
B branch IMAGE  -> Spectrum H3 Objective Media Stage -> candidate_media ---+      |
                                                                                v
                                                                          summary + report paths

Three Stage nodes, three SPECTRUM_H3_OBJECTIVE_MEDIA outputs, one compare node. If you're building a workflow where the three branches are physically separate anyway, this keeps each branch self-contained instead of running three IMAGE cables (and three optional AUDIO cables) to one compare node.

The honest caveat is in the node description: it's a one-shot, CPU-staged comparison that retains full decoded media, and the pack explicitly says to use the bounded sequential capture for ordinary testing. This is the convenience path for when you already have all three clips in one execution and just want the verdict.

Inputs and outputs

Required inputs are reference_media, legacy_media, and candidate_media - all SPECTRUM_H3_OBJECTIVE_MEDIA - plus the same fps, benchmark_id, seed, provenance_json, and frame_chunk_size widgets as the direct compare. No audio inputs here: audio comes along inside each staged media object, so if a branch staged audio, it gets compared.

Outputs are the identical five: summary (the verdict text), then report_json_path, report_markdown_path, aggregate_json_path, and aggregate_markdown_path. Same metric panel as the direct version - MS-SSIM/PSNR/temporal/detail for video, MR-STFT/normalized-correlation/SI-SDR for audio - and the same verdict rules: a role wins only if a primary metric improves materially and nothing regresses past its guardrail. Reports land under ComfyUI's system user cache, grouped by group_id.

Gotchas

  • This is OUTPUT_NODE=true and the full-resolution metric profile, so treat it as the heavyweight one-shot path - not the one to run a dozen times on an 8 GB card.
  • The compare node calls through to SpectrumH3ObjectiveQualityCompare internally; if a staged object is missing its audio or video, the comparison just runs on what's there.
  • Same trust caveat as the direct node: R/A/B must be identical except for Spectrum settings, and provenance_json is how you record that you did it right. Fill it in before you cite the aggregate.

Reach for this when you've built a three-branch workflow and want the wiring to stay readable. Reach for the sequential capture when you're actually benchmarking.

Categorysampling/spectrum/research

Inputs (8)

NameTypeDefaultDescription
reference_mediaSPECTRUM_H3_OBJECTIVE_MEDIA
legacy_mediaSPECTRUM_H3_OBJECTIVE_MEDIA
candidate_mediaSPECTRUM_H3_OBJECTIVE_MEDIA
fpsFLOAT24.000.01–240
benchmark_idSTRINGh3-objective-seed-1Unique ID for one same-input R/A/B triad.
seedINT00–18446744073709550000
provenance_jsonSTRING{"compatibility":{"model":"MiniMax-H3","model_weights":"same-workflow","precision":"same-workflow","sampler":"er_sde","scheduler":"same-workflow","steps":20,"conditioning":"same-workflow","video_vae":"same-workflow","audio_decoder":"same-workflow","generation_settings":{"provenance_status":"user-unverified-same-workflow"}},"R":{"spectrum":"bypassed","role":"native_full_compute_reference"},"A":{"spectrum":"enabled","generic_correction_mode":"legacy","generic_correction_attenuation":"mode_default","generic_correction_limiter":"rational","generic_correction_limit":0.25},"B":{"spectrum":"enabled","generic_correction_mode":"coordinate_rls","generic_correction_attenuation":"no_attenuation","generic_correction_limiter":"hard_clip","generic_correction_limit":0.4}}R/A/B generation provenance plus compatibility metadata. The default is valid but marked user-unverified; fill exact values before using cross-seed aggregate evidence.
frame_chunk_sizeINT41–32

Outputs (5)

NameTypeDescription
summarySTRING
report_json_pathSTRING
report_markdown_pathSTRING
aggregate_json_pathSTRING
aggregate_markdown_pathSTRING