如何将 Librosa 频谱图保存为特定大小的图像?

matplotlibpythondata visualization

Librosa 是一个 Python 包,可帮助分析音频和音乐文件。此包还有助于创建音乐检索信息系统。在本文中,我们将了解如何将 Librosa 频谱图保存为特定大小的图像。

步骤

  • 设置图形大小并调整子图之间和周围的填充。

  • 创建一个图形和一组子图。

  • 初始化三个不同的变量,hlhiwi,以存储频谱图中每个时间的样本、图像的高度和宽度。

  • 加载演示曲目。

  • 创建一个窗口,即音频时间序列的列表。

  • 使用 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()

输出


相关文章