基于《十三机兵防卫圈》的音频整合设计理念及工程分享

作者:CRIWARE游戏音频视频中间件
2021-01-14
11 10 0

导言

1f U C4N R34D 7H15 , 7H3N F1X UR OWN DA4N COM9U73R

( う-´)づ︻╦̵̵̿╤── \(˚☐˚”)/  

如果你可以第一时间理解上面的这堆乱码(visual anolog), 或许你对心里声学的现象也不会那么陌生。人的大脑中每时每刻都在发生着十分复杂运算来解析客观世界中的数据。所以,我们在实现游戏音频设计理念前,需要先了解我们的听觉。

在本文中,我将与大家分享日本知名游戏音频设计师金子老师参与的《十三机兵防卫圈》中的设计思路给我带来的启发,并试图探索从已知的人体生理心里科学现象中来引导游戏声音设计的方向。希望以此来引出更多的技术上的探讨。

前篇:


与此同时,我将我理解中的相关心理声学知识对游戏音频的需求进行结合,并罗列出几点我个人认为有建设性意义的理论。

那么,什么是“金子昌晃式”的整合思路呢?

从我的角度观察金子老师的此次分享,最突出的就是他对素材整理分类的逻辑思路与细致程度。而这套思路源于他对于听觉的理解。

听觉系统

从外耳传入的声音首先进入中耳并带动三个鼓膜震动,而震动的能量被放大后随即被转化为激励刺激(stimuli)传送到内耳中。在内耳中,声音先传入控制身体平衡感知的半圆形的扁管腔体。而后便传入耳蜗。

”啥?中二?“  ”no  中耳!”

由于在内耳中声音信号是在液体中传播,而液体中的传导能耗要大大高于空气。因此中耳的主要作用就是对声音信号进行放大。

中耳的结构是由三个人体最小的听小骨织组成: malleus,incus 和 stapes。在拉丁语中,他们的意思分别是锤子,铁砧,搅拌机。而我们的身体中最小的肌肉 stapedius muscle 也在其中(被搅拌机半包围着),其作用是伸张紧缩的方式来保护“搅拌机“连接内耳处的薄膜。

中耳除了有传递并放大声音的作用,还可以调节脑压与外界气压的关系。在中耳的底部有一根连接呼吸系统的腔体,叫做咽鼓管(Eustachian tube)。当你用力憋气或打哈欠时,咽鼓管就会被打开。这时它会和呼吸系统中的另一腔体形成对流并中和气压,但这个对流过程也会对中耳的听觉传导产生影响。这就是为什么我们打哈欠时会隐约的”听见”一些底噪。

耳蜗的构造可以说的上是鬼斧神工。它的名字源于拉丁语 cochlea,意思是蜗牛壳。而其内部结构也十分的有趣。耳蜗的主体由三个不同的蜗管腔体组成,而这三种蜗管里含有两种液体。这两种液体的震动可以和基底膜(basilar membrane)产生共鸣。 而在连接基底膜的柯蒂氏器(organ of corti)上可以发现不同长度的毛细胞(hair cells)。

我们的内耳中由大概 3500 根内毛细胞和 12000 根外毛细胞组成。外毛细胞的反复地通过一种正负双极激励的方式来再次放大声音信号,而内毛细胞则是读取放大后的信号。在蜗管底部的内毛细胞长度较短且硬度较高,而顶部的则长软。如果毛细胞又短又硬,这就意味着这些毛细胞对应着高频能量居多的声音较灵敏,反之亦然。

这些毛细胞上附着着神经元去极化(depolirazation)所需的化学物质,然而这种物质积攒到了一定的程度便会转化成动作电位,传输给大脑。我们的听觉范围(20hz-22000hz)也是由这些内毛细胞而决定的。

而正是由于这种毛细胞的构造,我们的听觉才会表现出如下文中介绍的一系列的现象。

理论引导:心理声学

在金子老师给我们带来的分享中,有一张图对于职业音频的小伙伴们来说肯定不会陌生。

equal loudness contour 等响曲线

对,就是 Fletcher-Munson 曲线,aka 等响曲线, aka“ISO266”。其寓意在于表示人对不同频段声音的感知在声压的不同的情况下是不相同的

声压越大时,我们对中频信息就越不灵敏

举个例子:假如你在开车时听到一个歌,当音乐音量很小时候你觉得还不错,所以你加大音量。当你听到了更多的高音和低音时,觉得更饱满更好听。于是便继续增加音量,直到有些使你觉得不舒服的变量出现。这也是为什么绝大多数的音乐制作人在制作混音时的音量普遍高于平均听众的收听音量。

