Am 29.05.22 um 00:45 schrieb Stefan Ram:
"Steve GS" <Gronicus@SGA.Ninja> writes:
Subject: Automatic Gain Control in Python?

   Automatic Gain Control in Python is trivial. You have a list
   of samples and normalize them, i.e., divide by max. Slightly
   simplified

[ s/max( samples )for s in samples ]

   (where sample values are normalized to the range -1,+1.)

No, that's not it. Loudness is perceived in a different way, the crudest approximation is the standard deviation averaged over small frames, better measures take into account that the ear has a strongly frequency dependent response. For similar sound files, like podcasts which are voice-heavy, the stddev works reasoably well.

If the normalization only reduces the volume, then dividing by the max is sufficient. However if you also want to raise the volume, then you need dynamic range compression. If you have ever tried to record some music with a simple microphone and a computer, you would have noticed that the recording is very soft, when normalized to the max. Commercial music is incredibly loud, and you might have wondered, how they do that.

Google for "Loudness war" and "dynamic range compression" if you want to understand it in detail.

        Christian


--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to