Frequency Analysis
音频信号通常以时域 (Time Domain) 形式表示(振幅随 变化),但为了方便分析频率成分,需要将其转换到频域 (Frequency Domain) 表示(振幅随 变化)。
傅里叶变换
对于连续信号
- :时域信号
- :频域信号
- :频率
- :虚数单位()
可以使用欧拉公式展开,改写:
- 实部 (Real Part):
- 虚部 (Imaginary Part):
相位 (Phase):
Phase Shift,指的是一个波形相对于某一参考波形在时间轴上的水平位移。
当使用正弦波来描述一个周期信号时,标准形式通常是:
- :角频率
对应的相移即
- 幅度 (Amplitude):
这个公式将连续的时间信号分解为无限多个连续频率的正弦波,只适用于理论分析,但在实际中无法直接使用,因为计算机只能处理离散数据。
离散傅里叶
Discrete Series Transformer, DFT
对于离散信号
- :信号长度
- :频率索引()
对于每个频率点 ,需要计算 次乘法和加法。
快速傅里叶
Fourier Series Transformer, FFT
它的公式与 DFT 相同,但通过降低计算复杂度,加快变换的速度。
核心思想是将 DFT 的计算分解为更小的子问题(分治法):
- 如果 (输入信号的样本点数量,例如 256、512、1024 等)是 2 的幂,则可以将 DFT 分解为两个长度为 的 DFT。
- 分解可以递归进行,直到子问题的长度为 1。
实现将计算复杂度从 降低到 。
短时傅里叶
Short-Time Fourier Transform, STFT
用于分析「非平稳信号」(频率 随时间 变化的信号)。与传统的傅里叶变换不同,STFT 通过将信号分段并对每段分别进行傅里叶变换,从而同时提供时间和频率的信息。
- :时域信号
- :窗函数,用于截取信号在时间中心 附近的一个局部片段。
窗函数
STFT 的核心部分,实现将信号分割成一系列短时间片段。此外,为了保证信号的连续性并避免帧与帧之间的明显断裂,通常会让每个帧之间有一定的重叠 (Overlap)。
频率分辨率,即每个频率分量之间的间隔。
假设使用 44100 Hz 的采样率和 1024 采样点的窗函数,则分辨率为:
- 这意味着能够分辨出最小为 43.07 Hz 的频率差异。
- 如果使用更大的窗口,分辨率会更细致,但每个频率点也会变得更模糊(频率成分 “扩展” 到更大区间)。
矩形窗
Rectangular Window
定义为在窗口长度 内为 ,其他位置为 。其数学表达式为:
它没有平滑的过渡,信号直接被截断。实现简单,计算效率高。
它的峰较窄,频谱泄漏 (Spectral Leakage) 严重,即音频帧的长度不是信号周期的整数倍,频率成分容易 “泄漏” 到其他频率上,导致原本集中在特定频率的能量分散到其他频率点。
汉宁窗
Hann Window
它产生较宽的峰,具有平滑的边缘过渡,信号在窗口边界处逐渐减小到零,但代价是频率分辨率较低。
波形图
(时域图)

傅里叶级数 (Fourier Series) 指的是一个周期性函数 展开为一系列正弦和余弦函数后的叠加,用于描述周期性 (Periodic) 信号:
- :常数项,信号的平均值
可以进一步生成不同的波形图:
方波
周期为 ,并且其信号值只有两个状态 和


波通常会出现一些 “抖动”,这在信号处理中被称为「吉布斯现象」(Gibbs phenomenon)。它是由傅里叶级数的「有限项逼近」所引起的,即仅取「有限个」正弦和余弦项,尤其在信号具有急剧变化(例如方波的上升和下降边缘)时明显。
三角波

- 系数 衰减得比方波的系数 更快
锯齿波

- :原信号振幅的2倍
频谱图
Spectrogram,或者称为「时频图」
- 横轴:信号的时间维度
- 纵轴:信号的频率成分
- 颜色:深浅表示该频率在该时刻的强度
分帧 → 加窗
→ 傅里叶计算
→ 功率计算
→ 对数幅度谱计算 (更接近人类听觉感知)
→ 可视化显示

短窗口 → 良好的时间分辨率

长窗口 → 良好的频率分辨率
零填充
Zero Padding
- 一种用于让傅里叶变换的图形幅度输出在外观上更加平滑的技术。
- 通常用于将信号数据的长度调整为 的幂次方,以便加快处理速度。
窗口跳跃
Hopping
不总是需要在每个时间点计算谱图,尤其是当信号的频谱内容在时间上变化不大时。
- 相反,可以跳过一些时间点,而不会影响图的基本形状。
- 这意味着滑动窗口每次移动的步长大于一个样本点,这个步长称为「跳跃大小」(Hop size)。

