N, K = np.shape(S)
freq = np.transpose(np.linspace(0, sr/2, N))
slope = np.zeros((1, K))
intercept = np.zeros((1, K))
for k in range(0, K):
p = np.polyfit(freq, S[:, k], order)
slope[:, k] = p[0]
intercept[:, k] = p[1]
return (slope, intercept)
// - End Features added by BWalburn
After Change
S = np.abs(librosa.stft(y, n_fft=n_fft, hop_length=hop_length))
else:
// Infer n_fft from spectrogram shape
n_fft = (S.shape[0] - 1) * 2
// Compute the center frequencies of each bin
if freq is None:
freq = librosa.core.fft_frequencies(sr=sr, n_fft=n_fft)
if freq.ndim == 1:
coefficients = np.polyfit(freq, S, order)
else:
coefficients = np.concatenate([[np.polyfit(freq_t, S_t, order)]
for (freq_t, S_t) in zip(freq.T, S.T)],
axis=0).T
return coefficients
// - End Features added by BWalburn