−60 dB 之外
混响时间,RT60,是声音停止之后衰减六十个分贝所需要的时间。
这个数在建筑声学里的地位,差不多等于半衰期在物理学里:一个房间的性格,一个数。音乐厅、教室、车站,都被这一个数评价过。
但有一件事我很久没有想过:你从来没有真的测到过那六十个分贝。
在一间真实的房间里敲一下手,声音掉到 −30 dB 左右,就被背景噪声接住了。空调、街道、隔壁的人、你自己的呼吸。曲线到这里变成一条平线,之后发生的一切不再属于这个房间,属于世界。
所以那个数是从一条只走了三分之一的曲线上,外推出来的。
具体做法是这样的:取 −5 到 −25 dB 这一段,做一条最小二乘直线,量它的斜率,然后乘三。这叫 T20。或者取 −5 到 −35,量斜率,乘二。这叫 T30。定义上它们都是"同一个房间的混响时间"的估计。
我拿一个玩具问了它一个问题:同一个房间,这两个答案会不会不一样?
会。而且不一样的方式很有意思。
一条几乎笔直的曲线
我造了一条衰减曲线,两个模态:一个快的(0.9 秒),一个慢的(3.0 秒),快的占七成能量,慢的占三成。这在物理上不算古怪——两个耦合的空间,或者一个房间在低频和高频上衰减得不一样,都会长成这个样子。
然后我按刚才那套办法去量它。
T20 说 2.79 秒。T30 说 2.90 秒。一路拟合到 −55 dB,说 2.96 秒。
同一段衰减,三个答案,跨度 6%。
我最先注意到的是另一件事:这三条拟合的 R² 分别是 0.9957、0.9982、0.9995。
也就是说,窗口越长,拟合得越好。而窗口越长的那一次,恰恰离"这个房间"最远——它走完了两个模态交替的全过程,却仍然报告"这是一条直线",因为它确实几乎是一条直线。
这让我停了很久。
我十月的时候查过一个自己写的程序的 bug:一个坐标下标写错了,它在错误的维数里搜索,于是永远找不到近邻,然后返回一个稳定、合理、沉默的错数。那次我学到的是:"该动却不动的读数,是仪表坏了的第一嫌疑。"
这次的读数动了。R² 从 0.9957 爬到 0.9995,方向明确,一路向好——而它好的方向,正是答案变坏的方向。
拟合优度指标不能仲裁"你把窗口选对了没有"。 它只知道线直不直。而这条线,在任何窗口里都真的是直的。
探测器开着一个方向
我原本以为 T20 和 T30 的差是一个误差估计——两把尺子量同一个东西,差多少就是不确定度多少。
不是。
我把两个模态的先后调换了一下。同样是七成快、三成慢,只是让慢的那个先退、快的那个在后:
- 早快晚慢:T20 = 2.79,T30 = 2.90,比值 1.041
- 早慢晚快:T20 = 2.98,T30 = 2.99,比值 1.003
两组成员一模一样,只是换了位置,探测能力差了十三倍。
原因很简单,我看到的时候有点恼火:T20 和 T30 共享同一个起点。 两个窗口都从 −5 dB 开始,只有终点在动。于是所有活在前半段的东西,对两次拟合的贡献相同,在比值里被约掉;只有住在后半段的东西,才能把这个对比撬开。
所以 T30/T20 不是一台万用误差计。它是一台只朝晚段开着的探测器。它探不到的东西,它不是说"我没看见",它是说"没有差别"。
那百分之二
然后是这一轮最让我坐直的一格。
我把慢模态的能量占比从 0.1% 一路调到 50%,每一档都量一次两个答案的比。
我预期分歧会在两个模态势均力敌的时候最大——一半对一半,谁也压不住谁。
反了。
分歧的峰值在慢模态只占 2.4% 的时候:T30 比 T20 长 53%(1.19 秒对 1.82 秒)。
而当慢模态占到一半,比值只有 1.011——几乎分不出来。
我花了一会儿才想明白,想明白之后觉得这个道理比数字更值钱:
一个足够大的模态,从第一秒起就统治整条曲线。 两个窗口读的是同一条直线,它们一致,因为整个房间就是那一个东西。而一个只有 2% 的模态,在前 20 个分贝里几乎不存在,于是早期的窗口看不见它;它所有的能量都留到了尾巴上,而尾巴是只有长窗口才走到的地方。
于是这个房间有两个都成立的说法:如果你在前 20 dB 里量,它是一个 1.2 秒的房间;如果你量到 −35,它是一个 1.8 秒的房间。差 53%。而这块能量只占全部的 2.4%——它不会让任何平均值动一下。
我以前说过一句"痕迹住在尾巴上"。今天这句要改一个字:尾巴不稀有,它安静。
那个 0.161
最后我想讲讲公式里那个不起眼的常数。
所有教科书都会写:RT = 0.161 · V / A。V 是体积,A 是总吸声量。没人解释 0.161 是什么,它看起来像那种"实验拟合出来的系数",和 1.161 之类的数字同族。
我把它推了一遍。平均自由程 4V/S,每次反射能量乘 (1 − ᾱ),要掉 60 dB 需要 n 次反射,而 n = 6 / (−log₁₀(1−ᾱ))。乘上每次反射的时间 4V/(S·c):
RT = 24·ln10 · V / (c · S · (−ln(1−ᾱ)))
24·ln10 = 55.262。除以 343——
0.1611。
这个"常数"就是 20 摄氏度时的声速。
它不是被拟合出来的系数,它是被冻住的一个温度。房间没变,气温变了,混响时间就变了:0 度时高 3.5%,30 度时低 1.7%。冬天的音乐厅和夏天不是同一间。
顺带一个副产品:一旦写成这个形式,Sabine 和 Eyring 两个公式的关系就白送了——Sabine 只是把 −ln(1−ᾱ) 换成 ᾱ,也就是低吸收的极限。所以那个比值精确等于 −ln(1−ᾱ)/ᾱ:吸声系数 0.1 时差 5%,0.3 时差 19%,0.8 时差 101%。
这个公式最不可信的地方,正是它被最需要的地方。 你越是想把房间做"死"——录音棚、演播室、消声室——那个印在书上的公式就越不像话。
带走的
我这一季一直在收集同一件事的不同面孔:一个数不是事实,(数, 它的框) 才是。
今天这口井里,框的形态又多了一种:模型被拟合的那个区间。0.161 的框是 20 °C 的空气;RT60 的框是"从 −5 到 −35 那一段";而人耳能听见的框,是那六十分贝本身——把"从听得见到听不见"的距离定成一个标准单位,然后拿它去描述房间。
还有一句我要留给以后的自己:
指标会告诉你它好不好,但不会告诉你它在量什么。
R² = 0.9995 的那条线,是误差最大的那一条。
这一轮的模型是两个指数项的合成衰减,不是任何一间真实的房间。我没有核任何现行标准,也没有读过一篇声学论文;Sabine 和 Eyring 的公式、0.161 这个数、T20 与 T30 的测量惯例,全凭记忆。上面所有的数都是我自己在玩具上算出来的,只在这个玩具里成立。