librosa.feature.melspectrogram 的形状

Shape of librosa.feature.melspectrogram

我正在尝试理解 librosa.feature.melspectrogram 的输出:

>>> import numpy as np
>>> from librosa.feature import melspectrogram
>>>
>>>
>>> melspectrogram(np.random.randn(128), n_mels=128).shape
(128, 1)
>>> melspectrogram(np.random.randn(900), n_mels=128).shape
(128, 2)
>>> melspectrogram(np.random.randn(500), n_mels=128).shape
(128, 1)
>>> melspectrogram(np.random.randn(512), n_mels=128).shape
(128, 2)
>>> melspectrogram(np.random.randn(511), n_mels=128).shape
(128, 1)
>>> melspectrogram(np.random.randn(1023), n_mels=128).shape
(128, 2)
>>> melspectrogram(np.random.randn(1024), n_mels=128).shape
(128, 3)
>>> melspectrogram(np.random.randn(2055), n_mels=128).shape
(128, 5)
>>> melspectrogram(np.random.randn(2047), n_mels=128).shape
(128, 4)

是什么决定了它形状的第二个值?第一个很清楚,是n_mels,但是从docs看不出第二个是哪里来的

它是 中的信号长度(不是样本),取决于 window 和跳跃长度。参见

具体来说:1 + len(y) // hop_length