我想将频谱图像作为卷积神经网络的输入,以尝试分类不同的声音。我希望每个图像都恰好是384x128像素。然而,当我保存图像时,它实际上只有297x98。以下是我的代码:
def save_spectrogram(num):
dpi = 128
x_pixels = 384
y_pixels = 128
samples, sr = load_wave(num)
stft = np.absolute(librosa.stft(samples))
db = librosa.amplitude_to_db(stft, ref=np.max)
fig = plt.figure(figsize=(x_pixels//dpi, y_pixels//dpi), dpi=dpi, frameon=False)
ax = fig.add_subplot(111)
ax.axes.get_xaxis().set_visible(False)
ax.axes.get_yaxis().set_visible(False)
ax.set_frame_on(False)
librosa.display.specshow(db, y_axis='linear')
plt.savefig(TRAIN_IMG+str(num)+'.jpg', bbox_inches='tight', pad_inches=0, dpi=dpi)
有人能给我一些指针,告诉我如何修复这个问题吗?我也尝试过不使用subplot进行操作,但是这样保存的图片仍然大小错误,并且带有白色空白背景。
db
进行pickle处理,将原始数据作为CNN的输入呢?使用图像(特别是带有有损JPEG压缩的图像)很可能无法得到您想要的结果。 - Hendrik