summaryrefslogtreecommitdiff
path: root/animism-align/cli/app/peaks/extract.py
blob: dda09d21ddd1522cf171604bec05cbc557493380 (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
31
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()