一段十秒的录音,波形图上是一团起伏的毛刺,看不出哪里不对。换算成频谱图之后,第三秒的位置冒出一条竖线——那是一次按键声,之前一直埋在环境噪声里。傅里叶变换做的就是这个换算:同一份信号,换一套坐标去看。AI 处理语音、音频、甚至图像时反复用到它,可这套视角有明确的代价,也有它答不了的问题。
时域和频域,是同一份信息的两种排法
时域里横轴是时间,纵轴是幅度,回答「什么时候发生了什么」。频域里横轴是频率,纵轴是该频率的成分有多强,回答「由哪些东西组成」。两边可以互相换算,数学上不丢信息——前提是幅度和相位都留着。很多人只看幅度谱,把相位扔掉,重建出来的波形就完全变了样,这是工程上最常见的误读之一。
为什么能换算:只要信号满足一定条件,它就能写成一堆不同频率正弦波的叠加,每个正弦波的振幅和相位就是频谱。直觉版本是音叉——敲一下,听到一个音高;敲一组,听到的是和弦。傅里叶变换干的事,是反过来把一段混杂的声音拆回那组音叉。
四种表示,各自答不同的问题
| 表示方式 | 适用场景 | 代价 | 什么时候失效 |
|---|---|---|---|
| 时域直接处理 | 冲击、脉冲、需要精确时刻的事件;实时性要求高的链路 | 看不出周期成分,噪声一多就无从下手 | 信号被宽带噪声淹没,或成分高度重叠 |
| 整段 DFT / FFT | 稳态信号分析、谐波检测、长卷积加速、压缩 | 时间信息被积分掉,只剩「有哪些频率」 | 频率随时间变化时,谱是整段的平均,看不出先后 |
| 短时傅里叶(STFT) | 语音识别前端、音乐分析、需要同时看时间和频率 | 时间分辨率与频率分辨率互相牵制,窗长一选定就固定 | 低频长音和高频短击同时存在,单一窗长两头不讨好 |
| 小波变换 | 突变检测、非平稳信号、图像压缩 | 基函数与层数要选,调参靠经验;实现比 FFT 重 | 需要严格线性相位或极低延迟的场合 |
四行的分界不在先进程度,在你问的问题是什么。问「这段声音有哪些音高」,整段 DFT 就够;问「第 1.2 秒那声咔哒是什么」,得靠分段或小波;问「这个阀门是不是每隔三秒抖一下」,时域直接看反而最快。
拆成频率之后,哪些事突然变简单
最直接的是滤波。想去掉 50Hz 工频干扰,在时域要设计一个滤波器再卷积,在频域直接把那一小段系数压到零,思路干净得多。降噪、去齿音、消除录音里的空调嗡声,都是这个套路。
第二件是压缩。人耳对某些频率不敏感,频域里把听不见的成分量化得粗一些,文件能小一个数量级,MP3 和 AAC 就建立在这个前提上。能量集中在少数系数上,是频域表示最实用的一条性质——稀疏,才压得动。
第三件是加速。时域里的卷积对应频域里的逐点相乘,长序列上把 O(n²) 降到 O(n log n)。深度学习里的大卷积核、长序列卷积走的就是这条路,卷积本身在算什么,可以看卷积是怎么看局部的那篇。第四件是特征:语音识别前端把波形切成二十多毫秒一帧,算梅尔频谱再送进声学模型,这一环的输入质量直接决定后面的识别率,链路可以看语音识别的处理流程。
还有一处不那么显眼:一些模型用不同频率的正弦波给词的位置编码,让注意力能分辨先后,思路见位置编码为什么用正弦波。频率在这里成了一种坐标刻度,跟信号处理里的用法同源。
代价一:整段变换会把时间抹平
标准傅里叶变换对整段信号做积分,输出只有「有哪些频率、各占多少」,没有「什么时候」。这是定义决定的,不是实现偷懒——它默认信号在整段内的统计特性不变。语音显然不满足这个前提:一句话里清音、浊音、静音交替出现,整段变换得到的是一锅平均。
工程上的解法是分帧。把信号切成二十到三十毫秒的小段,每段做一次变换,横轴时间、纵轴频率,得到一张语谱图。这一步带出新问题:直接切段会在边界产生突变,能量从真实频率漏到邻近频段,叫频谱泄漏。压住它的办法是加窗——汉明窗、汉宁窗把帧两端压到接近零,泄漏小了,代价是帧边缘的信息被削弱,所以相邻帧要重叠,常见重叠一半或四分之三。
代价二:窗长一定,两种分辨率开始互相让步
窗开得长,频率看得细,时间看得糊;窗开得短,时间掐得准,频率挤成一团。二十毫秒的窗,频率分辨率大约几十赫兹,够分辨音高,抓不住一次几毫秒的爆音;五毫秒的窗反过来。这个取舍在 STFT 里是固定的——一旦定了窗长,整段信号都用同一个窗。
真实信号偏偏不配合。低频成分往往持续很久,高频瞬态往往一闪而过,用同一个窗去套,两头都别扭。小波变换的动机就在这里:用长窗看低频、短窗看高频,尺度随频率变。代价是多了基函数和分解层数两个要选的参数,选不好还不如 STFT 稳。
它在哪些信号上会失效
频率成分随时间剧烈变化的信号,是最典型的失效场景。鸟鸣、语音里的辅音、机械冲击、雷达回波,这些的频谱一刻一变,任何固定窗长的时频图都只是折中,细节会被抹掉一部分。要看清瞬态,就得放弃一部分频率精度,反过来也一样。
短信号是第二类。采样点本来就少,频率分辨率天然差,补零只能让谱线看起来更密,不会多出信息——这是初学者最容易上当的一步。第三类是不等间隔采样或缺测数据,标准 FFT 要求等间隔,缺了要先补或者换方法。第四类是强非线性耦合,频率之间互相调制,谱线上冒出一堆边带,单看峰值容易把来源判错。第五类是只留幅度、丢掉相位,重建出来的东西听着像,实际已经不是原信号。
判断该不该用,只问一个问题
你要问的是「由什么组成」,还是「什么时候发生」。前者去频域,后者留时域,两个都要就上时频表示。再补一句实用的:信号在整段内越稳定,整段变换越省事——电机稳态振动、电源谐波、持续的音高,都属于这一类;信号变得越快,越该往分段或小波走。
反过来也成立:如果你的问题本来就不涉及频率,比如只想知道这段录音有多长、有没有削波,那做一次变换纯属绕路。工具的选择取决于问题,不取决于它听起来多专业。
速查:傅里叶变换的四条常识
- 它换的是表示,不是信息;幅度和相位都得留
- 整段变换丢掉时间,要时间就分帧做 STFT
- 窗长定死,时间与频率分辨率只能二选一
- 补零不增加分辨率,短信号就是看不清


