众所周知,冲激响应可用于逼真地再现现实房间的声学特性。冲激响应的录制有一定的技术难度,且要用高端设备才能获得最佳品质。要构建具有空间特性的户外冲激响应,还会面临更多的困难。声音设计师都知道,在将发声体放在户外的情况下获得逼真、沉浸的声学效果绝非易事。
何为冲激响应?
简单来说,冲激响应的作用是在设计当中代替自然混响。从技术上讲,可用其评估系统或空间如何对很短的声音或狄拉克尖峰做出响应,然后将这种直接冲激用在卷积混响插件中以再现场所的声学特性。
另外还有两种构建实际冲激响应的方法,但消耗的计算资源会更多一些。比如,录制噪声序列。在使用设备(无论是专业录音棚设备、消费级高保真音响还是游戏主机)测量房间以优化扬声器或在给定房间中定位声源时,大家应该听到过类似的情况。
除此之外,还有第三种方法:录制(理想情况下)在时间维度上均匀覆盖所有频率的扫频信号。不过,这种方法大部分都是用在专业的音乐和声音环境中。
最为实用的是录制冲激信号,因为其可直接用作冲激响应。毕竟,本质上就是如此。对于另外两个方法,则需要设法将其混音为冲激响应。
优点和缺点
冲激响应可以反映现实房间的声学特性。不过,有时会因为所用设备(播放和捕获设备)产生测量误差或人为痕迹。总的来说,就跟照片一样,效果还是非常逼真的。
然而,缺点正在于此:3D 对象可能并不像照片那么真实、细致或鲜明。不过,我们可以根据需要加以调整:拉伸、修正或部分调换。冲激响应有其自身的局限性。不过,还是可以做一些处理的。比如,颜色修正(EQ 处理)、动态变化、时间拉伸和音高变换。当然,算法混响的作用远不止于此。但是,终归还是没有那么真实可信。最终,算法混响和冲激响应之间的取舍取决于要讲述怎样的故事、要如何将玩家带到虚拟世界中,以及灵活性和创造力是否比游戏/作品风格的合理性和真实性更重要。
广阔的户外空间
通常,游戏中会使用录音棚录制的声音或相对通用的空间信息。这样可以在录制后将其放到不同的场所中。一般来说游戏中的场所有很多,无法到户外录制每一场所(或类似环境)的所有声音。如此一来,就需要应用混响来模拟场景位置的自然回声。倘若应用了不恰当的混响,玩家很容易发现录音是在录音棚中完成的,或者场所跟当前播放声音的场景不一样。
对此,一般会通过构建冲激响应来加以解决。为此,需要前往所需的场所,制造响亮的声音(冲激信号、噪声或扫频信号)并录制由此产生的效果(响应)。在获取冲激响应后,将其放到卷积混响插件中,与音频信号进行卷积处理。这样的话,声音听起来就会跟现场录制的一样(当然只是理论上如此,实际并没有那么简单)。
对有些场所来说,要做到这一点极其困难。有的时候,条件压根就不允许。如果地方很大,声音得特别大才能获得不错的信噪比。如果是在人流密集的地方(如广场),会有过多干扰。如果是难以抵达的地方,可能会无法获得所需的各种设备。如果是禁区,可能会很难获得录制音频的许可。对于 Fields & Spaces - Outdoor Impulse Response 库,我们找到了方法来再现这些场所,并确保能够捕获所有空间信息(高达三阶 Ambisonics,几乎没有背景噪音)。同时,确保获得很宽的动态范围。
空间特性
采用单声道格式录制冲激响应相对来说比较简单。只需一个声源(扬声器)和一个接收器(话筒),并将其置于房间里的适当位置捕获冲激信号即可。
采用立体声格式录音跟这也差不多:同样是将扬声器放在房间里,不过要用两个话筒捕获信号。同时,还要选用合适的立体声装置。仅此而已。
对于环绕声,有一些值得探讨的设计问题:是想将声源置于环绕声场之内以便捕获分布较为均匀的环绕声像?还是将声源置于声场以外来在指向性、胶囊话筒/扬声器之间的时间延迟上另做处理?
对于 Ambisonics,这个问题不怎么明显。因为 Ambisonics 话筒是重合阵列,所以无法在装置之内放任何东西。所有胶囊单元都处在完全相同的位置(同样,只是理论上如此)。所以,肯定是将声源置于声场以外。
空间特性相关问题
现在,情况变得更加复杂了。有个概念叫“真实立体声”。也就是说,在房间中不能用两个话筒(立体声装置)对某一声源进行录音。因为在将声源放在房间内的不同位置时,同一话筒位置的混响会有所不同。如果将声源放在偏左一点,相较右侧墙壁的反射及大量其他偏移回声,左侧假想墙壁的反射会更早到达话筒。直达信号听起来也不太一样,明显程度会因所用立体声装置而异。所以,真实立体声会更接近现实一点,因为录制的点声源不是一个而是两个。想象一下音乐厅中的管弦乐队:跟最左侧的小提琴相比,最右侧的贝斯会处于不同的混响位置。您可以将两个立体声 IR 融为一体来表现最左侧和最右侧之间的种种变化。
显然,现实中并不是这样的,不过要接近很多。而且,立体声像更充实、更细致,对设计师来说也更容易理解。缺点是播放时要两倍的计算量,播放时的 CPU 成本也要高两倍。这样的话会播放两个不同的立体声冲激响应,相当于有 4 个混响声道。
对于环绕声,该怎么办呢?是不是也可以像前面说的管弦乐队那样来处理呢?也不是不行。您可以以环绕声格式来呈现真实立体声:针对前方区域的两个不同位置进行录音。不过,也仅仅适用于这种情况。对于不确定发生在听者前方、两侧还是后方的声音,情况会更加复杂一些。为了获得跟真实立体声差不多的效果,对于 5.1 系统(小型装置)中的每个扬声器,都要录制专门的冲激响应。假设舍弃 LFE 和 Center 声道,而只保留前置和后置声道,就会有 4 x 4 = 16 个混响声道,而非 4 个环绕声混响声道。这对 CPU 来说是个很重的负担。
对于 Ambisonics,可能并不需要为每个胶囊单元构建一个 IR。不过,录制的声源位置越多,空间分辨率就会越高。而且,要在八个边角位置捕获信号才能获得有别于普通立体声的真实立体声。这样会变得更复杂:会有 4 条音轨 (1OA) x 8 个声源位置 = 32 个混响声道。除非游戏以混响作为主要特性,否则对运行时的游戏来说就太过了。这还只是一阶 Ambisonics。对于高阶(如三阶 Ambisonics),会有 128 个声道。若录制的声源位置有 8 个(八个边角位置),对于 3OA 会创建大量不含信息的空白空间。
解决方案
IR 对游戏来说似乎太复杂了,负担也太重了。但空间混响并不仅限于冲激响应,空间算法混响也遵循相同的道理。
那么,现在该怎么办呢?首先,真实立体声相关原理并不一定适用于环绕声。我们只需要在设计的时候牢记于心并多加留意,以便在 3D 环境中找到恰当的位置来放置和使用混响。其次,混响的有些部分可以更好地表示场所,有些部分则可更好地表示声源的位置(相当于尾音之于早期反射)。
对于 Rooms & Spaces 和 Fields & Spaces,我们着重捕获尾音和漫反射冲激响应,尽量避免产生早期反射。早期反射相对比较容易计算,因为回声少很多且时间更短。比如,使用 Audiokinetic 的 Reflect 插件就可实现这一点。它可以根据游戏中的实际 3D 对象/障碍物创建早期反射。通过为尾音添加冲激混响,可构建身临其境的混响并灵活地加以运用。即使在运行时处于运动状态,也能提供出色的声源定位效果。
评论