• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • STFT 的固有权衡与伪影产生机制

    FFT(Fast Fourier Transform),全称快速傅里叶变换,是离散傅里叶变换(DFT)的高效实现算法。它利用信号的对称性、周期性特性大幅压缩计算量,能将音频的时域波形(随时间变化的振幅曲线)快速转换为频域频谱(不同频率分量的能量分布),是现代数字音频 DSP 处理的核心基础工具。

    几乎所有日常接触的专业音频处理流程,底层都依赖 FFT 实现:

    • 有损音频编码:MP3、AAC 等压缩格式,用 FFT 作为滤波器组分析音频频谱,结合人耳听觉掩蔽效应,丢弃感知上不重要的高频分量,实现音频文件体积的大幅压缩。
    • 智能频域降噪:Audacity、iZotope RX 等工具的经典降噪流程,通过 FFT 将音频转换至频域,估算并减去噪声基底频谱,再逆变换回时域,实现比传统时域滤波器更精准的噪声消除效果。
    • 各类音频效果处理:音高修正、时间拉伸、频谱分析、卷积混响等功能,都基于 FFT 的频域运算能力实现,大幅降低复杂音频处理的运算负载。


    STFT(Short-Time Fourier Transform,短时傅里叶变换)是对 FFT 的"实用化封装"——把一段长音频切成很多短片段,对每个短片段分别做 FFT,得到"频率随时间变化"的频谱图。

    维度FFTSTFT
    输入一段完整信号一段完整信号(自动分段)
    输出一个频谱(频率分布)一张时频谱图(频率随时间变化)
    时间信息❌ 丢失✅ 保留
    本质数学变换工具FFT 的工程应用框架
    关系基础算法STFT 的内部核心运算就是 FFT——每一帧做一次 FFT

    简言之:FFT 是"拍一张照片",STFT 是"拍一段视频"。


    STFT 的固有权衡与伪影产生机制

    STFT 通过将时域信号加窗分段后逐帧做 FFT,获得时频谱(Spectrogram)。这里存在一个固有的物理约束:

    • 窗函数越长 → 频率分辨率越高(能区分更接近的频率分量),但时间分辨率越低(无法精确定位瞬态事件的起止时刻)。
    • 窗函数越短 → 时间分辨率越高(能精确定位瞬态),但频率分辨率越低(无法区分接近的频率分量)。

    这就是信号处理中经典的时频不确定性原理(Gabor Limit)——时间分辨率和频率分辨率不可能同时达到最优,二者是此消彼长的权衡关系。基于这一固有权衡,以下伪影在依赖 STFT/FFT 的处理流程中容易产生:

    • 瞬态拖尾与预回声:为获得足够的频率分辨率而使用较长分析窗时,时域中的瞬态脉冲(如爆破音、打击乐起音)的能量会被"涂抹"到相邻帧中,表现为瞬态前后的模糊拖尾。在有损编码中,这进一步表现为"预回声"——瞬态事件出现之前就能听到微弱的模糊前兆。
    • 音乐噪声(Musical Noise):频域降噪过程中,算法对每个时频点计算一个增益系数(0 到 1 之间)。当某些时频点的增益被截断为 0(噪声完全切除)而相邻点被保留为 1(信号完全保留)时,增益谱出现不连续跳变。这种不连续的增益谱经逆 FFT 变换后,在时域表现为离散的、随机分布的短促音调突发——即音乐噪声。
    • 高频啁啾声(Chirping):在高频区域,由于 STFT 频率分辨率有限,相邻频率 bin 之间的相位关系在帧间可能出现不连续变化,经逆 FFT 合成后产生频率快速扫动的"啁啾"信号。需要注意的是,chirp 伪影并非仅源于 FFT 类处理——在 TTS 系统中,神经声码器的相位推断误差同样会产生听感高度相似的 chirp 伪影,其成因是模型从幅度谱推断相位时的精度不足,与 FFT 无直接因果关系。