I在这个系列中,我们广泛地审视了过去、现在,以及新出现的混响技术,并且从沉浸式和空间化的角度评论了他们。在之前的文章中,我们讲到了沉浸式混响在虚拟现实中如此有挑战性的原因,讲到了经典混响算法背后的一些技术,也讲到了我们可以怎样通过虚拟声学算法模拟声音传播。在这篇文章中,我们会讨论如何结合这些方法来创造高效而又引人入胜的空间混响特效。这篇文章也是Audiokinetic即将到来的空间化混响技术的预告。
在之前的文章中,我们讲到了创造新混响算法背后的推动力以及一些背景,理解了这些新工具是怎么产生的。理解经典混响算法的局限性以及声音传播模拟法的各种分支,在我们使用这些新特效时会非常有价值。就像随着双耳声和ambisonics空间化声像摆位的出现,新的声音设计指南也在出现;使用动态空间混响也需要有新的设计范式
虽然新颖空间音频技术的需求是由虚拟现实的沉浸式质感所激发的,但它们用于任何非VR平台的互动声音设计时依然是非常强大的工具。我们怎样将混响空间化,又怎样让这一特效为未来的混音做出贡献?让我们探索一下在前几篇文章中讲到的一些技术的实际意义,并且研究一下在Audiokinetic即将推出的动态早期反射技术开发过程中得到的一些经验教训吧
混合混响器
用空间混响器时,我们的目标是通过和直达声一样的声像摆位算法将混响空间化。为了使其成为可能,混响器需要提供一些关于关键反射方向和距离的信息。虽然有些技术——比如基于光线的模拟和基于波的方法——能获得很好的空间感,但它们也有一些局限性。比如, 光线法非常善于模拟早期反射,但对于后期反射没办法提供真实的渲染。另一方面,随着我们开始计算高频的传播,基于波的方法就会变得愈加昂贵。有趣的是,随着回声密度在混响器中增加,输出也会越来越趋于漫反射,空间精度也就不那么必要了。由于这些原因,将混响视为随时间变化的连续阶段是很有用的,这让我们能在每个阶段选择最合适的混响方法。为了做到这一点,我们也需要保证这些阶段能很好地混合在一起,而且能够形成一个完整的混合混响算法
看看我们手中的各种技术,我们发现基于波的方法最突出的一点就是模拟精度。这些技术在基于游戏几何空间生成不同冲激响应(IR)时会很有用,这样会最小化在为大型虚拟空间指派混响属性时的工作量。不幸的是,这些方法的计算成本对于大部分实际应用来说还是高到无法执行。在现实中,经典混响的灵活性和感官优势还是能弥补它们使用上的不便 。因此,经典多声道混响器,比如ambisonics冲激响应,对于后期混响是很棒的选择。大部分多声道后期混响器共有的局限性就是缺乏互动性早期反射。通过结合光线法来为早期反射提供信息,我们可以组成一个混合混响器。出于混合混响器的目的来使用基于光线模拟的好处之一就是能对每条独立的反射有很好的控制,这类方法因而成为了潜在的强大声音设计工具。
走向新的沉浸式声音设计范式
使用基于光线的早期反射,我们能模拟这些反射的起始位置。在虚拟几何空间内有了听者和发声体两者的位置,我们就能通过每个反射的延迟时间和空间定位来生成特效。独立的定位让双耳声声像摆位器中能进行合适的HRTF空间化。反射达到听者所经过的距离会为延迟设置长度,模拟声音缓慢移动的特性。每个反射的幅度也可以根据距离进行调整。比如,紧挨着一个离房间角落很近的声源意味着声源在很短的延迟后就能听见,这样会让声音听起来更大。想要调整特效的频率内容,系统中也可以添加音频滤波器,以此来模拟基于频率的墙壁吸收。通过这些参数,基于光线的声音传播模拟法的信息可以用于创造一个有很多活动部件的系统。确实,在合理的计算成本下提供空间提示的同时,空间混响也应该有适应性。混响仍然是一种特效,而它的审美品质必须优先于它的模拟精度
和其它混响类似,空间混响特效也需要调整来适应各种设计情境。比如,有的时候特效需要微妙一些,让混音中的空间更有利于语音清晰度;又或者可以模拟当您接近声源时产生的临近效应。
在别的场合下,当太多声音同时播放时,为进入混响器的声源进行优先级划分是比较好的, 因为对每个声源的反射路径单独进行计算并不是很好的计算资源应用方式。
在另一种情况下,对于关键反射进行超过物理学的夸大会更为合适。比如,当主角走过狭长走廊时, 脚步声的反射处理可以加强对近身两堵墙的感知度,以此制造出一种听觉张力。也许几何空间是一个小房间的样子,但如果我们模拟更大空间的声学特性,效果听起来会更好。
想要保证特效的频率响应有助于整体混音的效果,关联到每堵墙的音频滤波器就不会只复制不同物质的吸音特质,而是也要组成整个目标混音的一部分。
基于所有这些例子,我们能看得出保持创意上的灵活性对于这种空间特效的重要性,如果没有这种灵活性,则空间特效就只能由虚拟的几何空间和模拟算法来驱动了
动态早期反射
现在我们来详细研究这些动态的基于光线的早期反射,以及如何保证它们能带来创造性的机会。如果我们再次看看混响器的IR,目标是只调整前几个回声,那么这些反射在时间上依然足够稀疏,可以被视为是镜面反射(清晰可辨的),而后期混响会更密集,混合在一起形成漫反射混响。我们首先想调整的是幅度。通过各种设置,比如墙壁吸收和距离衰减,可以让每个反射都遵从一个可调的衰减。幅度这个参数很强大,能强调出衰减效果和突出某些反射,也可用于单独控制这些反射,让它们独立于通常用于控制后期混响干湿比的距离参数。比如在邻近效应中,听者非常接近声源,为了真实感,我们可能会想静音后期混响,只保留一定程度的空间化早期反射。
调整早期反射幅度。来自【1】的修改图像
每个早期反射之间的时间延迟也需要调整。到各种反射表面的距离、声速、听者的位置,以及发声源的位置可以一起使用,来计算各种延迟的长度。声速也是一个很有趣的参数,可以用于夸大或最小化感觉到的空间大小
因为每一帧上定位都可能改变,所以延迟长度需要是动态的。这些被称为时变延迟线,或分数延迟。当分数延迟的长度增加或减少时,只要变化足够大,有时就能听到多普勒效应 。这是由于需要读取更多或更少采样点并插值到新的延迟长度中,基本就是重采样。
调整早期反射的时间延迟。来自【1】的修改图像
最后,所有这些反射需要单独做空间化。做到这点的简单方法是使用中间空间总线。比如,反射可以输出到一个更高阶的ambisonics总线,以此来保存它们的入射方向。之后,这个更高阶的ambisonics总线可以使用一个特定的双耳声插件输送混音到耳机中。这个程序会保证各条反射在听者旋转的全过程中始终保持连贯统一,同时最小化在反射上所使用的HRTF滤波器的计算成本。
根据其入射角度通过HRTF之前的空间化中间早期反射模式
所有这些设置可以集中到一个界面上来对特效做参数化控制。在下面的例子中,我们可以看到各种距离衰减曲线被用于确定衰减和散布(基于反射距离和听者到发声点的距离)。我们可以改变时间伸缩来调整延迟,以此影响感知到的房间大小。每堵墙都可以单独打开和关闭,这样就可以solo一面特定的墙并合适地调整它的设置。
在Wwise中做空间化早期反射界面原型设计
虚拟几何空间
虚拟几何空间是控制早期反射行为的关键信息来源。双耳声插件比较流行的一个方法就是使用一个环绕听者的固定矩形的房间。确实,将双耳声特效限制在直达声路径上,会导致比较差的空间化声音效果,所以这些特效需要一定程度的空间化反射。为了做到这点,使用各种大小的固定房间预设值会是一个简单的解决方案,不用依赖游戏内的几何空间信息。这些静态定位的反射只需要通过同样的一组HRTF滤波器进行滤波。
环绕听者的固定房间。每个反射的定位都是静态的
想要有更为精细的特效,我们可以使用游戏内的光线投射来找到最近反射表面的位置。这通常是通过从一个点发出各种方向的光线来做到的。一条光线就是一条直线,而光线投射就是找到游戏中与这条直线相交的表面和对象的操作。这个操作通常由游戏引擎进行。为了生成这个特效,目标声音将被混音到一条单声道总线中,这条总线的输出此后会作为反射算法的输入值。混音后的声音之后会在阻挡光线的最近表面上反射,根据传播的距离延迟声音,并将输出定位在射线的方向上。比如,这一方法可以用在从主角身上发出的声音上。因为主角经常是声音设计的焦点,所以这是一个只增强这些声音的好方法。这个特效也被Blizzard(暴雪)用在了他们的游戏《Overwatch(守望先锋)》上。在这个例子中,它被称作四线延迟(quad delay),因为使用了四条由光线提供信息的延迟线【2】。
围绕听者发出固定角度的光线来定位反射表面。
为了更为复杂的空间化渲染,我们可以允许声音引擎直接访问一些几何空间信息。在这个例子中,一个代表简化版几何空间的三维方盒就足够了,因为我们要模拟早期反射而不是完全漫反射的声场。能够使用简化几何空间,就意味着早期反射算法能够确定多个声源的关键反射路径。这比对多个声源进行光线追踪要更为高效。
有了独立的早期反射,我们可以创造丰富的特效,能根据每个声源位置进行调整。通过分隔各个声源,我们也可以为它们分别创造自定义的设置。在某些情况下,比如为了尽可能减小计算成本或为了美学考虑,也许只产生两条反射会更好。最接近的墙壁可以针对这些声源被优先处理,而其它声源可能需要使用每一堵墙来产生不同的特效。
在试验过程中,我们发现天花板和地板的反射在标准环绕立体声系统中输出时可能会有不理想的效果。确实,由于在上方和下方没有声道,这些反射只能被重新定位到水平围绕听者的位置,而且会加重方向上的错误。在这种情况下,最好还是静音掉天花板和地板的反射 。所以,必须要考虑到所需的输出声道设置。
通常的参数分组方式是创建一组从主角视角的设置,再创建一组外部声音的设置。这个方式背后的逻辑是在外部声音离听者非常近的时候要静音掉反射,这时要让声音能从听者位置传出以保持住效果。
不同声源的独立反射路径。对一个声源使用更少的反射。
独立反射路径需要在声音引擎和游戏引擎间有更好的通信。声音引擎负责持有各声源类别的不同设置,以及不同墙壁材质和后期混响参数。这些信息之后会传给游戏引擎,在游戏引擎中可以把信息作为属性关联到几何空间上去。比如,在游戏编辑器中,来自声音引擎的一列声学材质会用于标记不同的墙壁。随后,游戏会将关于几何空间、关联的声学属性以及定位的信息发送回给声音引擎。至此,声音引擎就有了渲染特效所需的所有信息,而早期反射也可以和后期混响结合了。
声音引擎和游戏引擎之间的数据流
声音示例
这里有两个很短的声音片段,展示了特效是如何被感知的。第一段声音是普通混响,不带有任何空间化元素,而第二段有四个完全空间化的早期反射。两个示例都使用了Auro®-HeadPhones™双耳声插件。敬请期待体验这种特效的更多机会,很快就有了!
总结
使用动态早期反射,我们可以创造多样性的空间化特效,能够在它们所基于的技术基础上,大大加强沉浸感。确实,通过对关键反射的谨慎参数化,我们可以打造出广泛类型的丰富美学。通过将它们和多声道混响结合,我们可以再现完全沉浸式的音景,以此制作出无疑会和新出现的空间化平台共同演进的新的声音设计范式。更多关于Audiokinetic即将推出的早期反射技术的详情将在Game Developers Conference(游戏开发者大会,GDC)以及后续博客文章中发布。
注释:
[1] V. Välimäki, J. D. Parker, L. Savioja, J. O. Smith, J. S. Abel,《Fifty years of artificial reverberation(人工混响的五十年)》, IEEE Transactions on Audio, Speech and Language Processing, vol. 20, no. 5, pp. 1421–1448, 2012年7月,可参阅: https://aaltodoc.aalto.fi/bitstream/handle/123456789/11068/publication6.pdf
[2] https://blog.audiokinetic.com/overwatch-game-audio-using-wwise-part-2/
评论