真实面经题目 · 原创解析
STFT 中常见窗函数(矩形、Hann、Hamming、Blackman)如何实现,它们如何影响主瓣宽度、旁瓣抑制、频谱泄漏和时频分辨率?
这题考 STFT 加窗的频谱分析基础:窗函数通过截断和加权每一帧信号,改变主瓣宽度、旁瓣高度和泄漏程度,从而影响频率分辨率、动态范围和重构稳定性。
真实面经题目 · 原创解析
这题考 STFT 加窗的频谱分析基础:窗函数通过截断和加权每一帧信号,改变主瓣宽度、旁瓣高度和泄漏程度,从而影响频率分辨率、动态范围和重构稳定性。
STFT 的流程是把长音频按帧切分,每帧乘以窗函数 w[n],再做 FFT。加窗不是装饰步骤,它决定了有限长度截断在频域里的形状:主瓣越窄,越容易分开相邻频率;旁瓣越低,强频率分量越不容易泄漏到远处并掩盖弱分量。矩形窗实现最简单,w[n]=1,相当于硬截断,主瓣最窄、频率分辨率看起来最好,但旁瓣很高,非整周期信号会有明显频谱泄漏。Hann 窗常写成 0.5 - 0.5 cos(2πn/(N-1)),两端平滑降到 0,主瓣比矩形宽,但旁瓣明显降低,是通用分析和重构中很常见的折中。Hamming 窗常写成 0.54 - 0.46 cos(2πn/(N-1)),两端不完全为 0,主瓣宽度接近 Hann,第一旁瓣通常更低,但远端旁瓣衰减不一定比 Hann 更快。Blackman 窗常写成 0.42 - 0.5 cos(2πn/(N-1)) + 0.08 cos(4πn/(N-1)),主瓣更宽,频率分辨率下降,但旁瓣抑制更强,适合弱信号容易被强信号泄漏掩盖的场景。回答时要强调:真实频率可分辨能力主要由窗口时长和窗形主瓣宽度决定,hop size 主要影响帧步进、时间采样密度、重叠率和重构冗余;FFT zero-padding 只是让频率网格更密,不等于真实分辨率变高。实际工程还要考虑 periodic/symmetric 约定、幅值归一化、overlap-add 条件和指标如主瓣宽度、峰值旁瓣、旁瓣衰减、ENBW、scalloping loss。
STFT 对每个短时帧做频谱分析。若直接截取一段信号,相当于乘矩形窗,帧边界的不连续会在频域产生较强旁瓣。使用 Hann、Hamming、Blackman 等平滑窗,是用较柔和的边缘权重降低边界突变,从而减少频谱泄漏。实现上通常是预先生成长度为 N 的窗向量,对每个 frame 做逐点相乘后再 FFT。
矩形窗 w[n]=1,保留每个采样点同等权重。它的主瓣较窄,因此两个频率很近的理想正弦更容易被分开;但旁瓣高,非 bin-centered 或非整周期成分会把能量泄漏到大量频点。它适合边界天然连续、频率正好落在 FFT bin 或需要最窄主瓣的受控分析,不适合一般音频中的非平稳信号。
Hann 窗公式常用 0.5 - 0.5 cos(2πn/(N-1)),两端为 0,旁瓣较矩形低很多,重叠相加时也常见。Hamming 窗常用 0.54 - 0.46 cos(2πn/(N-1)),两端不为 0,第一旁瓣抑制通常比 Hann 更强,但远端旁瓣衰减可能更慢。二者主瓣都比矩形宽,所以会牺牲一部分分辨相近频率的能力。
Blackman 窗引入二阶余弦项,常写成 0.42 - 0.5 cos(2πn/(N-1)) + 0.08 cos(4πn/(N-1))。它的边缘更平滑,峰值旁瓣更低,适合分析强弱频率成分共存、弱成分容易被泄漏淹没的情况。代价是主瓣更宽,接近的频率峰更容易被合并,频率定位会变粗。
真实频率可分辨能力主要来自窗口时长和窗形主瓣宽度:长窗观察时间更长,频率估计更细,但瞬态定位更差;短窗相反。窗形决定主瓣、旁瓣、ENBW、scalloping loss 和泄漏形态。hop size 决定相邻帧间隔、时间采样密度、重叠率和重构冗余,不应说成直接提高频率分辨率。FFT zero-padding 会让频率显示网格更密、峰值更平滑,但不会凭空增加真实频率分辨能力。
做特征提取和做可逆 STFT 的关注点不同。若需要 ISTFT 重构,要检查窗口与 hop size 是否满足 overlap-add 条件,并处理窗能量归一化;若比较不同窗的幅值,要考虑 coherent gain,否则同一正弦的峰值会因窗不同而变化。常见错误还包括把 zero-padding 当成真实频率分辨率提升、混淆 periodic 和 symmetric 窗、以及只看 FFT 图不看旁瓣指标。
矩形窗在帧边界是硬截断,若信号在窗口内不是整数周期,边界会产生不连续。频域上它对应较高旁瓣,强分量能量会扩散到更多频点。
Hann 更常作为通用平滑窗,端点为 0,重构和分析都常用;Hamming 第一旁瓣抑制通常更好,但远端旁瓣衰减和端点特性不同。选择要看是否更关心第一旁瓣、远端泄漏或重构条件。
因为它用更强的平滑换来更低旁瓣,代价是主瓣变宽。主瓣宽时,相邻频率峰更容易互相覆盖,所以分辨接近频率的能力下降。
zero-padding 可以让频谱曲线看起来更密,便于插值观察峰值,但不改变由有效窗长和主瓣宽度决定的真实分辨能力。
不够。还要看 hop size、合成窗和窗能量归一化是否满足 overlap-add。否则分析频谱看起来正常,但重构波形会出现幅值起伏或失真。