对于做游戏音频也是如此,我们无法替玩家调节音量,但是如果游戏声音在音量较小(我们的听觉集中在中频)的时候表现出色,那么音量增加时我们声音的表现也会更好。

我在阅读 Harvey Fletcher 的资料时,发现了他的很多有趣的故事。 他的父亲在 55 岁时突发耳鸣,而这是注定他一生经历的重要源头。他是第一个芝加哥大学毕业的 summa cum laude 校友。他在和他的导师 Robert A. Millikan 的“油滴实验中”取到了决定性的的作用。(没错,Fletcher 的研究奠定了真空二极管的理论基础)博士毕业之后他来回到了他的母校任教,而贝尔实验室的前身纽约西部电子公司连续五年请他出山。直到第六年,他才决定去任职。当时的贝尔实验室为了节省电话直接信号传输的成本,需要找到一个对信号处理的取舍方案,而 Fletcher 的工作就致力于此。他的成果在起初并不受关注,直到机缘巧合,他帮助听力不好的托马斯爱迪生设计了一款电子助听器。 他的研究也为众多领域奠定了基石。他也是一个酷爱音乐的交响粉丝。在 1933 年,他和利奥波德·斯托科夫斯基完成了世界上首个立体声交响乐的录播。flecther 在 1981 年与他的故乡犹他州去世,享年 97 岁。

出处:https://historytogo.utah.gov/fletcher-harvey/

伟大的科学家,立体声之父 Henry Fletcher

总而言之,身为游戏声音设计师的我们在声音方面应该有着这样一个目标:

让玩家尽可能的的把声音加大到我们监听制作时的音量。

我们可以用一张图来模拟这个过程(纯属个人观点):

当玩家在点 A 时(声音极小),此时游戏音量很低,声音根本听不清。

所以我们加大声音来到点 B(声音信息传递完全),从等响曲线中我们获得的结论是如果这时我们加大音量会感受到更有力的低频和更细腻的高频。那么我们在监听环境允许的情况下肯定会这样做。

于是我们便继续加大音量到达或超过点 C。此时我们的声音或许已经超过舒适监听的范围,且低频信息越发强势并遮挡住中频信息。

那么,这时我们如果再继续增加音量来到点 D 就会导致更多的中频信息被掩盖,那么我们的体验就必定会下降。而在这里就涉及到了 Henry Fletcher 提出的一系列衍生理论(遮掩效应)

理论引导:遮掩效应

游戏中的各种声音出现的时间是不可预期的,而所有声音又占用着同一个动态余量的空间。如何使用技术手法让更重要的音效突出和不重要的音效避让就成为了较大的课题。而如何配置避让参数,我们就需要了解遮掩效应。


在上文中我们了解了等响曲线及其广义的结论。

如果我们要玩家分别感知两个同时产生的声音,我们应如何设计这两个声音呢?

通过 Fastl 和 Zwicker 的研究我们可以将遮掩现象总结为下图所示:

在左图中,存在着两个声音:

一组由绿点代表的声压较弱的被遮掩的声音,和一个由红点代表的声压较强的遮掩声音。

而绿线拟合的就是这样一组数据:

在有一个 1000hz 遮掩声音时,被遮掩的声音的频率和声压最高可以多高才不会被我们的听觉感知到。在这里我们可以观察到一个明显的现象。 当被遮掩的声音的频率临近遮掩声音的频率时, 被遮掩的声音需要更少的声压差就可被遮掩。

换句话说,对比频率相差很少,如果一个声音想要遮掩一个和其频率相差很多的另外一个声音,那么这个遮掩声音就需要更多的能量。


在右图中,我们可以观察到另外一个现象:当两个声音的声压同时增加 10db。供遮掩声音低频和高频的能量虽然是同时增加,但低频的增幅远远小于高频的增幅。

也就是说:在高频频带中声音之间的遮掩现象比低频中的要夸张的多。

那么把两种结论总结一下,我们可以将遮掩效应理解为:

如果 A 声音遮掩 B 声音,那么,

  1. AB 的频率越相近;
  2. 在高声压下,B 的频率越高, 遮掩效应就越明显。


举个例子:

如果一个枪械射击声 A 的音量只需要比另一个基频相近的射击声 B 的音量大一点,就可以形成遮掩 B 的效应。

