你有没有发现,电子游戏里的音效即使用普通的立体声耳机听,也能听出 3D 的方位感?这背后有一些挺巧妙的科学和数学!

想听出三维空间,并不需要高级的 5.1 环绕声音响。毕竟,你的耳朵本身也只是一对立体声接收器。真正干活的是你的大脑:它做了一大堆计算,利用两只耳朵听到的细微差别,算出声音是从哪里来的。

读这篇文章时,请戴上耳机。

1. 时间差

从你右边传来的声音会先到达右耳。所以,只要让左耳的声音比右耳晚那么一点点,你的大脑就会把它放到右边。

用一点经典几何就能算出这个延迟该是多少。把你的头看成半径为 \(r\) 的球。从角度 \(\theta\) 传来的声音要到达较远的那只耳朵,得多走一小段路:一段直线,再加上一段绕着头弯过去的弧线。把这段额外的路程除以声速 \(c\),就得到延迟:

\[\Delta t = \frac{r}{c}\,(\theta + \sin\theta).\]

对于正右方传来的声音,结果大约是 0.65 毫秒。而你的大脑能分辨小到 10 微秒的差别。

只有时间差。两只耳朵的音量相同。

2. 音色与音量

你的头还会把远侧的声音闷住。不是嫌你头大,但跟高音的声波比起来,你的头确实算大的。低音波长很长,很容易绕过你的头;高音则大多被挡住了。这和你隔着墙能听见邻居家音乐的低音、却听不清人声是同一个道理。所以远侧的耳朵听到的是一个更小声、更沉闷的版本。

同样,用一点三角学就能算出这种效果有多强:它取决于远侧的耳朵在你(大致呈球形的)头上离声源绕了多远。

时间差加上头部遮挡。远侧耳朵的高音被削弱了。

3. 前与后

不过有个问题:到目前为止,一切都是对称的。从右前方 30° 传来的声音,和从右肩后方 30° 传来的声音听起来一模一样,延迟相同,音量也相同。

幸好,我们的耳朵并不对称。耳朵朝向前方,耳廓上的褶皱会把前方来的声音反射进耳道。而后方来的声音得先绕过耳朵的背面。

这些反射会在 6–12 kHz 的范围内刻出一些”凹陷”,削弱某些频率的音量。凹陷的位置会随声音的方向移动。每个人的耳朵都略有不同,但已经有足够多的人测量过自己的耳朵,可以据此建立一个平均模型,叫作头部相关传输函数(HRTF)。看看它对你有没有效果吧!

把声音放到你身后,再关掉 HRTF。圆环标出的是镜像位置。

4. 合在一起

声音设计里的数学真的很酷!还能用它做很多好玩的事!

声音在水中的传播速度是空气中的四倍多,但水更”稠”,会从声音里带走更多能量。所以要做水下音效,就把延迟缩短,并且把能量高的高频削弱得比低频更多。

或者在物体从你身边经过时不断重新计算,你就得到了多普勒效应!

你可以调节旅行者们沉入水下的深度,快速拖动他们来听多普勒效应,或者干脆放松下来,听音乐在你身边起舞 :)

拖动可移动,点击可静音。滑块让声音沉入水下。
乐曲《Travelers》(旅行者),作曲 Andrew Prahlow,出自《星际拓荒》(Outer Wilds,Mobius Digital,2019)

这里唯一新增的效果与距离有关:乐器离你越远,声音就越小(平方反比定律),声音传到你耳边所需的时间也越长。

参考文献

  • Woodworth, R. S. (1938). Experimental Psychology. Henry Holt.
  • Wightman, F. L., & Kistler, D. J. (1989). Headphone simulation of free-field listening. II: Psychophysical validation. The Journal of the Acoustical Society of America, 85(2), 868–878. doi:10.1121/1.397558
  • Wenzel, E. M., Arruda, M., Kistler, D. J., & Wightman, F. L. (1993). Localization using nonindividualized head-related transfer functions. The Journal of the Acoustical Society of America, 94(1), 111–123. doi:10.1121/1.407089