[[!meta title="Normalizing audio"]] [[!meta copyright="Copyright © 2026 Dhruv Kadam"]] ## Classifying Audio Before getting started normalizing, you should quickly check what kind of audio you have. I find that it can be broken into four basic types. ### Ideal Audio This is the kind you want. This audio has a consistent volume (Low distance between peaks and valleys), and little to no background noise. ### Semi-Ideal Audio A Audio with consistent background noise, yet consistent volume. This will look like Ideal Audio for the most part, but the areas without speech won't be silent. Consistent background noise means something like a fan going in the background, or the noise of a highway audible in the recording. ### Semi-Ideal Audio B Audio with no background noise, but not consistent volume. This can be identified by large distances between peaks and valleys. ### Sub-Ideal Audio Audio with background noise and no consistent volume. Combines the worst traits of Semi-Ideal A and B. ### Note All of the above assume that the speaker is audible throughout. If the audio includes noises that overpower the speaker, or the speaker cutting out, then you should attempt to get a re-recording if possible. I suppose you can use an AI tts solution as well, but that depends on if you have the original script. ## Audio Normalization ### Ideal Audio For basic normalization of Ideal Audio (recorded at a mostly consistent volume and good quality), you can use FFMPEG. ``` example ffmpeg -i input.opus -af "loudnorm=I=-14:TP=-2.5:LRA=10" output.opus ``` ::: center Apply loudness normalization filter and target for -14 LUFTS, -2.5 true peak, with the distance between the quietest and loudest points being at most 10 decibles ::: I find that this is the optimal range, with lower LRAs sounding tinny. Keep in mind the true peak means that anything above it will be cut off abruptly. Better than clipping, but not by much. You can also use the loudness normalization filter in [Audacity. Linked is a short guide](https://www.youtube.com/watch?v=RR7fCquUDAM&pp=ygUfYXVkYWNpdHkgbG91ZG5lc3Mgbm9ybWFsaXphdGlvbg%3D%3D). If you do this, make sure to use the legacy limiter filter to set a true peak. ### Semi-Ideal Audio A - First, normalize the audio to something high, such as **-6** or **-5** LUFTS. This makes the background noise profile much more obvious. - Secondly, open Audacity and use the [Noise reduction filter.](https://www.youtube.com/watch?v=bMefnFkCanE&pp=ygUYYXVkYWNpdHkgbm9pc2UgcmVkdWN0aW9u) - Then, follow the steps for Ideal Audio. ### Semi-Ideal Audio B - Open Audacity and determine the peaks and valleys. - Use the **Normalize** tool (Not *Loudness* normalize!) to bring the valleys down to the median. You don't have to target your desired LUFTS level. In fact, I would recommend targeting about 6 DB above it. - Utilize the Compressor tool, I find that the Podcast/Radio preset works well. - Now follow the steps for Ideal Audio. ### Sub-Ideal Audio - First, normalize the audio to something high, such as **-6** or **-5** LUFTS. This step can optionally be skipped if the noise is loud enough. This makes the background noise profile much more obvious. - Secondly, open Audacity and use the [Noise reduction filter.](https://www.youtube.com/watch?v=bMefnFkCanE&pp=ygUYYXVkYWNpdHkgbm9pc2UgcmVkdWN0aW9u) - Follow the steps for Semi-Ideal Audio B. # Additional Notes - The filter curve EQ, as well as Bass and Treble boost or any other volume-based Audio "Touch ups" should be used after normalization. Using them before would defeat their purpose. - The point where noise reduction is used is the best time to use other distraction reducing tools, such as click reduction. - Do not use the legacy compressor in Audacity, as I find it lowers audio quality. Legacy limiter is okay though. - You can use the "Fix Clipping" tool under the analyze section to, you guessed it, find clipping. - I've had mixed results with the clip fix tool, but it's worth a shot if there's no other options. - If you use an AI "voice cloning" tts solution, remember that any noise that shows up in the sample clip will be added in the tts.