Audio Notify Text Trigger
The most practical 'tell me when' node in the pack — if you have a wire to spare
Audio Notify Text Trigger is the trigger node from ComfyUI-Audio-Notifier that takes a string, plays a sound when that string is ready, and forwards nothing. On paper that sounds like the least useful member of the family - who cares about text chimes? - but it's actually the one people reach for, because text is usually produced last in a pipeline.
Think about where strings live in a real workflow: the output of a prompt/dynamic-text node, a filename or caption that a save-with-metadata chain produces, a "show text" value at the very end. Text is cheap to compute, so it tends to sit at the tail. Wire this node to a string that only exists after everything else has run, and you've built a decent "the workflow is basically done" bell out of a node that technically only means "this string is ready."
The trade-off: it's a trigger, meaning input only, no output (RETURN_TYPES is empty, and it's flagged as an output node so ComfyUI treats it as an endpoint). If you need the text to keep flowing into a display or save node, use Audio Notify Text (the passthrough version) instead. This one is purely for the noise.
How it works
The text input is a STRING with forceInput set, which means you can't type a literal into it - it has to come from a wire. That's a feature, not a bug: the chime only fires when an actual upstream node has produced a string, so you can't accidentally trigger it early with a hardcoded value. When the string arrives, the node runs its shared playback path: resolve a sound file (either sound_path or a file in the pack's sounds/ folder, else the system beep fallback) and play it, non-blocking in a background thread by default.
The common config inputs apply unchanged:
notification_enabled- the master mute.delay_seconds- hold the chime for a few seconds.repeat- play it up to 100 times if one ding isn't loud enough.blocking_playback- set True if you want the node to wait for the sound to finish.
The timing caveat that bites everyone
Trigger nodes mean "notify after input data is ready," not "notify after the whole workflow is done." Two consequences:
- If your string is produced in the middle of the graph (say, straight off a prompt encoder), you'll hear it early.
- If this node runs in a parallel branch alongside a Save node, ComfyUI doesn't guarantee Save runs first - you can hear the chime before the file is on disk.
The fix is to feed it a string that is downstream of what you actually care about. A classic pattern: put it after the node that builds your save filename, so the ding fires right as the name exists.
Install and gotchas
Zero dependencies, no models. Clone and restart:
cd ComfyUI/custom_nodes
git clone https://github.com/uni-miao/ComfyUI-Audio-Notifier.git
Restart the ComfyUI backend (or your launcher), not just the browser tab. Two things trip people up: the pack's sounds/ folder ships empty, so populate it (or use an absolute sound_path) before expecting the dropdown to have anything; and the sound plays on the machine running the backend - if that's a remote box, that's where the noise comes out. If you hear nothing at all, try a .wav first, then check the backend machine's volume. And no, none of this is a global "queue finished" listener - for strict completion you'd want a frontend/notification extension instead.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | — | |
| repeat | INT | 11–100 | — |
| delay_seconds | FLOAT | 0.00–3600 | — |
| notification_enabled | BOOLEAN | true | — |
| blocking_playback | BOOLEAN | false | — |
| enable_sound_path | BOOLEAN | false | — |
| sound_path | STRING | — | |
| enable_sound_name | BOOLEAN | false | — |
| sound_name | COMBO | 2 options: , .gitkeep | |
| fallback_to_system_beep | BOOLEAN | true | — |
Outputs (0)
No outputs