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