在建筑、工程与施工 (AEC) 行业内,设计当中经常会通过 3D 模型展示设计理念,并藉此确保顺畅的理念沟通和协作交流。
除此之外,3D 模型也可用于声学模拟软件,来计算声音在空间中由声源到听者的传播。有关声音如何由声源传给听者的信息包含在房间冲激响应 (RIR) 中,其可通过卷积处理来模拟房间内的听者对声音(如乐曲)的感知。这一过程叫做“可听化处理”。
可听化处理早已成为建筑与声学设计流程的一部分,但一般仅限于声场在某个特定声源-听者位置的静态双耳呈现(不使用头部追踪)。
如今,新的沉浸技术在建筑和商业及家居影院空间中得到了普及,VR/AR 技术也逐渐被应用到设计当中。由此,模拟声音在虚拟空间内的传播对确保完美的 VR 体验变得非常关键。声音和声学对以非静态沉浸技术再现逼真体验至关重要。在这当中,音频必须随着听者的头部朝向不断做出调整。
对空间声学效果的模拟可以为设计决策(比如材料和式样的选择)提供有力的参考。事实上,声音与每种表面的交互方式各不相同,我们的大脑正是藉此感知周围的环境。设计师可利用声音吸收、散射和反射材料来控制各种客观或主观参数(比如响度、混响、语音可懂度和空间声学性能)。要知道,空间的声学舒适度支撑着房间的设计功用,而且对使用者的健康状况来说也非常重要。在房间中演奏音乐时,听众需要从房间获得经过校准的清晰响应,在这当中要避免有害的反射或对声音的过度修饰。为此,必须保持声音和空间之间的微妙平衡。
得益于工具强大、友好、完备且精巧的整合功能,Keith Yates Design 专门构建了一个未经声学处理的家庭影院 Demo 应用,用以借助 Wwise 和 Unity 探索 VR 技术的更多可能性,打造身临其境的沉浸体验,对此,我们特地使用了 CATT 来实施对房间的声学模拟,进而导出声场中的 B-Format(即 Ambisonics)房间冲激响应并导入到 Wwise 中。在对房间实施模拟时,并不需要专门的声学处理团队来控制混响、声音衰减和空间包络,所有这些全都包含在了最终设计中。
系统概述
最初,我们构建了一个 3-DOF 应用来提供对家庭影院的 VR 体验。是否允许在房间内来回走动并不重要,且还还会增加 Demo 应用本身的复杂性。总的来说,Demo 应用旨在对比房间中不同座位的音响效果以及声场在多个位置的一致性。
对视线和可听化处理的视觉渲染通常由不同软件分别实现,而且一般来说都是静态的,所以无法到处试听或环视四周。不过,我们希望能做得更好,在此基础上更进一步。
在启动 Demo 应用时,场景被设在家庭影院内。为了便于进行演示,其中配置了两个屏幕扬声器(代表左右声道),其可从 UI 菜单打开(图 1)。
图 1 - 左侧和右侧屏幕扬声器带有高亮显示的红色边框。它们是 AkAmbient 声源(Simple 模式)。
玩家/听者坐在观众席上,并可转移到其他座位上,环视四周来感受整个空间。
(国内观赏视频通道)
在 Demo 应用中播放音乐并环视四周。左侧和右侧屏幕扬声器均在播放立体声音轨。戴上耳机的话效果会更好。
图 2 - 系统方框图。
“声源-听者对”的冲激响应是事先计算好的,在配置场景的时候必须馈送到 Wwise 中。因此,在选定声源和听者位置之后,我们使用了 CATT(专门以射线追踪方式实施声学模拟的软件)来基于所选扬声器的 3D 辐射图及其相对于观众席的具体朝向(图 4)预先计算房间的精确冲激响应(图 3a、3b)。
图 3a - 作者在 Matlab 中开发的 B-Format 一阶房间冲激响应的空间分析应用。“刺猬图”显示了声强矢量的模数和抵达方向,其颜色代表抵达时间。在图 3b 中的 RIR 波形中,按照对应颜色标识并高亮显示了声音反射。
图 3b - 房间冲激响应 W 声道的前 70 ms。以右侧扬声器为声源,听者在中排中间座位。
图 4 - 房间内的选定扬声器模型和嵌装屏幕显示器的辐射图数据。
CATT 中对声音传播的模拟可能要花几个小时的时间,因为其使用了成千上万条“声音射线”与特制模型及其表面进行交互。其中,每个表面都按照倍频带指派了材质属性(吸收和散射)。该软件及内嵌工具所用算法的模拟精度甚至超越了有些游戏音频中间件中采用的“简化”方法。为此,我们决定不使用 Wwise Reflect 或 Steam Audio,因为我们不能对从特定建筑设计获得的声学精度做出妥协。与之相比,Wwise Reflect 可能对快速构建空间原型来分析早期声音反射和 Speaker Boundary Interference Response 更为实用。目前,我们正尝试使用其模拟直达声和早期反射声在收听位置如何相互干扰。这样的话便无需为 CATT 创建声学模型。
(国内观赏视频通道)
对左侧和右侧扬声器声音传播的时间迹线模拟。模拟在 100 ms 位置被截断,“声音射线”最多显示五阶反射。
在针对若干声源-听者对生成房间的声学响应后,我们将结果导入到了 Wwise 中并使用 Convolution Reverb 插件和 Wwise Recorder 来获取经过卷积处理的 Ambisonics 音轨。
虽然可以使用 Convolution Reverb 实时进行卷积处理,但这样会给计算资源和内存池带来负担。若要利用脚本在运行时切换不同的 RIR 文件,这种方法或许值得一用。不过,这需要对 Wwise API 和特定插件机制有较为深入的了解。
图 5 - Wwise 中的 Schematic View 和 Mixing Session,直观地显示了音效、总线通路、连接到每条总线的活跃插件以及活跃的状态。
在 Wwise 中,经过卷积处理的 Ambisonics 音轨被指派给了 n 阶 Ambisonics 输出总线。该总线的父对象为 Binauralizer 总线,其会将 Ambisonics 音轨作为输入并将双耳音轨输出到 Master Audio Bus。Binauralizer 总线使用 Auro-3D Headphone 插件渲染双耳输出。若不想切换 RIR 文件,在设置该插件的参数时要特别注意。扬声器距离应设为大于房间尺寸,以免 Auro Headphone 的算法产生额外的早期反射。同时,还要禁用 Reverb 选项。
图 6 - Demo 应用中使用的 Auro-3D Headphones 设置。
为了允许旋转声场,必须基于发声体 3D 位置将 Ambisonics 音轨的定位设为 3D Spatialization。注意不要使用衰减,因为信息已经包含在模拟 IR 中。Spread 曲线应始终为 100%,确保对听者头部周围的声场进行正确的空间化处理。利用 Wwise 3D Meter,可以实时地直观呈现听者所在位置的声场。
(国内观赏视频通道)
在 Profiler 布局下将 Wwise 连接到 Unity 的分屏画面。选作 Ambisonics 总线电平表的 3D Meter 会实时显示听者周围的声场。在本例中,由左侧扬声器播放突发粉色噪声只是为了便于直观地呈现。
游戏状态和 Reverb Zone 用于管理在每个声源-听者位置播放的音频轨。音频轨通过 AkAmbient 脚本绑定到了发声体,Reverb Zone 则是绑定了自定义脚本组件的 Unity Collider,其可触发 Wwise 的进入和退出状态。Wwise 状态与经过卷积处理的对应 Ambisonics 音轨关联。该音轨将被嵌入到 Wwise 通路中,并在双耳主音频输出中播放。
图 7 - 房间中的绿色 Box Collider 定位在各个声源-听者对的 RIR 的模拟位置。在玩家进入或退出该区域时,每个 Collider 会触发一个 AkState。
评论