1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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",
}
|