matplotlib画图完整去除白边python(频谱图为例)

去除白边,只提取图像,用于网络训练(以Log mel和filter bank图为例):

import librosa
from librosa import display
import matplotlib.pyplot as plt

# 提取原始音频,采样频率为原始频率sr=None
y, sr = librosa.load(audio_file, sr=None)
# 绘制filterbank图, n_fft是窗口大小
y_melfb = librosa.filters.mel(sr=sr, n_fft=2048)
display.specshow(y_melfb)
# 去除坐标轴
plt.axis("off")
# 去除白边
plt.savefig(filter_save_path, bbox_inches='tight', pad_inches=0.0)
plt.show()
# 就可以得到没有白边的图用于网络训练啦,不需要进行预处理
# 对于长宽不一致:分类、回归等问题可以采用resize的方式来规范化输入,生成模型则需要采用crop的方式来处理图片

matplotlib画图完整去除白边python(频谱图为例)_第1张图片

# log_mel
# 绘制log-mel图
melspec = librosa.feature.melspectrogram(y, sr)
# fig = plt.figure(figsize=(5, 5))
log_melspec = librosa.amplitude_to_db(melspec)
display.specshow(log_melspec)
# display.specshow(log_melspec, x_axis="time")
plt.axis("off")
plt.savefig(logmel_save_path, bbox_inches='tight', pad_inches=0.0)
# plt.ylabel("Log mel")
# plt.colorbar()
# plt.savefig("logmel", dpi=600, bbox_inches='tight')
plt.show()
# 若是处理文件夹,注意释放内存,否则会耗时变长
plt.clf()
plt.close()

matplotlib画图完整去除白边python(频谱图为例)_第2张图片

你可能感兴趣的:(python可视化,python,matplotlib)