diff options
Diffstat (limited to 'lib/tests/test_meters.py')
| -rw-r--r-- | lib/tests/test_meters.py | 44 |
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", + } |
