Python + Scipy: 如何设置频谱图的时间范围?

Python + Scipy: How to set the time frame for a spectrogram?

我正在尝试使用 scipy.signal.spectrogram 计算音频信号的频谱图。作为项目规范,需要时间范围彼此间隔 20 毫秒,但我找不到设置它的方法。

稍微调整 noverlap 后,我能够获得的最大值是一个不精确的 5 毫秒。

有人知道如何实现吗?

谢谢

你说的是"it is needed that the time frames be spaced 20ms from each other"。我假设这意味着每个 window(或 "segment")开始之间的延迟是 20 毫秒。

三个相关参数是fsnpersegnoverlapnperseg 是每个 "segment" 中的样本数。即滑过输入数据的是"window"中的样本数。 noverlap是连续windows重叠的样本数。因此,成功之间的延迟 windows 是 nperseg - noverlap 个样本。

您希望 window 移动 20 毫秒,这对应于 fs*20/1000 个样本(假设 fs 以每秒样本测量,即赫兹)。 假设你的 window 长度是 T ms。那么nperseg就是fs*T/1000。 您希望重叠为 T-20 毫秒,因此 noverlap = int(fs*(T-20)/1000)