如何从频谱图中提取 numpy 数组特征?

How extract numpy array features from spectrogram?

我用这段代码创建了一个频谱图:

D = librosa.amplitude_to_db(librosa.stft(y), ref=np.max)
librosa.display.specshow(D, y_axis='linear', x_axis='time')
plt.colorbar(format='%+2.0f dB')
plt.title('Log-frequency power spectrogram')
plt.savefig('sp.png')
plt.show()

我应该怎么做才能从此图中提取时间数组和数据库数组? (.csv 输出需要它)

您可以使用 librosa 使用的相同函数来绘制频谱图以获得沿轴的数组。 D已经是"db array".

import librosa
import librosa.display
import matplotlib.pyplot as plt
import numpy as np

y, sr = librosa.load(librosa.util.example_audio_file())
#sr = 22050 #default sampling rate
D = librosa.amplitude_to_db(librosa.stft(y), ref=np.max)

# yaxis
n = D.shape[0]
yout = librosa.fft_frequencies(sr=sr, n_fft=1+(2 * (n - 1)) )
print yout, yout.min(), yout.max()

#xaxis
m = D.shape[1]
hop_length=512

xout = librosa.frames_to_time(np.arange(m+1), sr=sr, hop_length=hop_length)
print xout, xout.min(), xout.max()


librosa.display.specshow(D, sr=sr, hop_length=hop_length, y_axis='linear', x_axis='time')
plt.colorbar(format='%+2.0f dB')
plt.title('Log-frequency power spectrogram')
plt.savefig('sp.png')
plt.show()