AR空间音频能力,打造沉浸式声音体验

ar,空间,音频,能力,打造,沉浸,声音,体验 · 浏览次数 : 783

小编点评

**空间音频在 AR 场景中的应用** **简介** 随着元宇宙的发展,空间音频成为虚拟现实 (VR) 和增强现实 (AR) 的重要组成部分。空间音频会让用户在虚拟环境中更加沉浸式地体验现实世界的三维空间。 **技术原理** 空间音频利用听音辨位的双耳效应原理,通过双耳间的音量差、时间差和音色差判别左右耳机的声音特性,从而提供沉浸式的空间音频体验。 **模型文件制作** 空间音频模型通常使用 3D 模型技术创建,并需要根据 VR 场景的具体要求进行调整。 **开发步骤** 1. **检查 XRKit availability**:检查当前设备是否安装了 XRKit,因为空间音频通常需要 XRKit 功能。 2. **创建 AR 场景**:使用 `XrKitFeatureFactory` 创建一个 AR 场景,并设置其参数。 3. **绑定视图**:将场景视图添加到应用布局中。 4. **选择模式**:根据需要选择 AR 模式或 3D 模式。 5. **加载模型和背景**:加载空间音频模型和背景。 6. **设置平面的可见性**:设置平面的可见性。 7. **添加音频**:在场景中添加空间音频,并设置其全局唯一 ID。 8. **播放音频**:在场景中播放空间音频,并根据需要设置播放模式。 **注意** * 确保空间音效引擎已初始化。 * 添加的音频在设备与模型的距离小于等于 5 米时生效。 * 仅支持 MP3 和 WAV(PCM)格式音频。

正文

随着元宇宙的兴起,3D虚拟现实广泛引用,让数字化信息和现实世界融合,目前大家的目光主要聚焦于视觉交互层面,为了在虚拟环境中更好的再现真实世界的三维空间体验,引入听觉层面必不可少,空间音频孕育而生。

空间音频是一种音频体验,会让用户更容易体验到声音的立体感和深度,将环绕声更准确地定位在合适的方位,让用户在生理上获得更身临其境的环绕效果。目前主要应用在AR、VR、语音视频聊天室、在线会议、在线游戏、虚拟演唱会等,以及对象音频制作等场景。

针对开发者的需求,华为HMS Core AR Engine XR Kit在AR展示(ARSceneView)中新增空间音频能力,在已经加载的模型上添加音频后,XR Kit内部根据设备和模型的空间位置变化,模拟真实世界中音频的发声,提升听觉体验。不佩戴耳机,只能感受音频的声音大小变化,佩戴耳机后,可以同时感受音频的声音大小及方位变化,空间音频效果体验更佳。

技术原理

利用听音辨位的双耳效应原理,依靠双耳间的音量差、时间差和音色差判别声音方位的效应,也就是说空间中音源的声波从不同的方向传播到左右耳的路径不同、时间不同,以及耳廓中的折射、反射、吸收等,从而导致音量、音色、延迟等在左右耳会产生不同的变化,这些声波变化过程就是声波的空间传递函数。

空间音频是预先测量记录在模拟的消音室环境中全方位声音传到人耳的变化过程HRTF(Head Related Transfer Functions头部相对传输函数),然后上层传入的声源和听者的空间信息(三维位置信息和三维旋转信息),以计算出听者和声源的相对空间信息,并根据HRTF数据库得到当前相对空间信息下的两个声道的HRTF响应脉冲函数,与当前双声道音频数据进行卷积计算渲染出左右耳的声音直传双耳,从而可以实现听音辨位。

华为HMS Core AR Engine XR Kit未来将根据开发者的述求,逐步开放空间音频引擎的更多能力。针对开放几何空间,将开放多普勒效应、距离衰减、回声等技术,提升在开放空间中相对运动时的空间音效体验;针对密闭几何空间,将引入房间声学,例如实现遮挡、透射、反射、吸收、回声等基础音效算法,更好的实现密闭几何空间的3D声效,还原真实听感。

开发步骤

1. 开发环境要求:

在华为终端设备上的应用市场下载XRKit服务端APK(需在华为应用市场,搜索“华为XRKit”)并安装到终端设备。

JDK 1.8.211及以上;

安装Android Studio 3.0及以上:

minSdkVersion 27及以上

targetSdkVersion 29(推荐)

compileSdkVersion 29(推荐)

Gradle 6.1.1及以上(推荐)

测试应用的设备:参见AREngine特性软硬件依赖表

如果同时使用多个HMS Core的服务,则需要使用各个Kit对应的最大值。

2. 开发准备

在开发应用前需要在华为开发者联盟网站上注册成为开发者并完成实名认证,具体方法请参见帐号注册认证

参见创建项目和在项目下创建应用完成应用的创建,配置如下:

“选择平台”:选择“Android”。

