aboutsummaryrefslogtreecommitdiff
path: root/lib/tests/test_loudness.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tests/test_loudness.py')
-rw-r--r--lib/tests/test_loudness.py30
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