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")