我正在使用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()
此处谱图看起来不错,但是当我使用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")
这是我使用的音频文件:https://drive.google.com/open?id=1WMvOqsSNllgX5R_hUzhHm0gYopYnbZGZ
为什么matplotlib.pyplot.specgram
能够正确地绘制它?
如何使用从spectrum
收到的数据(matplotlib.pyplot.specgram
)来绘制它。