我试图在阵列内的某些时间点分析歌曲的频率。
我正在使用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]是音频数据的右声道)
答案 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个采样的信号,就更容易理解这一点。