def extract_peaks(fp_in): import os import math import librosa import numpy import json from app.settings import app_cfg if not os.path.exists(fp_in): print(f"fp_in does not exist: {fp_in}") return print(f"Loading {fp_in}") y, sr = librosa.load(fp_in, sr=None) sr_10 = sr / 10 steps = math.ceil(y.shape[0] / sr_10) peaks = numpy.ndarray(steps) for i in range(steps): offset_start = math.floor(i * sr_10) offset_end = math.ceil((i + 1) * sr_10) slice = y[offset_start:offset_end] peak = max(abs(slice.min()), slice.max()) peaks[i] = float('%.3f' % peak) # peaks[i * 2 + 1] = float('%.3f' % slice.max()) return peaks.tolist()