我有一个二维数字阵列的音频谱图,我想把它保存为图像。
我用利布罗萨库来获取光谱。我也可以用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()我还可以将光谱图(一个数字数组)转换为图像,并保存如下所示。
img = PIL.Image.fromarray(spectrum)
img.save("out.png")我有原始的光谱图(线性缩放),我想用y轴保存它。我查看了图书馆源代码,以了解它是如何扩展的,但无法理解它。
如何记录图像/二维numpy数组的y轴的缩放?


发布于 2020-12-03 15:04:03
Y轴的实际对数变换是由matplotlib完成的.您可以通过执行ax.set_yscale('linear')和ax.set_yscale('linear')来测试这一点。因此,最简单的选择是调整matplotlib图以删除刻度、边框等。
如果您想自己进行日志缩放,步骤包括
numpy.logspace或类似的https://stackoverflow.com/questions/64957506
复制相似问题