出色的游戏社交体验能够大幅提升玩家的活跃度和留存率。但想要打造极致的游戏社交体验,开发者同样也面临着诸多挑战。针对游戏场景中的特色音视频需求及技术难点,腾讯云实时音视频TRTC整合腾讯云在游戏及社交方向的长期技术积累及海量实践经验,进一步深度优化推出一站式游戏社交解决方案 —— 游戏多媒体引擎(Game Multimedia Engine, GME),帮助全球游戏开发者快速打造沉浸式游戏社交体验。为了让大家更好地了解这一方案,我们将通过系列文章带大家一起发现GME背后的功能及技术黑科技。

大部分游戏中的枪声、脚步声等周围环境声音是有 3D 音效的,但当玩家连麦时,不管队友在哪儿,他人说话的声音听上去都没有方向... 试想一下:当你手忙脚乱地“突突突”时,队友发来求助语音“我在旁边的茅房里中弹了!快来扶我……”,由于语音听上去没有方向,你看了地图才能判断队友的位置。而这1秒的犹豫,可能就导致了游戏的失利。

3D 空间语音为玩家提供了更多的听觉信息,玩家直接通过语音听声辨位就可以知道队友/敌方的位置,身临其境地感受到对方的存在。玩起来是不是就方便、有趣多啦?

快戴上耳机来感受下 3D 音效 🎧

很多游戏开发者开始问了:

3D 语音背后的技术原理是什么?

该如何将 3D 语音接入我的游戏呢?

听我们快快给你讲~

我们为什么能感知到声音方位?

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

如何模拟玩家声音的位置?

GME是怎么做到的?

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

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

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

GME 联合顶尖音频团队腾讯天籁实验室,推出了 3D 空间语音功能。通过高精度调优 HRTF 模型、距离衰减模型,还原玩家在虚拟世界中的身临其境般的游戏体验。通过对终端渲染算法的优化,运算效率提高近 50%,单音源空间化实时渲染复杂度在 0.5ms 左右,让绝大多数中低端设备也可以轻松完成实时 3D 音效渲染。针对渲染过程中信号分量衰减问题,GME 通过自研音频信号均衡补偿方法提升 3D 渲染效果,让游戏中的环境音更为通透。

腾讯天籁实验室

如何接入3D语音?

最后将带你认识两种 3D 语音接入模式,支持开发者根据游戏本身特性,选择更适合的接入方式:

接入方式一:「非 VR 游戏」开发者看这里⬇️

实现原理:

由于 3D 语音的实现是需要基于发声的方位、距离进行计算的,如果要实现 3D 语音的效果,需要一个关键的数据:位置坐标。通过这个坐标,我们可以得知在虚拟场景下所在的位置,计算出与“我”作为听众,和声音来源之间的距离,以及对应的方位信息。

为了方便开发者接入,GME 对整体的流程做了简化,只需要通过接口将本地的坐标信息方位信息传给 GME,GME 汇总数据后,计算房间内所有人的坐标信息和方位信息后得到 3D 信息。

此时通过本地上传,有了房间内每个说话的人在虚拟世界的位置信息,如何体现出 3D 效果呢?这个就需要第二个关键步骤,将语音进行“3D”化。这个位置信息会和语音流一起结合,来到接收语音的客户端。如果没有位置信息,这个声音就像普通的电话或者会议,直接播放出来,没有任何效果;但如果带了位置信息,结合GME本地的 3D 语音模型引擎,播放出来的声音就具有了 3D 效果。

具体接入步骤:

前提:已经调用了 EnterRoom 进房接口并进房回调中的结果为进房成功

在已经成功接入实时语音的情况下,进行 3D 语音的接入:

  1. 调用 InitSpatializer 初始化 3D 音效引擎
  2. 调用 EnableSpatializer 开启 3D 语音
  3. 调用 UpdateAudioRecvRange 设置衰减距离
  4. 实时调用 UpdateSelfPosition 实时更新自身方位信息

接入指南:

https://cloud.tencent.com/document/product/607/18218

接入方式二:「VR游戏」开发者看这里⬇️

为什么要专为VR游戏新增接入方式?

我们发现 VR 设备玩家对刷新率、声音响应时间、声音的空间感十分敏感,在强调实时互动性、沉浸式的 VR 游戏联机场景下,高质量、低时延的 3D 语音体验尤其重要。而市面上传统的 RTC 语音通话、现有的 3D 语音无法满足玩家需求,精准度与实时感还不够强。

实现原理:

我们在新版本 GME SDK 2.9.2 中对 3D 语音功能进行了进一步优化:通过本地直接调用 3D 音频模型,实时传入 3D 位置信息,实现更具有实时性的 3D 语音效果。

具体接入步骤:

前提:已经调用了 EnterRoom 进房接口并进房回调中的结果为进房成功

在已经成功接入实时语音的情况下,进行 3D 语音的接入:

  1. 调用 InitSpatializer 初始化 3D 音效引擎
  2. 调用 EnableSpatializer 开启 3D 语音
  3. 调用 UpdateAudioRecvRange 设置衰减距离
  4. 实时调用 UpdateSelfPosition 实时更新自身方位信息
  5. 实时调用 UpdateOtherPosition 实时更新房间内其他人方位信息(其他人的方位信息由业务层获取)

如果您有相关业务需求或想要进一步地了解腾讯云音视频产品内容,欢迎扫描下方二维码添加音视频小姐姐微信,与我们的产研团队深入沟通交流。

腾讯云音视频在音视频领域已有超过21年的技术积累,持续支持国内90%的音视频客户实现云上创新,独家具备RT-ONE™全球网络,在此基础上,构建了业界最完整的 PaaS 产品家族,并通过腾讯云视立方 RT-Cube™ 提供All in One 的终端SDK,助力客户一键获取众多腾讯云音视频能力。腾讯云音视频为全真互联时代,提供坚实的数字化助力。

文章来源于腾讯云开发者社区,点击查看原文