Audio Notify
The 'ding' node that plays on your GPU box, not your laptop
Audio Notify is the plainest node in the ComfyUI-Audio-Notifier pack: no data in, no data out, one job - play a sound when the scheduler reaches it. It's the quick-test node of the pack, and it's genuinely useful for the situation the pack exists for: you started a long local render, you stepped away, and you want to hear when something happened instead of staring at a progress bar.
You'll find it at Add Node → Audio Notifier → Audio Notify, or search "Audio Notify". It's an output-style node - ComfyUI flags it as an endpoint even though it returns nothing, so it sits at the tail of a graph doing nothing but making noise.
How it works
When execution reaches the node it calls notify(), which resolves a sound source and plays it. Two details are worth knowing before you rely on it:
- Playback is non-blocking by default. The sound fires on a background daemon thread, so a long clip won't stall the rest of the graph. Flip
blocking_playbackto True and the node waits for the sound to finish before execution moves on. - It re-runs every prompt. The node's
IS_CHANGEDreturns the current nanosecond timestamp, which is exactly why it keeps playing on every queue rather than getting cached away by ComfyUI's change detection.
Sound resolution follows a strict priority. If enable_sound_path is on and sound_path points at a real file, that wins. Otherwise, if enable_sound_name is on, it looks for sound_name inside the pack's sounds/ folder. If neither resolves, fallback_to_system_beep (on by default) gives you a platform beep instead of silence. How that beep is produced depends on your OS: Windows uses winsound for .wav (then ffplay, then os.startfile), macOS uses afplay, Linux tries ffplay then paplay/aplay.
The inputs that actually matter
The node has no data input - only configuration. From the schema, the ones you'll touch:
notification_enabled- master on/off. Turn this off to mute a node without deleting it.delay_seconds- wait before playing. Handy if you want the chime a few seconds after the milestone.repeat- play count (1–100). Useful when a single ding gets lost under a fan-heavy GPU.enable_sound_path/sound_path- point at any absolute file on the backend machine, e.g.C:\Windows\Media\Windows Notify System Generic.wavon Windows.enable_sound_name/sound_name- pick a file from thesounds/folder. Note the dropdown only lists what's in that folder when ComfyUI started.
The trap: when it actually fires
Because this node has no upstream dependency, ComfyUI may execute it at the very start of a prompt - right when the queue begins, not when the workflow finishes. If you drop it into a graph and hear it instantly, that's why. The README is blunt about it: it does not mean the whole workflow completed. For a "that's done" chime you want a passthrough or trigger variant wired after the node you care about (see Audio Notify Latent Trigger or Audio Notify Text Trigger), so the sound waits for real data.
Installing it
The pack has zero third-party Python dependencies - requirements.txt is a placeholder - so there are no models to download. Git clone into your custom nodes and restart the backend:
cd ComfyUI/custom_nodes
git clone https://github.com/uni-miao/ComfyUI-Audio-Notifier.git
Then restart ComfyUI. If you use the Windows launcher (including Chinese all-in-one packs like 秋叶), install under that launcher's actual ComfyUI directory and restart the backend process, not just the browser tab. ZIP installs work too - just make sure you don't end up with a nested ComfyUI-Audio-Notifier/ComfyUI-Audio-Notifier/ folder.
Troubleshooting
No sound at all is the classic complaint, and it's usually one of three things:
- Volume is on the backend machine. This is a backend node pack - audio plays on the box running ComfyUI, not necessarily on the browser you're looking at. If ComfyUI runs on a server or another PC, that's where the noise comes out.
- The
sounds/folder is empty out of the box. The repo ships only a.gitkeep, so thesound_namedropdown has nothing useful until you drop files in and restart. Usesound_pathwith an absolute path, or try a.wavfirst - it's the most reliable across platforms. - mp3/m4a silence. Non-WAV files depend on
ffplayon some platforms; install FFmpeg/ffplay if your workflow needs them.
If you hear a system beep but no sound file, the path didn't resolve and the fallback caught it - check enable_sound_path/sound_name against an existing file.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| 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