Audio Split to List
Split one long audio file into timed segments for piece-by-piece rendering
- waveform
- cycle
- audio_list
If you render talking-head video, you know the memory wall: a 10-minute narration won't fit in one video pass, so you cut it into chunks, render each chunk, and splice. AudioListGenerator (shown as "Audio Split to List") automates the cutting. Feed it one audio file, tell it how long each chunk should be, and it returns a list of segments perfectly sized for your video node - plus the count, so your loop knows how many passes to make. The author built it explicitly for "digital human" (數字人) long-form video, and it shows in the defaults.
How it works
The core math is simple and worth understanding: videofps is your video's frame rate, and samplefps is how many video frames each segment should span. Segment length in seconds is just samplefps / videofps. The defaults - 23.976 fps and 81 frames - give roughly 3.4-second segments, which the README cites as the "every three seconds" example. The node cuts the audio at those boundaries and returns each chunk as its own AUDIO object.
Two settings make it actually usable in practice:
pad_last_segment(default on) - the final chunk is almost always shorter than the rest. With this on, the node pads it with silence up to the full segment length, so your last rendered clip doesn't come out shorter than the others and throw off the splice.crossfade_duration+crossfade_type- with a tiny overlap fade at each cut, the segments crossfade when you rejoin them, which hides the seam. Default is a 0.1s cosine fade;linearandequal_powerare the alternatives. The code even clamps the fade so it never eats more than half a segment.
Inputs and output
waveform- theAUDIOinput (note the unusual name).videofps,samplefps- the two timing knobs above.pad_last_segment,crossfade_duration,crossfade_type- the segment-quality knobs.
Outputs: cycle (INT) - how many segments were produced, i.e. how many render passes you need - and audio_list (AUDIO list), where each item feeds one render pass. The list indexes line up, so a loop over cycle can pull segment i and its matching frames cleanly.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/dseditor/ComfyUI-ListHelper
Restart ComfyUI; find it under ListHelper/Audio. It uses torchaudio for the fade curves, which ships with ComfyUI. ComfyUI Manager: search "ComfyUI-ListHelper".
The honest take
This is the pack's most distinctive node and the one most likely to be worth the install on its own if you do any audio-synced video. The segment math is deterministic, so cycle and audio_list always agree, and the crossfade option is a nice touch most splitters skip. The one thing to keep in mind: it slices, it doesn't analyze - silence at the start of a chunk stays silence, and there's no voice-activity detection. If your source has long quiet gaps, the first few segments may be mostly dead air. That's a limitation, not a bug; trim the source first and the node does its job.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| waveform | AUDIO | — | |
| videofps | FLOAT | 23.976 | — |
| samplefps | INT | 81 | — |
| pad_last_segment | BOOLEAN | true | — |
| crossfade_durationopt | FLOAT | 0.100–2 | — |
| crossfade_typeopt | COMBO | cosine | 3 options: linear, cosine, equal_power |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| cycle | INT | — |
| audio_list | AUDIO | — |