我有一个2D的numpy数组,其中包含音频的频谱图,我想将其保存为图片。
我正在使用librosa库获取频谱。我也可以使用
我还可以将频谱图(一个numpy数组)转换为图像并保存,如下所示。
我有原始的频谱图(线性缩放),我想将其保存为y轴以对数比例尺度显示。我查看了库源代码,以便了解它是如何缩放的,但无法弄清楚。
如何将图像/ 2D numpy数组的y轴进行对数比例尺度缩放?
我正在使用librosa库获取频谱。我也可以使用
librosa.display.specshow()
函数绘制它。如下所示,有许多不同的缩放类型。import PIL
import librosa
import librosa.display
def display_spectrogram(spectrum, sampling_rate):
"""
Frequency types:
‘linear’, ‘fft’, ‘hz’ : frequency range is determined by the FFT window and sampling rate.
‘log’ : the spectrum is displayed on a log scale.
‘mel’ : frequencies are determined by the mel scale.
‘cqt_hz’ : frequencies are determined by the CQT scale.
‘cqt_note’ : pitches are determined by the CQT scale.
"""
librosa.display.specshow(spectrum, sr=sampling_rate, x_axis='time', y_axis='log')
plt.colorbar(format='%+2.0f dB')
plt.title('Spectrogram')
plt.show()
我还可以将频谱图(一个numpy数组)转换为图像并保存,如下所示。
img = PIL.Image.fromarray(spectrum)
img.save("out.png")
我有原始的频谱图(线性缩放),我想将其保存为y轴以对数比例尺度显示。我查看了库源代码,以便了解它是如何缩放的,但无法弄清楚。
如何将图像/ 2D numpy数组的y轴进行对数比例尺度缩放?