diff options
| author | historia <historiavg@proton.me> | 2026-09-06 15:17:57 -0400 |
|---|---|---|
| committer | historia <historiavg@proton.me> | 2026-09-06 15:22:52 -0400 |
| commit | c2b0f7e4fb4738afcae1705db8f983dd90a669a4 (patch) | |
| tree | ffcb4bfea9227b40646ab0836decfbac55b9371b /lib/tests/test_loudness.py | |
| download | producer-c2b0f7e4fb4738afcae1705db8f983dd90a669a4.tar.gz | |
inital commit
Diffstat (limited to 'lib/tests/test_loudness.py')
| -rw-r--r-- | lib/tests/test_loudness.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/tests/test_loudness.py b/lib/tests/test_loudness.py new file mode 100644 index 0000000..5cd84d6 --- /dev/null +++ b/lib/tests/test_loudness.py @@ -0,0 +1,30 @@ +import numpy as np +from conftest import speechish + +from producer import loudness, meters + + +def test_rms_normalize_hits_target(sr): + x = speechish(8.0, sr, level_dbfs=-40.0) + y = loudness.normalize(x, sr, "rms", -20.0, -3.0) + assert abs(meters.rms_db(y) + 20.0) < 0.5 + assert meters.true_peak_db(y, sr) <= -2.9 + + +def test_lufs_normalize_hits_target(sr): + x = speechish(8.0, sr, level_dbfs=-35.0) + y = loudness.normalize(x, sr, "lufs", -16.0, -1.5) + assert abs(meters.lufs(y, sr) + 16.0) < 0.6 + assert meters.true_peak_db(y, sr) <= -1.4 + + +def test_silence_passthrough(): + y = loudness.normalize(np.zeros(44100 * 2, dtype=np.float32), 44100, "rms", -20.0, -3.0) + assert np.allclose(y, 0.0) + + +def test_idempotent(sr): + x = speechish(8.0, sr, level_dbfs=-35.0) + y1 = loudness.normalize(x, sr, "rms", -20.0, -3.0) + y2 = loudness.normalize(y1, sr, "rms", -20.0, -3.0) + assert abs(meters.rms_db(y1) - meters.rms_db(y2)) < 0.6 |
