为动态环境声使用Ambisonics

声音设计 / 空间音频 / Wwise 技巧和工具

旋转Ambisonics

正如我们在 Ambisonics作为空间音频的中介表示法(针对VR)中所见, Ambisonics是一种多声道音频格式,可以很好地表达音频混音的空间特性。Ambisonic音频文件/混音/信号可以被看做整个声场,也就是来自不同方向、到达听者双耳的不同声源的混合,各有不同的入射角。

通过矩阵实现旋转

Ambisonic 表示法的一个实用特点就是可以很简单地进行旋转,只要通过巧妙操作混音增益矩阵即可*。在资源方面(CPU和内存),这就相当于计算声像摆位增益;而且由于计算是在每个音频帧(~10-20 ms)而不是每次音频采样(~2 µs)进行,所以它的开销量级远远小于滤波甚至混合(叠加)音频信号。

在旋转一个Ambisonic信号之后,你会得到新的Ambisonic信号,其所有组成元素的入射角都进行了相应的旋转。

Wwise中的Ambisonics旋转

Wwise会自动实现Ambisonic声场的旋转,使其符合相关游戏对象和听者的相对朝向。为了使用这种魔力,你只需要将Ambisonic声音定位设置为3D Game-Defined并将其连通到一条Ambisonic总线,如以下截图所示。游戏对象和听者的朝向是通过Wwise API由游戏驱动的。

Figure 1 - Positioning and routing required for enabling rotation of ambisonics in Wwise. Notice the 3D and Game-Defined options selected in (a).

(图1-a)

 

Figure 1 - Positioning and routing required for enabling rotation of ambisonics in Wwise. (b) shows how to set a bus to ambisonics.

(图1-b)

Figure 1 - Positioning and routing required for enabling rotation of ambisonics in Wwise.  The routing can be observed in the Profiler view (c).

(图1-c)

 

Figure 1 - Positioning and routing required for enabling rotation of ambisonics in Wwise. The actual rotation is given by the relative game object and listener orientations driven by the game engine, here in Unity (d).

(图1-d)

