aboutsummaryrefslogtreecommitdiff
path: root/lib/tests/test_loudness.py
blob: 5cd84d63a4d09eecea9d419f6e34c9fb146d6554 (plain)
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
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