“支持设备”:选择“手机”。

“应用分类”:选择“应用”或“游戏”。

华为提供了Maven仓集成方式的XRKit SDK包,在开始开发前,您需要将XRKit SDK集成到您的开发环境中,特别注意的是XRKit的Android版本要是1.6.0.0及其以上。

Android Studio的代码库配置在Gradle插件7.0以下版本、7.0版本和7.1及以上版本有所不同。请根据您当前的Gradle插件版本,选择对应的配置过程。

以7.1版本为例:

打开Android Studio项目级“build.gradle”文件,添加Maven代码库;

在“buildscript > repositories”中配置HMS Core SDK的Maven仓地址:

buildscript {
     repositories {
        google()
        jcenter()
        maven {url "https://developer.huawei.com/repo/" }
    }
}

打开项目级“settings.gradle”文件,配置HMS Core SDK的Maven仓地址。

pluginManagement {
     repositories {
         repositories {
             google()
             jcenter()
             maven {url "https://developer.huawei.com/repo/" }
         }
     }
}
dependencyResolutionManagement {
     repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
         repositories {
         repositories {
             google()
             jcenter()
             maven {url "https://developer.huawei.com/repo/" }
         }
     }
}

在项目应用级的“build.gradle”文件中“dependencies”添加编译依赖。

dependencies {
     implementation 'com.huawei.hms:xrkitsdk:{version}'
}

3. 应用开发

3.1 模型文件制作

在使用XRKit能力之前,您需要准备模型文件,用于在虚拟现实中展示,模型文件制作规范请参见模型文件规范说明

3.2 运行前验证

检查当前设备是否安装了XRKit,若已经安装则正常运行。具体实现代码如下:

if (!XrKitFeatureFactory.isXrKitExist(getApplicationContext())) {
Toast.makeText(this, "XRKit is not available ", Toast.LENGTH_SHORT).show();
return false;
}

3.3 创建AR场景

使用XRKit特性组件工厂类XrKitFeatureFactory,实例化特性组件管理对象xrKitFeature并设置特性事件监听,特性事件监听用来获取XRKit服务端上报的必要特性事件。xrKitFeature可根据需求创建不同AR场景,本例创建的是AR展示场景(ArSceneView)。

try {
     if (xrKitFeature == null) {
     xrKitFeature = XrKitFeatureFactory.createXrKitFeature(getApplicationContext());
     }
     // Register a feature listener.
     xrKitFeature.setFeatureEventListener(this);
     // Create arSceneView.
     sceneView = xrKitFeature.createArSceneView(getApplicationContext());
} catch (XrKitUnavailableServiceApkTooOldException e) {
     Toast.makeText(this, "XRKit Service is Too Old, Please upgrade!",
Toast.LENGTH_SHORT).show();
     return false;
}

3.4 绑定视图到应用布局

获取当前场景的视图,绑定视图到应用的UI布局当中。

layout.addView(sceneView.getView(), 0, new ConstraintLayout.LayoutParams(
     ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));

3.5 选择模式

Ar展示场景(ArSceneView)有AR模式和3D模式两种模式,可根据需求选择AR模式或3D模式。

AR模式:即虚实结合,您可以构建能在用户环境中响应的图像(如家具或产品包装)的AR应用。

3D模式:虚拟动画,您可以利用此功能构建展示动画的AR应用。

// AR模式
sceneView.setArMode(true);
// 3D模式
sceneView.setArMode(false);

3.6 设置场景

加载虚拟模型、设置3D场景的背景、设置AR场景下平面的可见性。

sceneView.loadModel(GONGCHENGSHI, "gongchengshi");
sceneView.setBackground(IMG_BLACK);
sceneView.setPlaneVisible(true);

在activity的onResume方法中调用sceneView的resume方法,启动sceneView场景。

protected void onResume() {
     Log.d(TAG, "activity resume.");
     super.onResume();
     if (sceneView != null) {
        sceneView.resume();
     }
}

3.7 添加空间音频

在模型处添加音频,若此时空间音效引擎未做初始化,会实施初始化的动作。目前只支持MP3和WAV(PCM)格式音频。标识音频的全局唯一ID需要您根据业务需求指定,传入重复的ID,不会覆盖已经添加的音频。添加的音频在设备与模型的距离小于等于5米时生效。

model.attachSoundToModel(String soundId, String soundUrl)  // 在模型处添加音频
    String soundId,   例如:“Sound_Chariots_Repeat”
    String soundUrl,  例如: “assets://sounds/chariots.mp3”
model.detachSoundFromModel(String soundId)            // 从模型中删除音频。
model.playSound(String soundId, int playMode)                 // 开始播放音频。
    playMode有两种模式(参考IModel):
    int PLAY_MODE_ONCE                         // 播放一次音频。
    int PLAY_MODE_REPEAT                       // 循环播放音频。 
