首页 > 解决方案 > stft 中时间箱的数量与信号中的实际时间有什么关系?

问题描述

我有一个 9 分钟的文件,其采样率为 16000。我的信号总共有 9*60*16000=8640000 个样本。我在 python(librosa 包)中做一个 stft 并绘制频谱图。我知道频谱图的频率分辨率等于 Fs(采样频率)/N(FFT 点数)。

如果我用 N-fft= 2048 绘制频谱图,那么我的频谱图的形状为 (1025, 16876),x_axis 显示 9 分钟的时间。如果用 N-fft= 16384 绘制它,那么我的频谱图的形状为 (8193, 2110),x_axis 显示时间为 1 分 10 秒。我不明白频谱图的形状与我们在时间轴上看到的时间之间的关系。我还想知道频谱图轴上的时间与信号中的实际时间之间的关系。

file = ('mm.wav')
k=1
v, sr = librosa.load( file, sr=16000)
t, phase = librosa.magphase(librosa.stft(v, n_fft= 2048))
librosa.display.specshow(librosa.power_to_db(t,ref=np.max),y_axis='linear',x_axis='time',sr=sr)
t.shape
fig.savefig ('2048.png')

n-fft=16384 的频谱图

n-fft=2048 的频谱图

标签: pythonfftfrequency-analysisspectrogramtime-frequency

解决方案


通常,频谱图是多个(可能重叠)STFT,并且图中的时间与信号中的时间成正比。您的问题看起来可以通过将 x 轴放大 8 倍(N-fft/2048)来解决,尽管我不知道为什么。


推荐阅读