图1 - 在Wwise中启用Ambisonics 旋转需要的定位和总线设置。请注意在(a)中选中的3D和Game-Defined选项。素材会连通到一条Ambisonic声道设置的总线。(b展示了如何将总线设置为Ambisonics。在Profiler视图(c中可以观察到该通路。实际的旋转是相关游戏对象和听者朝向决定的,在Unityd)中由游戏引擎驱动。

以下的音频示例展示了Ambisonic旋转,你需要用耳机来听。音频示例1中,播放了一个Ambisonic文件, 并使用Wwise中的Auro Headphone插件将其转化为双耳立体声。为了产生音频示例2的效果,我们只需要改变听者的朝向(使用游戏引擎)就可以指向左方,而声场对象朝向前方。听者会逆时针旋转(向左),这就是你听到声场顺时针旋转的原因。

音频示例1

音频示例  2

 

使用Ambisonics素材的环境声

对于Ambisonics信号/背景/流文件的各声道,通过很简单的操作就能旋转它们所表示的声场,这使得在游戏中实现动态环境声变得简单了。你需要使用朝向不变并指向特定参照物的游戏对象来回放它们。比如,在一段录音中,如果有一个指向性清晰的听觉元素,它对应于游戏中的一个视觉元素,那么你会希望游戏对象的朝向让它们两者一致。当Listener(听者)在空间中移动并改变朝向时,Ambisonics声场在总线中混音时会自动旋转,结果就是,声场与视觉保持一致。

使用录好的材料

在Wwise中,你可以导入使用合适的Coincident microphone(比如http://www.core-sound.com/TetraMic/TetraMic-small3.jpg)捕获的Ambisonics录音,只要你先将它们转码为B-format(常见的一阶Ambisonics)即可。大部分麦克风都带有自己的软件,用来转换原始麦克风信号,一般是从A-format转为B-format**。

这里有一个实地录音在Wwise中进行旋转的示例。示例音频3 (原始音频)是使用SPS-200麦克风录下的,之后被转码为B-Format并导入Wwise。最值得注意的声音事件是汽车喇叭声,它位于原始示例中的偏左位置。在音频示例4中,我们将听者向左旋转了90度(就像我们在上个示例中做的),接下来进行回放并录下输出。汽车喇叭声基本移到了右边,其它声源也相应地旋转了。

 

音频示例3

音频示例4

 

“并轨输出”环境声

在Wwise的互动捕获会话过程中,我们可以使用Wwise Recorder 插件生成声音文件。比如,你可以将多个单声道声源放置在空间中,混音成单一Ambisonics信号,即可在Wwise设计工具中创建一个复杂的环境声。然后使用Wwise Recorder 插件对该Ambisonics信号进行混音。下一步就是将录好的Ambisonics 素材重新导入你的Wwise工程,并将其作为可旋转的3D环境声在游戏中使用,就像它是录好的素材一样。

这个工作流程比较类似一般在线性DAW(如Nuendo、Reaper、ProTools)中的“bouncing”或“freezing”选项。将环境声并轨输出到硬盘上而非将其各组成元素全部保留并同时回放,其目的之一就是节约运行时的资源(CPU和内存)。这可以通过节省磁盘空间,只播放一个多声道文件(而不是同时播放很多单声道文件)来实现。

在Wwise中Bounce环境声

  1. 创建一条总线并将其声道设置为Ambisonics (阶数任意)。
  2. 在该总线上插入一个Wwise Recorder插件。因为它是Ambisonics总线,所以音频会以Ambisonics格式被写入文件。
  3. 将所有的单声道声源(或它们的共同父级)连通到该总线。
  4. 使用3D User-Defined Position Editor为每个声源进行空间定位。
  5. 在合适的时候使用Soundcaster Session、Event、Random Container,或它们的组合项来触发声音。当所有声音停止播放时(自然结束或者是被停止),所有音频就会被“bounce”到磁盘上。通过在Recorder插件中直接点击Import in Wwise... ,你就可以在工程中直接导入并轨之后的声音。
  6. 检查这个新素材,并将其定位类型设置为3D。在游戏中播放时,它会按照前文所述方式进行旋转。

 

5-bounce-profiler-and-structure.png

(图2-a)

 

6-user-defined_positioning.png

(图2-b)

 

7-Recorder.png

(图2-c)

2 - Wwise Sample Project Ambisonics City Ambience Blend Container被录到一个Ambisonics文件截图(图2-a)中左侧的Project Explorer视图 展示了上述录音(示例1——Ambisonic City 3D Ambiance)组成的环境声,其上叠加了很多独立的声音,并通过Random Container指定的各种行为进行混音和回放。截图(图2-b的例子展示了素材(或一组素材)如何使用3D User-Defined Position Editor放入空间中截图Fig 2-c展示了Wwise Recorder插件的设置。请查看该插件的更多详情

 

正如在之前的博客 Ambisonics作为空间音频的中介表示法(针对VR)中所述,你最多可以录制三阶Ambisonics来追求空间化精度,但是,这样做所带来的所需声道数(二阶9声道,三阶16声道)以及内存需求可能导致得不偿失。而且,录好的Ambisonics文件会保留各个组成元素的位置方向,而事后是不能单独更改它们的属性的——比如其各自的音量和滤波***。  

 

* 只要Ambisonics格式是“full-sphere(完整球体)”

** Wwise接受符合FuMa协议的AMB文件,这些文件可以通过其header中的相应GUID被识别。参见详情

***有的信号处理技术允许这样做。但是,在我们的情况中它们并不很适用,因为我们已经在混音前获取了各个组件。  

 

-截图图1(d):Unity 3D

-录下的3D环境声示例,以及修改版本:

由A-Format SPS200麦克风录制的Ambisonic B-Format环境声
Audiokinetic Inc. All rights reserved.
Audio content provided by Studio Lab SONORUM
(c) 2016. www.sonorum.ca

这个文件中包含的Audio Content(音频内容)产权归Studio Lab SONORUM所有。对于此Audio Content,您的唯一权利就是将该Audio Content作为这个Sample Project(示例工程)的一部分进行试听。该Audio Content不能为商业用途或公众展示进行使用或改动。

路易斯-扎维尔·布法尼 (Louis-Xavier Buffoni)

研发总监

Audiokinetic

路易斯-扎维尔·布法尼 (Louis-Xavier Buffoni)

研发总监

Audiokinetic

路易斯-扎维尔·布法尼 (Louis-Xavier Buffoni) 现任 Audiokinetic 研发总监,主攻空间音频、声音合成、音频编程和机器学习。

 @xbuffoni

评论

rixin chen

July 07, 2018 at 10:52 pm

我觉得很有用您讲的这些,也看了你在youtub的视频,我很喜欢。希望能出一些更细致一些的教程,在Unreal4和unity3D上。

留下回复

您的电子邮件地址将不会被公布。

更多文章

小型游戏项目使用Wwise的五大好处

假如您是游戏音频领域的从业人员,并且之前参与制作过小型游戏项目,八成听人说过下面这样的话: “就我们的需求来说,有必要使用像 Wwise...

19.12.2019 - 作者:亚历克斯·梅 (Alex May)

《ABZÛ》– 在游戏中为成千上万条鱼设计音频所面临的挑战

看到这幅画面,你首先会想到什么?

30.6.2020 - 作者:史蒂夫·格林 (Steve Green)

声音设计师如何利用PD+Heavy进行DSP插件的开发 Part 3

声音设计师如何利用PD+Heavy进行DSP插件的开发 Part 3 - 如何在Wwise2021.1.x版本下继续使用Heavy Compiler?...

12.1.2022 - 作者:侯晨钟

利用 Wwise 设计基于循环的汽车发动机声音 | 第 2 部分

欢迎继续阅读本系列博文,了解如何在 Wwise 中配置和设计基于循环的汽车发动机声音。在第 1...

22.2.2022 - 作者:阿托•科伊维斯托 (Arto Koivisto)

Tell Me Why | 音频日志 – 第 1 部分:环境声和 VO

《Tell Me Why》是一款由 DONTNOD 开发、由 Xbox Games Studios 发行的单人叙事冒险游戏,支持的平台包括 Xbox 主机、Windows 10 和 Steam。...

23.3.2022 - 作者:路易斯•马丁 (Louis Martin)

Wwise 2022.1 新增功能

Wwise 2022.1 现已推出并可通过 Audiokinetic Launcher 下载。下面来简要介绍一下该版本中都有哪些新增功能。...

16.11.2022 - 作者:Audiokinetic (音频动能)

更多文章

小型游戏项目使用Wwise的五大好处

假如您是游戏音频领域的从业人员,并且之前参与制作过小型游戏项目,八成听人说过下面这样的话: “就我们的需求来说,有必要使用像 Wwise...

《ABZÛ》– 在游戏中为成千上万条鱼设计音频所面临的挑战

看到这幅画面,你首先会想到什么?

声音设计师如何利用PD+Heavy进行DSP插件的开发 Part 3

声音设计师如何利用PD+Heavy进行DSP插件的开发 Part 3 - 如何在Wwise2021.1.x版本下继续使用Heavy Compiler?...