ComfyUI Node

TS Audio Preview

Audition audio in the graph before you commit to a file

By AlexYez·Created 2 years ago·Updated about 20 hours ago· 12
TS Audio Preview
  • audio
    crop_start_seconds0.00
    crop_end_seconds-1.00
    preview_state_json

    The most annoying thing about audio in ComfyUI isn't generating it - it's hearing it before you save it. TS Audio Preview fixes that specific pain: you feed it an AUDIO input from anything upstream (a TTS node, a stem split, a processed voiceover) and it gives you the same waveform UI as TS Audio Loader, with playback, looping, and crop ranges, all without writing a file to disk.

    It's the output node for the audio half of the pack. Run a TS Silero TTS or a music-stems split, wire the result into this, and audition it in place. It's the audio equivalent of the "preview before you spend the encode" habit - cheap to run, saves you from generating a file and discovering the pacing is wrong.

    How it works

    It's a preview node in the truest sense: no model, no processing. It takes the AUDIO tensor in, decodes it for the waveform display, and plays it back with the standard controls. Because the UI state persists, your crop and playback position survive across runs and reloads - you can scrub, loop a section, and come back to the same spot later. The preview_state_json input is that persisted UI state, managed by the node itself rather than something you need to touch.

    The crop controls here (crop_start_seconds / crop_end_seconds) are for auditioning - they let you focus your listening on a segment. They don't rewrite the audio that flows to anything downstream, because there is nothing downstream; this node sits at the end of the line.

    What you need to know

    • audio - required input, a standard ComfyUI AUDIO object. Wire it from any node that emits one.
    • crop_start_seconds / crop_end_seconds - where in the clip you're listening. -1 = full length.
    • No outputs. This is an output node, so it runs when the graph runs and shows its result in the UI.

    Installing it

    It ships with comfyui-timesaver. Easiest: ComfyUI Manager → search "Timesaver" → install → restart. Manual:

    cd ComfyUI/custom_nodes
    git clone https://github.com/AlexYez/comfyui-timesaver
    cd comfyui-timesaver
    python -m pip install -r requirements.txt
    

    Restart ComfyUI. Like the other audio nodes, it depends on the static ffmpeg binary from imageio-ffmpeg, which comes with the pack's requirements - so if playback ever fails with an ffmpeg error, that dependency is the first thing to check:

    python -m pip install --upgrade imageio-ffmpeg
    

    Use the same interpreter ComfyUI runs with (on the Windows portable build that's python_embeded\python.exe).

    One honest caveat

    Because the pack's audio nodes (including Whisper and the TTS path) are built for reliability over speed - and on Mac the whisper engine deliberately runs on CPU - the first time you audition a freshly generated track can feel slow. That's the decode plus model inference, not this node being broken. If you want the quickest possible sanity check of a clip that already exists, this node is exactly the right tool; just don't mistake upstream inference time for a hang.

    CategoryTS/Audio

    Inputs (4)

    NameTypeDefaultDescription
    audioAUDIOAudio input to preview and audition.
    crop_start_secondsFLOAT0.00Crop start time in seconds.
    crop_end_secondsFLOAT-1.00Crop end time in seconds. Use -1 for full length.
    preview_state_jsonSTRINGPersistent preview UI state.

    Outputs (0)

    No outputs