ComfyUI Node

Audio Segmenter

Split Long Audio on Silence — No Models, No Downloads, No Drama

By ahkimkoo·Created 12 months ago·Updated 12 months ago· 5
Audio Segmenter
  • audio
  • audio_list
  • count
max_length_s10
silence_thresh_db-40

The workhorse of the ComfyUI Audio Segment Plugin. If you have a podcast, a voiceover, or an audiobook and you just want it chopped into bite-size clips, this is the node you reach for - no AI, no model downloads, and it's fast enough that you can re-run it while you're still deciding on settings. It's also the pack's original node, before the Whisper-based paragraph splitter came along and stole the spotlight.

How it works

The mechanism is classic audio tooling under the hood. It uses pydub's split_on_silence to cut the audio wherever there's a run of quiet, then it does a smart merge pass: short chunks that would fit together under your max length get glued back into one clip, and any single chunk that's still too long gets hard-cut at the maximum. The result is a list of clips that are each as close to your target length as the silence in the file allows, without clipping mid-word where it can be avoided.

The two knobs are the entire trick:

  • max_length_s - target maximum clip length in seconds (default 10, range 1–3600). Lower it and you get more, shorter clips; raise it and quiet passages merge back together.
  • silence_thresh_db - how quiet counts as "silence," in dB (default −40, range −100 to 0). More negative means only genuinely quiet moments trigger a split; −40 works well for clean voiceovers. If your audio is noisy, you'll want to nudge it up toward −30; if your audio is a single continuous clip with no gaps at all, that's this setting being too aggressive, not a bug.

Outputs are audio_list (a Python list of individual AUDIO objects, one per clip) and count (an INT with the number of clips). The list output is typed as * - a loose wildcard - so wire it into the pack's Select Audio From List to pull one clip, or Audio List to Batch to stack them back into a single batched tensor for a downstream ASR pass.

Installing the pack

ComfyUI Manager is the easy route - search "Audio Segment" (pack title ComfyUI Audio Segment Plugin) and install. Manual:

cd path/to/ComfyUI/custom_nodes/
git clone https://github.com/ahkimkoo/Comfyui-AudioSegment
cd Comfyui-AudioSegment
pip install -r requirements.txt

Restart ComfyUI and the nodes show up under Audio/Segmentation. The full requirements.txt is heavier than this node strictly needs - torch, transformers, accelerate, openai-whisper, pydub, opencc-python-reimplemented - because the pack shares one install across all five nodes. The paragraph node is the reason for the heavy stuff; this node alone would only need pydub. ComfyUI already ships torch, so pip usually treats that as satisfied, but keep an eye out for version churn, and note that pydub shells out to ffmpeg, so ffmpeg needs to be on your PATH for any audio work in this pack.

When to use it (and when not to)

Reach for this when you don't have a transcript and just want chapters or prep clips for a batch ASR pass. It's deterministic, runs on CPU, and you can tune it without paying a model-load cost. Don't reach for it when you need semantic boundaries - it can't know that a 15-second pause is a topic change, it just sees silence. That's the job of the pack's Audio Segment By Paragraph node, which aligns clips to a reference text with Whisper. This one is the cheap, fast, no-brainer option, and honestly for most podcast-splitting work it's the one you'll actually use.

One more thing worth knowing: this pack has essentially no community footprint yet - you won't find a flood of threads about it. That's fine. A single-purpose silence splitter is one of those nodes you install, use for a specific workflow, and quietly keep around because nothing else in stock ComfyUI does it this cleanly.

CategoryAudio/Segmentation

Inputs (3)

NameTypeDefaultDescription
audioAUDIO
max_length_sINT101–3600
silence_thresh_dbINT-40-100–0

Outputs (2)

NameTypeDescription
audio_list*
countINT