【发布时间】:2021-01-16 01:40:57
【问题描述】:
我有一个 10 秒长的音频文件。如果我使用matplotlib 生成spectrogram,那么与librosa 生成的频谱图相比,我得到的时间步数不同。
代码如下:
fs = 8000
nfft = 200
noverlap = 120
hop_length = 120
audio = librosa.core.load(path, sr=fs)
# Spectogram generated using matplotlib
spec, freqs, bins, _ = plt.specgram(audio, nfft, fs, noverlap = noverlap)
print(spec.shape) # (101, 5511)
# Using librosa
spectrogram_librosa = np.abs(librosa.stft(audio,
n_fft=n_fft,
hop_length=hop_length,
win_length=nfft,
window='hann')) ** 2
spectrogram_librosa_db = librosa.power_to_db(spectrogram_librosa, ref=np.max)
print(spectrogram_librosa_db.shape) # (101, 3676)
有人可以向我解释一下为什么时间步长存在巨大差异以及如何确保两者产生相同的输出?
【问题讨论】:
标签: python matplotlib signal-processing fft librosa