Nodes/ComfyTV/Audio Analyze
ComfyUI Node

Audio Analyze

Is your audio loud enough for YouTube? This stage tells you — and flags every silence too

By jtydhr88·Created 3 months ago·Updated about 15 hours ago· 725
Audio Analyze
  • audio
  • video
  • report
force_run_token0
project_id
parent_output_id0
modeloudness
silence_noise_db-60
silence_duration2.00

Audio is the last thing most ComfyUI people think about, and it shows - half the videos that come out of this ecosystem have levels that are a coin flip. Audio Analyze is the stage that puts a number on it. It measures your audio (or the audio track of a video) and hands you back a text report: loudness, RMS levels, stats, or a complete map of every silence in the clip. No audio is changed - this is pure measurement, the thing you run before you normalize, not instead of it.

You'll use it in two very common spots. First, at the end of a pipeline: run it on your final mix to check the loudness against real platform targets - the report literally compares your integrated LUFS and true peak against the specs for services like YouTube and Spotify and tells you if you're "over," "quiet," or "ok" for each. Second, during cleanup: run it in silence mode on a voiceover to get exact timestamps of every gap, which you can then use to trim or duck against.

How it works

The mode combo picks the analysis, and the source shows what each does under the hood (all FFmpeg filters via PyAV):

  • loudness - measures integrated loudness (LUFS), true peak, and loudness range, then scores it against platform compliance targets.
  • volume - mean and max volume, via FFmpeg's volumedetect.
  • stats - the full astats dump: RMS level, RMS peak, DC offset, peak levels per channel.
  • silence - silencedetect with your silence_noise_db threshold (default -60 dB) and silence_duration minimum (default 2s). Every gap gets a start/end/duration line in the report.

The output is report, typed COMFYTV_TEXT - it's a text payload you can read in the node or pass to something downstream that consumes text (like a prompt fragment or a display). The optional inputs are audio and video: give it either, and it measures the audio. The three internal inputs (force_run_token, project_id, parent_output_id) are frontend plumbing; ignore them.

Installing ComfyTV

cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV

Full backend restart, then ComfyTV → AudioFX; ComfyUI Manager finds "ComfyTV". Zero extra Python deps - the analysis runs through FFmpeg filters via the PyAV bindings ComfyUI already bundles. No models.

The install trap that bites everyone on macOS/Desktop/multi-install: the relative cd ComfyUI/custom_nodes can target the wrong instance and the clone "succeeds" into nowhere you can see. Read the running instance's path from its startup log, clone into that instance's custom_nodes by absolute path (quote paths with spaces/parentheses), verify ComfyTV/__init__.py is top-level, restart the backend.

Common issues

  • "loudness" report says everything is over/quiet. That's the point - it's telling you what a platform would say. Feed the result into the Audio Loudness stage to fix it.
  • Silence mode finds nothing. Your silence_noise_db is probably too strict (default -60 dB catches a lot, but room tone can be louder) or silence_duration too long. Lower the threshold.
  • Nothing on the video input. Analyze reads the audio track from a video input; if the clip has no audio track there's nothing to measure.

It's the "run the report before you ship" node. Twenty seconds of measurement beats a surprise "why is this quiet" on the other end.

CategoryComfyTV/AudioFX

Inputs (8)

NameTypeDefaultDescription
force_run_tokenINT00–2147483647Internal — bumped on Run to invalidate ComfyUI's input cache.
project_idSTRINGInternal — populated by the projectStore on the frontend.
parent_output_idINT00–2147483647Internal — lineage parent set by spawn handlers on the frontend.
modeCOMBOloudness4 options: loudness, volume, stats, silence
silence_noise_dbFLOAT-60-100–0
silence_durationFLOAT2.000.01–60
audiooptCOMFYTV_AUDIO
videooptCOMFYTV_VIDEO

Outputs (1)

NameTypeDescription
reportCOMFYTV_TEXT