← 全部文章

2026-08-16 · 7 分钟阅读

“赫兹”究竟是什么,以及为何两种计数方式存在分歧

1赫兹等于每秒1个周期。用Python生成一个528赫兹的音调,然后用两种独立的方法进行计数:得出的结果在最后一位数字上有所不同,而其中的原因值得了解。


频率数值被不断兜售,却几乎从未被测量过。在讨论某个特定频率是否具有某种作用之前,有必要先明确这个数值究竟代表什么,因为后续出现的诸多困惑,竟有相当一部分源于人们将“528 Hz”当作名称而非具体数值来使用。

1赫兹等于每秒1个周期。这就是它的全部定义。该国际单位制(SI)单位以海因里希·赫兹的名字命名,其含义正是如此:某现象每秒完整地发生528次。528赫兹的音调,是指气压在一秒内上升并回落至起始位置528次。

先做一个,这样才有东西可测量

这并不需要合成器。纯音就是正弦波,而正弦波由三条线组成:

import numpy as np

sr = 44100                                   # samples per second
t  = np.arange(int(4 * sr)) / sr             # four seconds of time stamps
y  = np.sin(2 * np.pi * 528 * t)             # 528 cycles per second

之所以有 2 * np.pi,是因为正弦波的一个完整周期为 2π 弧度。乘以 528 后,t 的每一秒中就包含 528 个这样的周期。音频合成中的其他所有内容,都是以此为基础的延伸。

第一项统计:零交叉点

如果一个波每秒完成 528 个周期,那么它每秒会在上升过程中经过零点 528 次。所以数一数:

ups = np.sum((y[:-1] < 0) & (y[1:] >= 0))    # upward zero crossings
print(ups / 4)                               # per second

在超过四秒的时间内,这返回的结果是 每秒527.88个周期,而不是528。

第二项内容:FFT

另一种方法是直接读取整个信号,然后确定它由哪些频率组成。傅里叶变换将波分解为各个分量,其中最强的那一个就是答案:

spec  = np.abs(np.fft.rfft(y))
freqs = np.fft.rfftfreq(len(y), 1 / sr)
print(freqs[np.argmax(spec)])                # 528.00

这返回了 528.00 Hz

他们为何意见不一

两种可靠的方法,相同的信号,但末位数字却不同。人们很容易因此认为其中一种方法出了问题。其实两者都没有问题。

零交叉计数偏低,是因为四秒的采样窗口中不包含整数个周期。在528 Hz频率下,四秒内包含2112个完整周期,外加一个不完整的周期片段。 计数器无法统计该零交叉片段,因此将其忽略,导致平均值略微偏低。这并非528 Hz特有的现象:当任何频率的周期长度无法被时间窗口整除时,都会发生这种情况。延长时间窗口后,误差会减小,因为在更大的总数中,被忽略的一个零交叉片段所占的比例就更小了。

这里的FFT结果看起来非常精确,但这反而值得怀疑。其分辨率也由窗函数决定:四秒的音频会产生间隔为0.25 Hz的频率 bins。528 Hz正好落在其中一个 bin 上。 一个频率为 528.1 Hz 的纯音会被归入最接近的频段,而 FFT 结果看起来对这个错误结果同样“确信无疑”。

有价值的结论并非某种方法更胜一筹,而是每项测量都带有其测量窗口的特征,而未说明测量方法的数值,其实只呈现了其全部信息的一半。正因如此,本频道的专题讨论在公布数据时,都会同时说明该数据的得出过程。

接下来的两件事

**即使你听不到,频率仍在播放。**将上述三行代码中的528替换为1,生成的文件就不再是静音的。它包含一个每秒完成一个周期的全振幅波。人类的听觉范围大致在20 Hz到20 kHz之间,因此1 Hz完全不会产生任何音高。 “无法听到”和“不存在”是两种不同的表述,而这种区别正是为什么一个文件中可以存在4 Hz的双耳差,而你却从未听到过4 Hz:它作为两个可听音调之间的差值而存在,而非作为音调本身而存在。

频率翻倍听起来像是一个步骤,而不是两个。 528 Hz 和 1056 Hz 相差一个八度,而从 1056 Hz 到 2112 Hz 又是一个八度,尽管第二次跳跃增加的赫兹数是前一次的两倍。 音高感知大致呈对数关系,这就是为什么音乐音程是比率而非差值。这也是为什么590 Hz和438 Hz这两个频谱质心之间的距离,比单纯的减法运算所显示的要远得多。

与频率声明相关的部分

A440是衡量所有“调至X赫兹”声明的基准,它是一种约定,而非自然常数。 1939年,伦敦召开的一次国际会议将标准定为440 Hz。在此之前,法国早在1859年就通过立法将标准定为435 Hz,而演奏标准音高会因城市和世纪的不同而有所变化。如今,柏林和维也纳的演奏音高接近443 Hz,而纽约则接近442 Hz,因为演奏者更偏爱那种更明亮的声音。

这并不能证明特定频率是否具有某种作用。它推翻了这一论述的另一半:即认为有一种调谐方式属于自然,而其他调谐方式则是对其的偏离。它们都是相互一致的。 剩下的问题是,特定频率是否会产生特定效果,这是一个经验性问题,需要通过一项项研究来解答,而本期刊的其他文章也对此给出了诚实的回答。

用两种方法计算一个音高,重点并不在于0.12 Hz。关键在于,一个未经过测量的数值仅仅是一个标签,而测量过程则长达三行。

参考文献

本文内容属于信号处理的定义性内容,而非临床证据:包括《国际单位制》(SI)对赫兹的定义,以及离散傅里叶变换和窗函数的标准行为,这些内容均通过 numpy 实现。 音乐音高沿革:1859年的法国标准音叉(435 Hz)和1939年伦敦会议制定的标准(440 Hz)。

关于音频信号处理的教育内容。本内容不构成医疗建议。

Video: “赫兹”究竟是什么,以及为何两种计数方式存在分歧 Listen · FFT-verified session “赫兹”究竟是什么,以及为何两种计数方式存在分歧 Watch on YouTube →