model.pauseSound(String soundId)                               // 暂停播放音频。

了解更多详情>>

访问华为开发者联盟官网
获取开发指导文档
华为移动服务开源仓库地址:GitHubGitee

关注我们,第一时间了解 HMS Core 最新技术资讯~

与AR空间音频能力,打造沉浸式声音体验相似的内容:

AR空间音频能力,打造沉浸式声音体验

随着元宇宙的兴起,3D虚拟现实广泛引用,让数字化信息和现实世界融合,目前大家的目光主要聚焦于视觉交互层面,为了在虚拟环境中更好的再现真实世界的三维空间体验,引入听觉层面必不可少,空间音频孕育而生。 空间音频是一种音频体验,会让用户更容易体验到声音的立体感和深度,将环绕声更准确地定位在合适的方位,让用

超越datetime:Arrow,Python中的日期时间管理大师

介绍 Arrow是一个Python库,它提供了一种合理且对人类友好的方法来创建、操作、格式化和转换日期、时间和时间戳。它实现了对datetime类型的更新,填补了功能上的空白,提供了一个智能的模块API,支持许多常见的创建场景。简单来说,它可以帮助您使用更少的导入和更少的代码来处理日期和时间。 Ar

AR人体姿态识别,实现无边界的人机交互

近年来,AR不断发展,作为一种增强现实技术,给用户带来了虚拟和现实世界的融合体验。但用户已经不满足于单纯地将某件虚拟物品放在现实场景中来感受AR技术,更想用身体姿势来触发某个指令,达到更具真实感的人机交互功能。 比如在AR体感游戏中,用户不必点击按键进行频繁操作,通过某个姿势即可触发;在拍摄短视频时

AR Engine光照估计能力,让虚拟物体在现实世界更具真实感

AR是一项现实增强技术,即在视觉层面上实现虚拟物体和现实世界的深度融合,打造沉浸式AR交互体验。而想要增强虚拟物体与现实世界的融合效果,光照估计则是关键能力之一。 人们所看到的世界外观,都是由光和物质相互作用而决定的,当光源照射到物体上时,光线通过被吸收、反射和透射等方式,传递给人们物体的颜色、亮度

AR手势识别交互,让应用更加“得心应手”

现如今, AR技术不断发展,人们不再满足于运用键盘、鼠标等简单器械来实现传统的人机交互模式。随着用户接触机器的多样化,繁琐的操作不但对一些用户有门槛,而且还增加其学习成本;如果能用自然且符合日常生活习惯的人机交互模式,不仅更好上手,也能让开发者们在应用内开发更多玩法。比如在视频直播或者拍照过程中,一

AR Engine毫秒级平面检测,带来更准确的呈现效果

近年来,AR版块成为时下大热,这是一种将现实环境中不存在的虚拟物体融合到真实环境里的技术,用户借助显示设备可以拥有真实的感官体验。AR的应用场景十分广泛,涉及娱乐、社交、广告、购物、教育等领域:AR可以让游戏更具互动性;商品通过AR展示更真实;使用AR进行教育教学让抽象事物更形象等,可以说AR技术已

ARKit的理解与使用

AR概述 AR的意义:让虚拟世界套与现实世界建立联系,并可以进行互动。 AR的技术实现:通过实时地计算摄影机输出影像的位置及角度,并在内部通过算法识别将场景中的事物,然后在内部模拟的三维坐标系中给识别到的事物建立坐标,然后在特定的坐标上添加相应的图像、视频、3D模型,最终通过手机屏幕合成一个AR效果

如何在现实场景中随心放置AR虚拟对象?

随着AR的发展和电子设备的普及,人们在生活中使用AR技术的门槛降低,比如对于不方便测量的物体使用AR测量,方便又准确;遇到陌生的路段使用AR导航,清楚又便捷;网购时拿不准的物品使用AR购物,体验更逼真。 想要让虚拟物体和现实世界相融合,重要的一步就是将虚拟对象准确放置在现实场景中,当用户触摸电子屏幕

如何让虚拟角色自然融入现实?

随着AR的发展,虚拟角色被广泛应用在游戏、直播、社交等App中。例如在直播App里,商家可以自由打造虚拟主播的形象,通过AR算法可以让虚拟形象在介绍时做到不遮挡实物商品,提升直播真实性和趣味性。那么,如何让虚拟角色自然融入现实,实现与用户的真实交互呢? 华为HMS Core AR Engine提供单

[转帖]50年来Intel CPU变化有多大?频率从0.75MHz提升到5.2GHz

https://m.baidu.com/bh/m/detail/ar_9297450181050583423?data_from=lemon 今天(11月15日)是Intel推出4004处理器50周年的日子,当初为日本计算器客户开发的芯片成为全球首个微处理器,并且改变了Intel的发展,从当初的内存