在今天的博文中,我们将深入探讨在对给定环境进行声学建模时可能会遇到的一种有趣声学现象:相位偏移。我们先简单了解一下相位偏移的基本物理特性,然后再展示 Reflect 在 Wwise 23.1 中提供的新工具。借助这些新工具,可最大限度地减弱相位偏移的不良影响。
什么是相位偏移?
说到相位偏移,我们一般会用通过管道听到的声音来形容。有时也会拿喷气式飞机从头顶飞掠而过的声音效果来类比。在以下示例中,我们选了一段未经修改的鼓声(上),然后向其应用了相位偏移处理(下):
我们注意到,带相位偏移的片段有种声音在空间中回荡的感觉!相位偏移*经常被用作音乐中的创意效果,但这种效果本身并不局限于音频插件或踏板。现实生活当中也存在相位偏移!在以下视频中,我们可以清楚地听到喷泉噪声的相位偏移效应:
相位偏移的基本物理特性
首先,让我们来谈谈波的干涉,它是理解相位偏移的基础。在两列波相遇时,会产生某种形式的干涉。这种干涉可以是相长的(叠加波的振幅增大),也可以是相消的(振幅减小)。干涉的类型和幅度取决于波的振幅、频率和相位。
在以下动画中,蓝波与橙波相遇。在橙波与蓝波相称时,会产生相长干涉,叠加波(红色)的振幅增大。随着橙波向右移动(时间延迟/相位增加),叠加波的振幅减小为零,然后又逐渐增大。
简单演示波的干涉
这个简单的演示展示了同一频率的两个信号的干涉效果,但现实中的多数音频信号都是由很多不同的频率组成的。所以,观察信号的频谱更实用一些。
以下动画再现了喷泉场景。声波有两条路径抵达听者。第一条是直达路径,第二条则包含墙壁的反射。右上图显示的是叠加波产生的频谱,右下图显示的是每列波的抵达时间 (ToA):
模拟喷泉的相位偏移
随着听者离墙壁越来越近,两列波的 ToA 之间的差值越来越小,频谱开始出现明显的波峰和波谷图案。由此可见,不同频率分量的振幅有增(波峰)有减(波谷)。也就是说,从频谱可以看出每个频率分量所受干涉的种类。这种梳状图案***就是我们感知到的相位偏移!
这里有几点需要注意。首先,在声波之间的 ToA 差值较小时(20 ms 以内),相位偏移会变得非常明显。其次,这里展示的模型只使用了两条声音路径,但实际上会有很多很多(无限多,但我们只能渲染这么多条路径)。每条路径都有不同的 ToA,其频谱的波峰可能与其他路径的波谷重叠,进而相互抵消。下图展示了三个具有不同 ToA 的信号的叠加效果。我们可以看到,由此产生的频谱变得更加平坦了:
多条反射的频谱叠加效果
由此可见,虽然现实中确实存在相位偏移,但由于诸多反射的相互作用,这种效应一般很少会发生。不过在声学建模领域,我们需要减少反射次数来降低计算成本。所以,发生相位偏移的可能性要更大。
将相位偏移引入到 Reflect 中
Reflect 插件是一款早期反射渲染器,能让听者感受到声音在环境中传播的空间感。声波从声源位置向外传播的时候,抵达听者前会在不同的表面反射。我们对空间的感知很大程度上取决于最初的几次反射,而这正是 Reflect 插件所要呈现的效果。
既然 Reflect 可以处理反射,各位可能会问:这是否意味着 Reflect 能渲染带相位偏移的音频呢?答案是肯定的!下面的演示使用 Reflect 插件模拟了前面展示的喷泉环境:
在听者靠近墙壁而远离喷泉时,我们会听到跟之前的喷泉视频非常相似的明显相位偏移效应!借助 Reflect,可以很好地重现现实生活中发生的现象。不过在游戏当中,这种效应可能会让人分心。幸运的是,Reflect 提供了一些工具来帮助减弱这种相位偏移效应。
运用工具减弱相位偏移效应
Wwise 23.1 中的 Reflect 增添了两个用来减弱相位偏移的工具。
编组
如果知道在一组反射的 ToA 差值小于 20 ms 时会发生相位偏移,那么我们就可以将这些反射编组 (cluster) 为一条有效的反射:
编组概念
在以上示意图中,有 3 条反射路径抵达听者。路径 A 和 B 的 ToA 差值在 20 ms 以内(ToA 差值 = 19 - 18 ms = 1 ms)。因此,路径 A 和 B 被编组并与直达路径(橙色)合并在了一起。不过,路径 C 的 ToA 差值大于 20 ms,所以这条路径保持不变。
只需在 Reflect 界面中将 Direct Sound Max Delay 属性设为 0 以外的值即可启用编组功能。该属性代表最大 ToA 差值 (ms)。所有 ToA 差值等于或小于该值的反射都会被编组。
Direct Sound Max Delay 控件
以下视频对编组做了简单的演示:
编组这种方法简单且有效。此外,因为需要渲染的反射较少,所以计算负荷也较小。不过它有个缺点,就是反射只能跟直达路径编组在一起。也就是说,无法对别的 ToA 差值的反射进行编组。
去相关
在现实生活中,大多数表面不仅会反射还会散射声波。在前面章节中,我们看到将更多 ToA 差值不同的反射混合在一起会产生更为平坦的频谱。所以,我们可以将散射波看作与主反射结合在一起的微反射。
波的散射
散射采用滤波器建模。它是名为“去相关滤波器”的滤波器系列的一部分。
只需在 Reflect 界面中将 Decorrelation Strength 属性设为大于 0 的值即可启用去相关滤波器功能。Decorrelation Mode 下拉框中有两种去相关滤波器类型:
Favor Performance 使用基于声学散射物理模型的去相关滤波器。
与 Favor Quality 相比,该选项的计算成本较低,但减弱相位偏移的效果没那么好。另外,调大 Decorrelation Strength 会带来频谱着色:某些频率分量增强或减弱(跟相位偏移类似)。
Decorrelation Mode: Favor Performance 控件
以下视频展示了将 Decorrelation Mode 设为 Favor Performance 时的滤波效果:
Favor Quality 使用另一种基于算法设计的去相关滤波器。它能有效减弱相位偏移效应,并最大限度地减少频谱着色。不过,它的计算成本要高一些。
Decorrelation Mode: Favor Quality 控件
以下视频展示了将 Decorrelation Mode 设为 Favor Quality 时的滤波效果:
Performance 与 Quality
由前面的示例不难发现,与 Favor Performance 相比,Favor Quality 通常能更有效地减弱相位偏移而不会带来频谱着色。不过,这样会占用更多 CPU 处理资源。Favor Performance 则能以更少的资源实现相对不错的效果,尤其是在涉及其他类型的声音的时候。在以下示例中,使用的声源为鼓声而非粉红噪声。在将 Decorrelation Strength 设为 15 的较低值时,相位偏移明显减弱,频谱着色也非常少!
不妨尝试为不同的声音设置不同的 Decorrelation Mode。您会发现有些声音可能更适合某种 Decorrelation Mode!
下表概述了不同的相位偏移减弱方法及其优缺点:
方法 |
概念 |
优点 |
缺点 |
编组 |
将所有 ToA 差值在一定范围内的反射并入直达路径 |
计算成本低于去相关滤波器,并且操作起来比较简单 |
反射只能跟直达路径编组、合并在一起。这样的话空间感知效果可能会有所下降 |
Decorrelation Mode:Favor Performance |
将反射的音频信号传给基于声学散射模型的去相关滤波器 |
计算成本低于 Favor Quality 去相关滤波器(计算成本随 Decorrelation Strength 的增大而增加) |
在减弱相位偏移方面的效果不佳,且会带来频谱着色 |
Decorrelation Mode:Favor Quality |
将反射的音频信号传给基于算法处理的去相关滤波器 |
在减弱相位偏移方面的效果较好,频谱着色相对较少 |
计算成本高于 Favor Performance 去相关滤波器 |
拓宽立体声像
除此之外,去相关滤波器还有其他的一些用途。比如,拓宽立体声像。Reflect 中就提供有这种功能。若要启用该功能,只需单击选中 Widen Stereo Field 复选框,确保 Distance Spread 曲线在给定距离内为某个非零值,且 Decorrelation Strength 大于 0。另外,调大 Decorrelation Strength 可进一步拓宽立体声声场。
Widen Stereo Field 控件
小结
在将 ToA 差值较小的声学反射叠加在一起时,产生的频谱会呈现为梳状图案,我们将之称为相位偏移。因为 Reflect 会对早期反射进行渲染,所以在有些情况下会出现相位偏移。在 Wwise 23.1 中,Reflect 提供了若干工具来减弱这种效应的干扰。
脚注
* 在音乐制作领域,类似波产生干涉图案的效果通常被称为“镶边”,但在这里我们使用了它的另一种说法:相位偏移。
** 这一梳状图案可能会让大家想起一个熟悉的术语:梳状滤波。
评论