Comfy-Org / Comfy-Org/ComfyUI

[Feature Request] Native LUFS audio loudness normalization node

Open
#13,436 1 comment 1 reaction 0 assignees View on GitHub
Feature
Dominant language
Python
Stars
133k
Forks
15.7k
Avg merge
1d 7h
Merged PRs (30d)
158

Description

### Feature Idea

Please add a native **Normalize Audio Loudness** node that measures an audio clip's integrated loudness and applies the required gain to reach a user-selected LUFS target.

This is different from the existing native **Adjust Audio Volume** node:

- `Adjust Audio Volume` applies a fixed gain in dB without measuring the source.
- Loudness normalization first measures perceived/integrated loudness, then calculates the gain needed to bring different clips to a consistent target level.

Suggested interface:

- Input: `audio` (`AUDIO`)
- Input: `target_lufs` (`FLOAT`, default `-23.0`, step `0.1`)
- Output: normalized `audio` (`AUDIO`)

Expected behavior:

- Measure integrated loudness using ITU-R BS.1770 / EBU R128-style LUFS measurement.
- Apply equal gain across channels while preserving the sample rate and channel layout.
- Handle silence or clips whose loudness cannot be measured without producing NaNs or extreme gain.
- Clearly document whether normalization may exceed 0 dBFS, or optionally provide clipping/true-peak protection.

This would be useful for generated speech, music and video workflows where clips from different generations can have substantially different perceived loudness. A fixed dB adjustment cannot automatically make those clips consistent.

### Existing Solutions

A working custom-node implementation exists in Kijai's ComfyUI-WanVideoWrapper:

https://github.com/kijai/ComfyUI-WanVideoWrapper

The node is named **Normalize Audio Loudness**. It uses `pyloudnorm` to measure integrated loudness and normalize to a configurable target, with `-23 LUFS` as the default.

### Other

Existing custom-node UI:

Normalize Audio Loudness custom node

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.