aboutsummaryrefslogtreecommitdiff
path: root/lib/tests/test_meters.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tests/test_meters.py')
-rw-r--r--lib/tests/test_meters.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/lib/tests/test_meters.py b/lib/tests/test_meters.py
new file mode 100644
index 0000000..73f3db6
--- /dev/null
+++ b/lib/tests/test_meters.py
@@ -0,0 +1,44 @@
+import numpy as np
+from conftest import sine, speechish
+
+from producer import meters
+
+
+def test_rms_and_peak_of_sine(sr):
+ x = sine(1000, 3.0, sr, peak_dbfs=-17.0)
+ assert abs(meters.rms_db(x) + 20.0) < 0.1
+ assert abs(meters.sample_peak_db(x) + 17.0) < 0.05
+
+
+def test_true_peak_bounds(sr):
+ x = sine(1000, 3.0, sr, peak_dbfs=-17.0)
+ tp = meters.true_peak_db(x, sr)
+ sp = meters.sample_peak_db(x)
+ assert sp - 0.01 <= tp <= sp + 0.6
+
+
+def test_lufs_of_sine(sr):
+ x = sine(1000, 3.0, sr, peak_dbfs=-17.0)
+ assert abs(meters.lufs(x, sr) + 20.05) < 0.2
+
+
+def test_lufs_silence():
+ assert meters.lufs(np.zeros(48000, dtype=np.float32), 48000) == meters.SILENCE_DB
+
+
+def test_noise_floor_below_speech(sr):
+ x = speechish(8.0, sr, level_dbfs=-20.0)
+ floor = meters.noise_floor_db(x, sr)
+ assert floor < meters.rms_db(x) - 4.0
+
+
+def test_all_meters_keys(sr):
+ d = meters.all_meters(speechish(3.0, sr), sr)
+ assert set(d) == {
+ "rms_db",
+ "sample_peak_db",
+ "true_peak_db",
+ "lufs",
+ "noise_floor_db",
+ "duration_s",
+ }