← 探索新知
ASTERXOR / 探索新知

声音长什么样

声谱图把转瞬即逝的振动,变成一幅可以阅读的图像。选择怎样的窗口,决定了哪些细节会变清楚。

深色声谱图上依次出现一条金色水平线、两条平行线,以及向上倾斜的扫频。
一个音、两个音,再到逐渐升高的扫频。这是四秒合成信号的声谱图。
探索新知ASTERXOR / LEON LEUNG

两个音同时响起,为什么麦克风只画出一条线?

录音可以看作一连串声压测量值,再用数字表示出来。每一个瞬间,不同声音的贡献都会加在一起。我们熟悉的波形图追踪的是这个总和,并不会给每个音单独安排一条轨道。要看清组成部分怎样随时间变化,就需要换一种视角。

声谱图让时间变得可见,却不必让时间停下来。
ONE LINE

一条波形,容纳多种声音

先从稳定的440 Hz正弦波开始,也就是每秒重复440个周期。它的曲线规律地上升、下降。再加入一个660 Hz正弦波,形状就变复杂了。两个成分都没有消失,只是共享同一串数值。傅里叶变换可以用一组重复变化的成分,重新描述这串数值。

本文的两个音直接由公式生成。四秒信号先播放440 Hz,再让440和660 Hz同时出现,最后用一段从300 Hz升向1,800 Hz的扫频收尾。各段之间留有短暂静音。整个实验没有使用麦克风、歌曲或任何私人录音。

两幅波形图比较规律的440赫兹正弦波,以及440与660赫兹叠加后更复杂的波形。
FIG 01单音与双音混合信号各自的20毫秒片段。纵轴是数值幅度,不是经过校准的声压。
A SMALL VIEW

用一个移动的小窗口观察

如果对整段录音做一次傅里叶变换,就能知道整个时间区间里有哪些频率参与,却不会得到一条便于查看它们何时出现的时间线。于是我们改为取出一小段,分析它,再向前挪一点,重复这个过程。这就是短时傅里叶变换,简称STFT。

每次变换之前,先用汉恩窗让片段两端平滑收拢。突然截取一段信号,会让能量散布到其他频率上;渐变的窗口能减轻这种效应,但也会让谱峰变宽。把得到的频谱按时间排成相邻的列,各频率强度的变化就组成了声谱图。

上方为波形,下方为声谱图:先出现440赫兹的水平线,再出现440和660赫兹的两条水平线,最后是一条从300赫兹向1800赫兹上升的线。
FIG 02同一个四秒合成信号的波形与声谱图。颜色表示频谱的相对强度,不是实际测量的声压。
READ THE PICTURE

越高代表频率越高,不是声音越大

从左向右读主图。时间沿水平方向推进,较高的频率位于画面上方,较亮的颜色表示较强的成分。第一段画出一条水平亮线,第二段有两条,最后的扫频则斜着向上。它之所以向上,是因为频率在升高,不是音量在增大。

主图以每秒8,000个采样点的速率,每次分析512点,也就是64毫秒的信号。相邻窗口的起点相隔8毫秒。原生频率格点间距为15.625 Hz,因此440 Hz单音的最高点落在437.5 Hz,660 Hz单音则落在656.25 Hz。出现这些相邻格点上的峰值,是正常结果,并不意味着原始音调变了。

0.6秒、2.0秒和3.4秒的频谱,分别出现一个峰、两个峰,以及位于约1050赫兹附近的较宽峰。
FIG 03三个64毫秒片段,解释主图中的三个时刻。扫频在窗口内持续变化,因此它的峰更宽。
THE COMPROMISE

多观察一会儿,就能分清更小的差别

另一组测试让440 Hz和470 Hz同时出现,稍后再加入一个只持续一个采样点的脉冲。使用16毫秒窗口时,两个相近的音合成了一个可检测的峰。使用128毫秒窗口时,则能检测出两个峰,分别接近437.5 Hz和468.75 Hz。观察时间更长,就有更多依据区分两种变化速率。

但再看那个脉冲。在较长窗口的图中,它在时间方向占据的范围更宽。只要一个分析窗口包含了那个瞬间,就可能记录到它。长窗口有利于分开相近频率,短窗口则更容易准确定位突变。没有一种窗口能对所有问题都做到最好。

并排的声谱图中,16毫秒窗口将440和470赫兹合成一条宽带,128毫秒窗口将其分开,同时也让脉冲在时间上变宽。
FIG 04同一组独立测试信号,使用两种窗口长度和统一的颜色标尺。长窗口分开了相近音调,却把短促脉冲在时间方向拉宽。
READ THE SCALE

颜色,也是一种选择

图中使用相对于图内峰值的分贝数,显示范围为−60到0 dB,数值由加窗后变换结果的幅度计算而来。它不是声级计的读数,这里的0 dB也不是静音。即使信号完全不变,修改参考值或颜色范围,也会改变画面的样子。

同样,让窗口重叠得更多,可以让时间轴上的采样更密,却不能消除窗口长度带来的取舍。补零可以画出间距更密的频率格点,却不会让原本的观察具有更强的分辨能力。图像看起来平滑,和两个音真正能被分开,是两回事。

WHAT IT REVEALS

一张地图的用处,也来自它的取舍

理解坐标之后,图像就成了有用的线索。稳定音调通常留下水平痕迹,扫频会倾斜或弯曲,短促的咔哒声则可能在竖直方向铺开,因为它包含较宽的频率范围。真实人声和乐器要复杂得多,会有谐波、不断变化的包络,以及重叠的声源。

这些颜色无法告诉你声音究竟由什么产生,也不能判断它是否悦耳、重要或安全。图像也不能代替聆听。它的作用更朴素,也更实用:让你指出某种模式从哪里开始,哪些频率同时出现,以及什么正在改变。原本一闪而过的事件,变成了可以细看的对象。

继续阅读

SciPy · ShortTimeFFT ↗SciPy · Hann window ↗NumPy · Discrete Fourier Transform ↗

所有插图均来自随附计算。生成的音频仅作为复现文件保留;本文无需音频播放器即可阅读。

留一个想法带走

声谱图无法让每种细节同样清晰。理解自己希望它展示什么,才是读懂它的开始。