所以我想把光谱图图像输入到一个卷积神经网络中,试图对各种声音进行分类。我希望每个图像精确到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)
有人对我如何解决这个问题有什么建议吗?我也尝试过不使用子绘图,但当我这样做时,它仍然保存为错误的大小,并且有空白/背景
绘图是供人类查看的,包含轴标记、标签等对机器学习不有用的内容。要向模型提供光谱图的“图像”,只需输出数据。这些数据可以以任何格式存储,但如果您想使用标准图像格式,则应使用PNG。JPEG等有损压缩会引入压缩伪影
下面是保存光谱图的工作示例代码。请注意,为了获得固定大小的图像输出,代码提取音频信号的固定长度窗口。将音频流划分为这种固定长度的分析窗口是标准做法
示例代码
输出
相关问题 更多 >
编程相关推荐