如何将 Librosa 频谱图保存为特定大小的图像?
matplotlibpythondata visualization
Librosa 是一个 Python 包,可帮助分析音频和音乐文件。此包还有助于创建音乐检索信息系统。在本文中,我们将了解如何将 Librosa 频谱图保存为特定大小的图像。
步骤
设置图形大小并调整子图之间和周围的填充。
创建一个图形和一组子图。
初始化三个不同的变量,hl、hi、wi,以存储频谱图中每个时间的样本、图像的高度和宽度。
加载演示曲目。
创建一个窗口,即音频时间序列的列表。
使用 melspectrogram() 和 window 计算梅尔缩放频谱图和步骤 3 的数据。
使用 power_to_db() 方法将功率谱图(幅度平方)转换为分贝 (dB) 单位。
将频谱图显示为 img (我们可以在此处保存)。
使用 savefig() 保存 img。
使用 plt.show() 方法显示图像。
示例
import numpy as np import matplotlib.pyplot as plt import librosa.display plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True fig, ax = plt.subplots() hl = 512 # 频谱图中每个时间步的样本数 hi = 128 # 图像高度 wi = 384 # 图像宽度 # 加载演示曲目 y, sr = librosa.load(librosa.ex('trumpet')) window = y[0:wi*hl] S = librosa.feature.melspectrogram(y=window, sr=sr, n_mels=hi, fmax=8000, hop_length=hl) S_dB = librosa.power_to_db(S, ref=np.max) img = librosa.display.specshow(S_dB, x_axis="time", y_axis="mel", sr=sr, fmax=8000, ax=ax) plt.savefig("out.png") plt.show()