1import numpy as np
2import librosa
3import math
4import sys
5
6print("Loading file")
7audio, sample_rate = librosa.load(sys.argv[1], duration=60, offset=0, sr=15360)
8
9print("Getting spectrum")
10spectrum = librosa.stft(audio)
11S = np.abs(spectrum)
12
13fout = open("spectrum.h", "w")
14
15print("Writing file")
16fn = 36
17fs = int(len(S) / fn)
18fout.write("const uint16_t spectrum[][4] = {\n")
19for t in range(0,len(S[0]-1)):
20  fout.write("{ ")
21  f_prev = 0
22  for f in [8, 45, 300, 600]:
23    v = 0
24    for i in range(f_prev, f): v += S[i][t]
25    if v != 0: v = int(v/30)
26    if v < 0:  v = 0
27    f_prev = f
28    fout.write(str(int(v)) + ", ")
29  fout.write("},\n")
30fout.write("};\n")
31fout.close()
32
33print("Finished")