而如果射击声 A 要同样遮掩某个低频能量较多的爆炸声 C 的话,那么 C 对比 B 的音量要小很多。如果增加音量,那么 ABC 中的高频信息上的遮掩效果会比低频中的更明显。

接下来,我们来分析时域的遮掩效应。请看下图:

那么,这个图告诉我们什么呢。

如果有两个声音:声压较大的 A 遮掩声音和声压较小的 B 被遮掩声音。绿色曲线表示 A 在发声后的上限 200 毫秒都会遮掩 B 的声音的感知,而红色曲线表示 A 在发声前的 20 毫秒会遮掩 B

换句话说,遮掩效应中遮掩声音 A 甚至可以在不同时发声情况下遮掩 B,仿佛遮掩音 A 长出了一个能被听觉感知而又不存在的音头和音尾(音头上限 20 毫秒音尾上限 200 毫秒)。

在这个现象上,研究还发现我们的时域分辨率 temporal resolution,在高频时比较好(隐形音头音尾上限较短)。

理论引导:音高的感知

在游戏音频中我们为了优化性能,会在素材的音高上加以随机变化来增加多样性。

如果我们遵循对音高感知的理论引导,那么我们的游戏音频会更具有带入感。因此,我们在音高的参数设定方面,应该注意哪些呢?

人耳对音高的感知是一个十分复杂的运算过程,而其中不仅仅包括对基频的感知。其他影响音高感知的因素还有谐波,音量,频域带宽等。

首先,在音量大幅度变化的时候,我们对音高的感知会产生变化。

当声音由高频信息居多时,音量的剧增会感到同一个声音的音高也随之增高。

1 音高增高 - 音频演示
(音频演示)(1 音高增高)

当声音由低频信息居多时,音量的剧增会感到同一个声音的音高也随之降低。

2 音高降低 - 音频演示
(音频演示)(2 音高降低)

理论引导:最小可觉差(just noticeable difference)

音高上的最小可觉差是指在我们能感知出两个在不同时间发声的声音,它们的音高之间的差值调节要达到的最小值。

具体曲线如下图所示:

在这里我们使用 200, 202 ,204hz 来示范:

200-202 - 音频演示
200-204 - 音频演示
(音频演示)(3_200-202) 、(4_200-204)

虽然只有 2hz 的区别,但是我们却可以很清楚地辨别 200204 直接的音高差。 但 200 和 202 却不易识别

理论引导:临界效应

临界效应源于 Fletcher 的研究,其意义在于告诉我们人的耳蜗就像是一组滤波器。

当两个声音的频率十分接近时,那么就会有一个滤波器被两个声音所占据而导致这两个声音之间互相影响。经过研究,我们可以发现临界效应的可以帮助我们判定两个同时发声的声音的频率需相差多少才能让我们觉得这是两个不同的声音。

具体曲线如下图所示:

200+230 - 音频演示
200+240 - 音频演示
(音频演示) (5_200+230)、(6_200+240)

从这几个研究的观察中,我们就可以对音高的在整合工程中的实际应用有更深一层的理解。

举一个例子:我们在脚步声的整合过程中,通常会使用随机音高范围来增加脚步的多样化。

但是根据脚步击打的表面材质的不同,我们的脚步声可能带有突兀的音高信息。

如果击打表面是高频信息居多金属板,那么在此加上过多的音高随机化可能会让玩家觉得每一步都是一个音符在发声。 在这种情况下,由于耳蜗的生理结构影响,导致玩家感知到了不应该被感知到的音高。所以我们要酌情在中间件中做出调整。

谐波的完整性对音高的感知有着正面影响,如果我们将一个 150hz 的声音的锯齿波的前 9 个谐波去掉,我们还是可以感知到音高的。

7 移除谐波 - 音频演示
(音频演示)(7_ 移除谐波)

频域的带宽对音高感知也有着影响。我们将白噪做频域塌陷处理后以生成带宽为 30, 60, 150, 200, 300, 500, 700, 1000, 1500, 2000, 3000hz。可以在这里发现频域越窄,我们就越容易感知到音高。

8 噪音带宽 - 音频演示
(音频演示)(8_ 噪音带宽)

实际操作

关于心理声学的知识,我在上面尽量使用通俗的语言表述了一些基本理论和公认的结论。 如果您想深入一步了解,本文的最后罗列有所有的相关参考文献。

