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 毫秒。
三个相关参数是fs
、nperseg
和noverlap
。 nperseg
是每个 "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)
。
我正在尝试使用 scipy.signal.spectrogram
计算音频信号的频谱图。作为项目规范,需要时间范围彼此间隔 20 毫秒,但我找不到设置它的方法。
稍微调整 noverlap
后,我能够获得的最大值是一个不精确的 5 毫秒。
有人知道如何实现吗?
谢谢
你说的是"it is needed that the time frames be spaced 20ms from each other"。我假设这意味着每个 window(或 "segment")开始之间的延迟是 20 毫秒。
三个相关参数是fs
、nperseg
和noverlap
。 nperseg
是每个 "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)
。