设为首页 加入收藏

TOP

AR空间音频能力,打造沉浸式声音体验(一)
2023-07-23 13:31:58 】 浏览:96
Tags:空间音 能力

随着元宇宙的兴起,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
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Android 接收微信、QQ其他应用打.. 下一篇Android动态权限申请

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目