Audio Notify Latent
Hear when the sampler is done, before you waste time decoding
- latent
- LATENT
Audio Notify Latent is the passthrough node in ComfyUI-Audio-Notifier that takes a LATENT, plays a sound, and returns it unchanged. It answers the single most common question in long image workflows: is the sampling over yet? That's the moment everyone actually watches the progress bar for, and this node is the honest way to get a bell for it.
Sampling is where ComfyUI spends its time - the KSampler grinding out step after step. VAE decoding after it is comparatively fast, but you usually don't care about the decode itself; you care that the sampler has finished. The README's example is exactly this pattern:
KSampler → Audio Notify Latent → VAE Decode
Insert the node between the sampler and the decode, and it does two things at once: it plays a sound the moment the latent is ready, and it guarantees the decode can't start until the sampler has actually produced it. That ordering is structural - the latent flows through the node - so there's no race with a parallel branch to argue about. The decoded image then arrives right on the chime's heels, which is the real "look at the screen" moment.
Inputs and output
The latent input is the data; the rest are shared pack-wide:
notification_enabled- the mute switch.delay_seconds- nudge the chime later.repeat- 1–100 plays.blocking_playback- off by default (background thread, doesn't slow the graph); on to make the node wait for the sound before forwarding the latent.enable_sound_path/sound_path- an absolute path to a sound file on the backend machine.enable_sound_name/sound_name- a file from the pack'ssounds/folder.fallback_to_system_beep- beep if nothing resolves, on by default.
One output: the unchanged LATENT, straight into VAE Decode or wherever the latent was heading.
The thing to keep in mind
This is a latent passthrough, so it fires when sampling is done - not when the whole workflow is done. If you've got heavy upscaling or a second pass after the decode, the workflow still has work left when you hear it. That's usually fine (sampling is the long pole), but if you want the "everything is finished" bell, hang a notifier further downstream. And since the node forwards the latent untouched, the latent type means it'll only accept genuine latents - use the generic Audio Notify Passthrough if your type isn't covered.
Install and gotchas
No dependencies, no models to download. Clone and restart the backend:
cd ComfyUI/custom_nodes
git clone https://github.com/uni-miao/ComfyUI-Audio-Notifier.git
Restart the ComfyUI backend process, not just the browser tab. Pack-wide gotchas: the sounds/ folder ships empty, so add your own files (or use an absolute sound_path) and restart before the dropdown has choices; and the audio always plays on the machine running the backend - if that's a remote box, that's where the chime comes out. Hearing nothing at all? Check that machine's volume, and prefer .wav files since they're the most reliably supported.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| latent | LATENT | — | |
| 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 (1)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | — |