Scipy.signal.spectrogram输出长度

时间:2018-04-07 17:08:50

标签: python audio scipy signal-processing spectrogram

我试图在阵列内的某些时间点分析歌曲的频率。

我正在使用scipy.signal.spectrogram函数来生成这些频率。歌曲的长度为2:44或164秒,读取的scipy.wav文件的采样率为44100.

当我使用频谱图时:

f, t, Sxx= signal.spectrogram(data[:, 1], sr)

f的长度非常小,129个元素。 t更长,在32322,但仍然远离原始wavfile.read中的7240320采样窗口。

(数据[:,1]是音频数据的右声道)

1 个答案:

答案 0 :(得分:0)

频率数组f受采样频率加上零频率的一半限制,所以

f.size = int(1 + sampling_frequency / 2)

时间数组受可以基于nperseg和noverlap从数据数组中提取的段数限制,就像这样

t.size = int(len(data[:, 1]) - noverlap) / (nperseg - noverlap))

如果您想象有两个段分别为nperseg = 8和noverlap = 1,则您至少需要15个采样的信号,就更容易理解这一点。