如何将Librosa频谱图保存为特定大小的图像?
Librosa是一个Python包,可帮助分析音频和音乐文件。该软件包还帮助创建音乐检索信息系统。本文将介绍如何将Librosa频谱图保存为特定大小的图像。
阅读更多:Python 教程
步骤
- 设置图形大小并调整子图之间和周围的填充。
-
创建图形和子图集。
-
初始化三个不同的变量, hl 、 hi 、 wi ,用于存储频谱图中每个时间的样本、图像的高度和宽度。
-
加载演示音轨。
-
创建一个 窗口 ,即音频时间序列的列表。
-
使用 melspectrogram() 和步骤3的数据计算一个Mel-scaled频谱图。
-
使用 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()
输出

极客教程