那么装备了一些理论基础,我们下面就开始照葫画瓢,尝试模仿大师的制作理念并自己捏一个 adx2 工程,其大略步骤如下:

  1. 在素材层将音乐素材分类并拆分。
  2. 将影响音乐素材的其他素材类型分类。
  3. 导入至 CriAtomCraft 并设置类别。
  4. 调试 REACT。

1、在宿主软件中对音乐素材拆分

打开宿主软件,这里我使用的是 REAPER6。

我使用 VST 插件制作了一个 loop interactive_music-001 和 interactive_music-002。

其中 Interactive_music-001_instrumentation 包含吉他扫弦,吉他琶音,军鼓,踩镲。 Interactive_music-002_instrumentation 包含底鼓,合成器 pad,钢琴,贝斯。

我们在这里需要选择如何分割音乐。

如果按照配器的方式来分割,那么我们这在创作音乐时就需要分“高频乐器”和“低频乐器”来制作,混音,缩轨. 如果按照频谱能量来分割,那么我们需要找到一个临界频段,并在这个频段上方塌陷所有的高频信息来得到高频音轨,而低频音轨则反之。

要注意的是,我们在选择临界频段时要确保分割后得到的两个轨道尽量保持大部分时间 dbFS 值接近。如果临界频段过高,那么我们需要用更多的数字增益弥补,从而产生高低频动态范围和动态余量不均匀的现象。


比较这两种方法,配器分割方式的结果并不纯粹。

也就是说,所谓的“低频乐器”的高频谐波还是会被分割到低频音轨里,而“高频乐器”也会加载它们本来的基频信息。但相比较更纯粹的频谱塌陷,这种方式可以使两个分轨在整合工程中被单独使用,也同时避免了动态范围不均匀的问题(极端情况下我们才会识别出现动态范围不均匀的声音,所以这里在一个轨道上少许的数字增益并无大碍)。

出于演示目的,我使用的是频谱能量来分割的办法。

2、将其他影响音乐的素材进行分类

影响音乐的素材可以根据低频信息量来分类。

比如爆炸声和低频较多的音效可以被分为一类,高频较多的音效可以被分为一类,而对话和旁白也可以被分为一类。如果有不同场景,那么可以以场景为单独分类标准进行细分。

3、将素材导入 CriAtomCraft 并开始构建工程

其大略结构如下:

总体设置>分类>分类组>创建分类

Vo,
Sfx_firearms,
High_fq_music,
Low_fq_music,
Sfx_explosion,
Sfx_high_fq_generic

总体设置>REACT>创建 REACT

sfx_firearms_on_high_fq_music,
Sfx_firearms_on_low_fq_music,
Sfx_high_fq_generic_on_high_fq_music,
Sfx_explosion on low_fq_music,
Vo_on_high_fq_music,
Vo_on_low_fq_music

4、编辑每一个 REACT

触发类别和变化类别的关系:当一个触发 cue 被激活时,如果没有任何限制发生的条件发生(多重播放禁止时间), 那么变化类别就会根据我们设计的逻辑进行变化。

如图中所示,当被划分至枪械类的音效 sfx_firewarms 被激活时,高频音乐 high_fq_music 的音量就会被降低至原始值的 70%。这里需要注意的几个选项有:

a) REACT 类型:

Ducker 类型是直接对变化 cue 的音量产生变化,而 AISAC 类型则是 AISAC 调制触发器通过播放触发目标,产生 AISAC 调制。(对于“使用 AISAC,仅在播放某个 Cue 期间更改特定 Cue 的音高”这样的用途,REACT 应使用 Ducker 而不是 AISAC 调制触发器。AISAC 要以调制,One Shot 和 Key 来驱动。如果变化的参数在变化开始时和结束时值不相同,可能会在播放时听不到声音。)

b) 变化时间:

在判定生成 REACT 之后,对指定变化 cue 音量降低所需时间。

c) Hold 类型:

“播放中” 是指只要触发 cue 在播放中,那么变化 cue 就一直不会被释放;“固定时间”指触发 cue 被触发后指定时间内,变化 cue 就会被释放。

如果一个类型中只有一个音效或者类型中的音效的时长和包络很接近,那么 hold 类型可以使用固定时间。这样做的意义在于增加音效与音效之间变化的稳定性。

例如一个礼花爆炸的音效中的音尾包含小爆竹爆炸的高频信息,在不拆分礼花音效素材的情况下我们可以通过计算礼花爆炸的低频能量衰减的大概时间来设置 hold 固定时间。这样做就相当于将低频能量多的礼花爆炸作为触发而忽略高频的爆炸。

