如何用非常小的值绘制频谱图?

时间:2018-03-12 16:04:27

标签: python matplotlib audio spectrogram

我正在使用librosa来读取声音文件,matplotlib.pyplot.specgram用于绘制其频谱图,并在spectrum中返回其频率和时间段。

代码:

import librosa
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.pyplot import specgram

filepath = r"1301524547165114.wav"

f, sr = librosa.load(filepath)
spectrum, freqs, t, im = specgram(np.array(f), Fs=sr, noverlap=2**7, NFFT=2**8)
print(spectrum.shape)
plt.suptitle("Figure 1: Spectrogram")
plt.colorbar()
plt.show()

输出:
(129, 347)
enter image description here

此处谱图看起来不错,但是当我使用spectrum绘制时,大部分图表都很暗,因为spectrum中的大多数值都非常小。

代码:

def print_image(image, title):
    plt.imshow(image, origin="lower")
    plt.title(title)
    plt.colorbar()
    plt.show()

print_image(spectrum, "Figure 2: Spectrogram")

输出:
enter image description here

这是我使用的音频文件:https://drive.google.com/open?id=1WMvOqsSNllgX5R_hUzhHm0gYopYnbZGZ

为什么matplotlib.pyplot.specgram能够正确地绘制它? 如何使用从spectrum收到的数据(matplotlib.pyplot.specgram)来绘制它。

0 个答案:

没有答案