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
45
46
47
48
|
"""
Extract peaks from an MP3 file.
"""
import click
@click.command()
@click.option('-i', '--input', 'fp_in', required=True,
help='Input file')
@click.pass_context
def cli(ctx, fp_in):
"""Extract peaks from an audio file.
"""
print("This script is deprecated. Extract peaks using the web UI!")
return
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())
with open(os.path.join(app_cfg.DIR_DATA_STORE, 'peaks/peaks.json'), 'w') as fp_out:
json.dump(peaks.tolist(), fp_out, separators=(',', ':'))
print("Wrote peaks.json")
|