d) Hold 时间:

“播放中”下的 Hold 时间指被触发 cue 播放完毕后的一段等待时间。在等待时间过后,变化 cue 才会开始恢复到原始音量。“固定时间”下的 Hold 时间指触发 cue 开始触发 REACT 的一瞬间后的一段等待时间时间。等待时间过后,效果同“播放中”一样。

e) 返回时间:

变化 cue 回到原始音量所需时间。

f) 变化参数:

“音量电平”指变化 cue 被影响的目标是音量。 或者选中任意 AISAC 控制器 作为变化参数。

g) 变化电平值:

在“音量电平”下,此数值值域 0-1,代表原始音量的百分比。 在 AISAC 控制器中,此数值代表返回目标 AISAC 控制器中的函数值。例如:

如果变化电平值输入的是 0.2, 那么 AISAC 控制器 此时的变化应该是:音量调制原始值的 2 倍(音量 aisac 图表起点为 1 值域为 0-2)。这么一来,我们的变化参数是 AISAC 控制器的 REACT 就会增加了不少的灵活性。


h) 在特殊的 cue 中使用块和 action track

在重要且播放逻辑复杂的 cue 上可以加入块和 action track,例如样板工程中玩家增加经验值的音效。

如果使用 action track,我们的可以在不同阶段的声音(加速,匀速,减速)cue 上绑定参数 action 来控制目标音轨的参数。

i) 在反复出现的 cue 上设置多重播放禁止时间

结合心理声学理论,我们可以对多重播放禁止时间做调整。

由于在高声压下频域高的音效之间的遮掩效果好,那么我们可以在高频域的音效上使用较短的多重播放禁止时间。而低频信息居多的音效可以设置较长的多重播放禁止。

金子老师的教给我们的一个小窍门是将射速很快的枪声音效放入一个连击逻辑的 cue 中两次。这样做的话可以完美控制第一发后枪声的大小,还可以确保第一击音效的完整。

j) 各种音效对音乐的 react

由于爆炸声的低频能量较多,那么它对对低频音乐的 REACT 效果也应该强。

从理论角度来看,我们只需要用小量的变化时间和返回时间就可以避免时域遮掩。

但我使用了较长的返回时间,而在爆炸 REACT 高频音乐使用了更短的返回时间。这样错开两个同类的 REACT 的释放其意义在于避免音量大幅度变化导致听觉对音高产生变化

k) 爆炸音效

同样道理,我在样板工程中使用一个高频信息较多的 power up 音效,在这里这个音效应该是对高频音乐的 REACT 效果强于对低频音乐。

在语言类的声音对音乐方面,我认为人类的语言中辅音(consonant)中的高频信息有可能会被音效的高频信息遮掩。所以在语音对应音乐的 REACT 中,我设置了较强的高频闪避效果来给这些辅音留有更多的动态余量空间。

最后,我们可以通过 Session 来测试我们的声音。在这里,我们可以手动播放一系列音效来模拟游戏运行中的声音效果:



尾声

本次的分享就到此结束了,希望可以为大家带来一些启发。
您可以在此进行以上样例工程的下载:

链接:https://pan.baidu.com/s/16xXjz9G3PG_SNDtHPtcH9A

提取码:ADX2

本工程由 CRI Atom Craft Ver. 3.44.17 创建

此外,需要注意的是,本样例工程仅作展示使用,因此使用的音频素材样本量较少。在实际的工程运用当中,可能会有大量的素材需要批量导入及编辑。

在后续一月份的 ADX2 版本更新中,马上将会上线新功能“Robot”,它可以编辑脚本,快速导入大量文件,减轻声音设计师的负担。

新 SDK 发布的同时,我们也会同步更新 Robot 的使用方法,即使是没有接触过编程语言的设计师朋友也可以轻松上手,敬请期待!

您也可以加入我们的官方 QQ 交流群,与我进一步的交流:

参考文献:

  • Fastl,H “Temporal Masking Effects”
  • Fastl,H and Zwicker,E(2007) Psychoacoustics-Facts and Models
  • Moore,B.C.J(2003)An introduction to the Psychology of Hearing.
  • Yost,W.A.(2000) Fundamentals of Hearing, an Introduction.
  • Seeber,B (2008) “Masking and Critical Bands” in Handbook of Signal Processing in Acoustics


部分引用图片:

  1. Atlas of Human Anatomy
  2. 慕尼黑工业大学心理声学系的 YouTube 公开课


作者:卢佳玮

编辑:余音