ComfyUI Node

Play Sound

Make ComfyUI tell you when the queue is actually done

By phazei·Created 5 months ago·Updated 22 days ago· 33
Play Sound
  • any
  • passthrough
modealways
volume0.5
filenotify.mp3

The classic noob move in ComfyUI: kick off a 40-minute upscale batch, tab away to doomscroll, and come back to find it finished nine minutes ago. Play Sound is the five-minute fix - a node you drop at the end of the graph that plays an audio file the moment execution reaches it. It's a tiny thing, but it's the difference between babysitting a queue and trusting it.

This is the Enhancement Utils version from phazei/ComfyUI-Enhancement-Utils, and its lineage matters for one reason: it's a rewritten, V3-API port of the same node from pythongosssss's famous ComfyUI-Custom-Scripts. That pack is aging and tied to the old node API; this one is built on the modern comfy_api and works inside subgraphs. If you're already on Enhancement Utils, you get Play Sound without installing a second legacy pack.

How it works

The server side does almost nothing - it passes your input through and returns a ui signal. The actual audio is played in your browser via the HTML5 Audio API, handled by the pack's client-side JS. That split is worth understanding, because it explains the two things that can silently go wrong (below). The node also declares it should always re-execute, so the sound fires on every run instead of being skipped by ComfyUI's caching.

Inputs and the one output

  • any - connect any output from the graph here to trigger the sound. This is your trigger wire and the data passes through unchanged.
  • mode - always plays every time the node executes; on empty queue waits until the whole queue has drained, so you only get paged when everything is done, not after every intermediate step. For long batch runs, this is the mode you want.
  • volume - 0.0 to 1.0, default 0.5. Told you it was simple.
  • file - the sound file, default notify.mp3 (bundled with the pack), any other file in assets/, or a full URL to any audio file.
  • passthrough - the only output: your any input, unchanged and type-matched, so you can chain downstream nodes off it.

Installing it

Same pack install as everything else - ComfyUI Manager, search "Enhancement Utils", or:

cd ComfyUI/custom_nodes
git clone https://github.com/phazei/ComfyUI-Enhancement-Utils.git
cd ComfyUI-Enhancement-Utils
pip install -r requirements.txt

Restart, find it under utils.

Where people get burned

  • Browser autoplay policies. Since playback is client-side, Chrome and friends may block audio until you've interacted with the ComfyUI tab at least once. If you hear nothing but the workflow ran fine, click the canvas once and it usually frees up.
  • No browser, no sound. Run ComfyUI headless or via API and there's no tab to play audio in - the node will still execute and pass data, it just can't make a sound. That's inherent to the design, not a bug.
  • on empty queue can feel like it's "not working." If you test it mid-queue, nothing plays by design. Run it as the last step of a finished queue and it fires.
Categoryutils

Inputs (4)

NameTypeDefaultDescription
anyCOMFY_MATCHTYPE_V3Connect any output here to trigger the sound and pass the data through.
modeCOMBOalways'always' plays every execution. 'on empty queue' only plays when the queue is empty.
volumeFLOAT0.50–1Playback volume (0.0 = silent, 1.0 = full volume).
fileSTRINGnotify.mp3Sound file name (from assets/) or a full URL.

Outputs (1)

NameTypeDescription
passthroughCOMFY_MATCHTYPE_V3Passes the 'any' input through unchanged.