让游戏沉浸感炸裂的实时3D音效技术原理与实践(上)

3D音效最常见的应用场景是在游戏中。过去,游戏中的3D音效(如枪声、脚步声)普遍基于传统游戏开发引擎(如Unreal、Unity)实现,但当玩家联麦时,原本不管游戏中队友在哪儿,它的声音听上去都差不多。试想一下,在大家都手忙脚乱地“突突突”时,队友发来求助语音“我在你东南方向10米的茅房里中弹了快来扶我……”,你还得看一眼地图再判断判断他们在哪儿。要是能直接听声辨位,玩起来是不是就方便多了?接着戴上耳机再感受一下:

没有3D效果

具有3D效果

要实现听声辩位,首先得知道,我们为什么能感知到声音的方位?

我们能感知到声音的方位,主要是由于同个声源传到左右双耳时的音量、延时等信息是不一样的。具体点说,我们通过双耳信号间的时间差、声级差、音色差来判断水平横向定位;耳廓起到类似梳状滤波器的左右帮助在复合声中判断出纵向定位;根据声级大小、频谱状况和个人经验等因素来判断深度定位。

那么,如何模拟声音传播到双耳间的差异,从而模拟出声音的位置?

这里就需要头部相关数据传输函数HRTF(Head-Related Transfer Function)来完成这项工作。它可以看成是声音信号从声源处传播到双耳的综合滤波过程,该过程包括空气滤波、周围环境的混响和人体(躯干、头部、耳廓等)的散射、反射等滤波过程。

目前,业界有比较成熟的开源HRTF库。工程师们是这样做的:准备一个内置麦克风的人体头部模型,在某个空间位置播放原音源,对比麦克风收录的声音和原音源,就能得出一个HRTF。由于人耳对于声源空间方位的感知灵敏度有限,无需测量所有空间位置对应的HRTF,所以现有HRTF库通常是在空间球面上选取1000左右采样点来进行测量。

真正完成实时语音3D虚拟化功能,不只是简单地调用HRTF函数,还需要将游戏世界映射为真实环境,并进行高频运算。它的实现的过程大致如下:假设有N个玩家正在游戏中连麦,由于游戏的实时性要求很高,为了保证游戏的流畅度,每个玩家终端在20ms的单位时间内,至少接受(N-1)个包含语音信息和相对地理位置的数据包。根据语音信息、相对地理位置信息选用适合的HRTF算法,融合游戏地图中声源传播路径上是否有阻挡、玩家在游戏中所处的环境音(比如流水声、空旷房间回声)等信息,最终在玩家设备终端渲染出逼真的实时3D音效。

整个过程计算工作非常密集,有些中低端的设备无法承受。如何让玩家终端设备消耗最少的资源,又保证游戏流畅度一直是业界探究的方向。此外,部分HRTF库对于音源信号中的某些频率衰减较为严重,尤其是对于包含丰富频率成分的乐器声影响更加明显。这不仅影响音源定位准确性,也会导致最终输出的环境音中乐器声较为沉闷。

为此,基于腾讯天籁音频解决方案,腾讯云游戏多媒体引擎GME推出了实时语音3D虚拟化功能。通过对终端渲染算法的优化,运算效率提高近50%,单音源空间化实时渲染复杂度在0.5ms左右,让绝大多数中低端设备也可以轻松完成实时3D音效渲染。另外,针对渲染过程中信号分量衰减问题,GME通过自研音频信号均衡补偿方法提升3D渲染效果,让乐器等游戏中的环境音更为通透。不止于此,作为一站式语音解决方案,GME还提供了噪声抑制、回声消除、增益控制、信源编码、语音均衡等功能,一次接入满足多重需求。

目前,GME已支持多平台接入,如windows,android,iOS,macOS,xbox,PS4,Switch,VR设备。特别值得一提的是,腾讯云GME是国内首家支持VR设备上实时语音3D虚拟化的云服务解决方案。

过去游戏行业重视抢流量和用户,品质倒是次要的。但随着游戏存量市场的到来,日渐成熟的玩家很难再被质量粗劣的游戏吸引。在音效等细节中注入匠心,制作精良的游戏作品才能具备长久的生命力。做好这些,其它的只需要把投票权交给玩家。

扫码关注腾讯云游戏多媒体引擎GME微信公众号

阅读 437

推荐阅读