The audio concept involved here is compression. So we need to install a compression plugin to the audio output. The following is working in Ubuntu 20.04. I needed to install pulse audio first
:
Verbatim from Is there a way of leveling/compressing the sound system-wide?
I had success with the example shown in this answer.
Install Steve Harris's LADSPA plugins 
sudo apt install swh-plugins
Run pacmd
and then this commands:
load-module module-ladspa-sink sink_name=compressor plugin=sc4m_1916 label=sc4m control=1,1.5,401,-30,20,5,12
set-default-sink compressor
This answer explains how to load the plugin permanently.
The parameters (the control=1,1.5,401,-30,20,5,12
part above) for this compressor are described in Steve Harris' LADSPA Plugin Docs:
- RMS/peak: The balance between the RMS and peak envelope followers.RMS is generally better for subtle, musical compression and peak is better for heavier, fast compression and percussion.
- Attack time (ms): The attack time in milliseconds.
- Release time (ms): The release time in milliseconds.
- Threshold level (dB): The point at which the compressor will start to kick in.
- Ratio (1:n): The gain reduction ratio used when the signal level exceeds the threshold.
- Knee radius (dB): The distance from the threshold where the knee curve starts.
- Makeup gain (dB): Controls the gain of the makeup input signal in dB's.
- Amplitude (dB): The level of the input signal, in decibels.
- Gain reduction (dB): The degree of gain reduction applied to the input signal, in decibels.
Due to a limitation of PulseAudio, it is not possible to adjust them in real time.
To experiment with different parameters, I also loaded the compressor as a real-time adjustable ALSA plugin via Alsaequal
by creating the following ~/.asoundrc
:
ctl.compressor {
type equal;
library "/usr/lib/ladspa/sc4m_1916.so";
module "sc4m";
}
pcm.plugcompressor {
type equal;
slave.pcm "plug:pulse";
library "/usr/lib/ladspa/sc4m_1916.so";
module "sc4m";
}
pcm.compressor {
type plug;
slave.pcm plugcompressor;
}
A sample MP3 file can be played through the compressor using mpg321
,
mpg321 -a hw:compressor "04 - Love Song for Yoshimi.mp3"
while alsamixer -D compressor
can be used to adjust parameters in real-time.
End verbatim
I recorded a simple voice ver loud and then very quiet. Playing it with the params shown in the command above, the difference was outstandig compared with no plugin.
Also, in the PulseAudio interface I could select what application should use the plugin's output:
