Given baseline and current aggregate feature summaries for audio
slices, return slices whose relative change exceeds a threshold.
Hidden answer: invariant, tests, and Python solution
Invariant: report slices that appear or disappear, and compare a
slice only when both baseline and current values exist. Treat a zero
baseline as a special case so the code does not hide a new
population. Test missing slices, zero baseline, invalid negative
thresholds, small changes, and large increases in silence or
clipping.
def drifted_slices(baseline, current, threshold):
if threshold < 0:
raise ValueError("threshold must be non-negative")
drifted = []
for name in sorted(set(baseline) | set(current)):
if name not in baseline:
now = current[name]
drifted.append((name, "new_slice", now))
continue
if name not in current:
drifted.append((name, "missing_current", baseline[name]))
continue
now = current[name]
before = baseline[name]
if before == 0:
if now != 0:
drifted.append((name, "zero_baseline", now))
continue
relative = abs(now - before) / abs(before)
if relative > threshold:
drifted.append((name, "relative_change", relative))
return drifted