手搓宝匣 · Spectrum microscope

频谱显微镜

在 傅里叶页 学了「时域 ⇄ 频域」?现在拿自己的声音验证一遍: 打开麦克风,你的声音就是实验材料。

本地实时分析不录音 · 不上传

第一步:让显微镜看到声音

所有分析都在你的浏览器里实时完成,声音不出这台设备、不联网、不录音。

仪器① · 示波器 + 频谱柱

说「啊——」:上面是一条抖动的曲线,下面立起一排柱子; 最左边那根最高的,往往就是你的基音。

这就是傅里叶变换在实时发生。上面是时域:空气压力随时间怎么振;下面是频域:你的声音此刻由哪些频率组成。说一声「啊——」,看最左边那根最高的柱子,那通常是你的基音。再拍手一下:宽宽的一片柱子,说明噪声的能量摊在所有频率上。

仪器② · 瀑布频谱

横轴是频率,纵轴是时间,颜色越红越响。吹一声口哨滑音, 看那条亮线画出一道彩虹滑梯——这就是听歌识曲在看的「指纹」。

把每一瞬间的频谱叠成一条彩虹河:横轴是频率,纵轴是时间,颜色越红越响。吹一声口哨,从低音滑到高音,河面上会留下一道明亮的滑梯。听歌识曲认的就是这张指纹图——它不关心你唱什么词,只关心这些亮线的形状。

仪器③ · 音高表

它做的是调音器做的事:在波形里找「每隔多久重复一次」(自相关), 倒数就是基频,再换算成音名。指针偏左是唱低了,偏右是唱高了。

这是一台迷你调音器。它的算法很朴素:把波形和错开一点的自己比一比,找到「每隔多久重复一次」,倒数就是基频。哼一个长音,它会告诉你音名,比如 A4,还有偏了多少音分——一音分是两个相邻琴键距离的百分之一。指针停在中间,就是准了。

仪器④ · 纯音发生器 + 小键盘

按住琴键发声,眼睛盯住上面的频谱和音高表:弹 A4,柱子应该立在 440, 音高表说出「A4」——自己发的声,自己验证。再切到方波, 看 3 倍、5 倍频率上冒出来的柱子,那就是傅里叶页讲过的谐波。

不好意思开口?让机器自己发声。点「发声」,把频率滑到 440,再抬头看频谱:柱子正好立在 440 上——这就是频谱显微镜的出厂自检。换成方波,看三倍、五倍频率上冒出来的柱子,那就是傅里叶页搭过的积木。小键盘按住就响,弹个 do,看音高表认不认得它。

它怎么做到的?

浏览器每秒钟从麦克风取几百帧采样,每帧 4096 个点,交给 FFT(快速傅里叶变换)算出这 4096 个点的频谱, 再画成你看到的柱子和彩虹。一次变换不到一毫秒—— 这就是 1965 年那个「N² → N log N」的算法在实时干活。

你手里的这台显微镜,和现实世界的对应物:

  • 仪器① → 音频工作台的电平表与频谱仪,混音师的日常。
  • 仪器② → 听歌识曲的「声纹指纹」、语音识别的输入图。
  • 仪器③ → 吉他调音器、KTV 评分、乐器校音。
  • 仪器④ → 合成器的振荡器,电子音乐的最小零件。

原理一句话:浏览器每秒把声音切成几百小段,每段交给快速傅里叶变换算出频谱,再画出来。一次变换不到一毫秒,所以它能跟上你的声音。你刚才玩的四件仪器,对应着真实世界里的混音师频谱仪、听歌识曲的指纹、吉他调音器和合成器的振荡器。下次再听到「傅里叶」,你不仅会背定义,还亲手玩过它。

试试看(三个小挑战)

  1. 哼一个长音,让音高表说出它的名字——你哼的是哪个音?
  2. 发生器开到 440Hz 别关,跟着哼,把音高表的指针怼到正中间。
  3. 吹口哨从低滑到高,在瀑布上画出一条尽量平滑的彩虹滑梯。
← 回手搓宝匣重温傅里叶变换 →