在现在很多的线上实时互动场景中,我们重视的不仅仅是互动体验,还要提升沉浸感。而在很多场景中,仅凭空间音频技术,就可以带来如临其境的体验。空间音频技术的原理是怎样的呢?

看过我们新一期的 RTC 科普视频,你就知道了。

空间音频技术是以算法的方式将现实中的听感,在数字世界中重建了出来。既然是重建,那么要理解这个过程,就需要先了解,现实中,我们是如何通过耳朵、大脑来要感知到一个声音在空间中的位置的。

要解决这个问题,我们可以将判断声音位置的过程拆解一下,即:

● 如何判断声源与你水平方位

● 如何判断声源与你的垂直方位

● 如何判断声源与你的距离

事实上,我们是依靠双耳间的音量差、时间差和音色差来判别声音的方位。由于双耳位于头部两侧,如果声音是来自右侧,那么它到达右耳的时间相对更短,这就行程了双耳时间差;声音在传播过程中,频率会衰减,那么双耳之间听到的音色也会不同。

在室内环境中,耳朵听到的声音包括直达声、早期反射声、后期混响声。直达声就是字面意思,从声源直接传到耳朵的声音;早期反射,则是经过室内墙面反射后传到耳朵的,相比直达声晚 50 - 80ms;在早期反射之后到达的声音则是后期混响。就像刚刚所说,声音传播中会有衰减,所以声源与耳朵的距离是能够被听出来的。通常来讲,声源与耳朵的距离增加一倍,直达声的声压就会减小 50%,而早期反射与后期混响的声压则不会受到这么明显的影响。我们的大脑就会基于直达声与早期反射+后期混响的声压比来判断声源的距离。

在这期的科普视频中,我们对以上原理都做了讲解。为了让更多人能有画面感,便于想象声音传播的过程,我们用“水”作为类比。不过,要再次提醒各位,水波的传播与声波在空气中的传播过程有很大差别,大家不要等同视之。

另外,我们在视频里简要地讲解了如何在虚拟现实(VR)中重建空间音频。其中提到的算法,我们并没有深入讲解,如果你感兴趣,可以查看我们往期的文章

最后,如果大家还希望了解哪些技术原理,欢迎给我们留言。

RTC 科普视频丨聊聊空间音频的原理与其背后的声学原理的更多相关文章

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

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

  2. HMS Core音频编辑服务音源分离与空间音频渲染,助力快速进入3D音频的世界

    从单声道.立体声.环绕声发展到三维声,音频回放技术的迭代演进是为了还原真实世界的声音.其中,三维声技术使用信号处理的方法对到达两耳的声音信号进行模拟,将声场还原为三维空间,更接近真实世界.凭借这个技术 ...

  3. 聊聊并发(一)深入分析Volatile的实现原理

    本文属于作者原创,原文发表于InfoQ:http://www.infoq.com/cn/articles/ftf-java-volatile 引言 在多线程并发编程中synchronized和Vola ...

  4. 【科普】MySQL中DDL操作背后的并发原理

    一. 简介 DQL:指数据库中的查询(select)操作. DML:指数据库中的插入(insert).更新(update).删除(delete)等行数据变更操作. DDL:指数据库中加列(add co ...

  5. [SimplePlayer] 4. 从视频文件中提取音频

    提取音频,具体点来说就是提取音频帧.提取方法与从视频文件中提取图像的方法基本一样,这里仅列出其中的不同点: 1. 由于目的提取音频,因此在demux的时候需要指定的是提取audio stream Au ...

  6. Android音视频之AudioTrack播放音频(二)

    前一篇讲了如何录制wav音频文件,本篇就来讲讲如何播放wav文件,这里就是使用AudioTrack来播放音频,确切的说是播放pcm格式数据,使用AudioTrack播放也没什么难度,主要就是将数据写入 ...

  7. 技术应用丨DWS 空间释放(vacuum full) 最佳实践

    摘要:本文主要介绍如何进行正常的VACUUM FULL 维护,及时释放磁盘存储. 1.背景 目前根据某项目情况,其DWS的磁盘IO性能低.库内数据量大.对象多.数据膨胀严重.若毫无目的性的进行空间释放 ...

  8. Web RTC录视频

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 空间金字塔池化(Spatial Pyramid Pooling, SPP)原理和代码实现(Pytorch)

    想直接看公式的可跳至第三节 3.公式修正 一.为什么需要SPP 首先需要知道为什么会需要SPP. 我们都知道卷积神经网络(CNN)由卷积层和全连接层组成,其中卷积层对于输入数据的大小并没有要求,唯一对 ...

  10. 聊聊Cookie、Session、Token 背后的故事

    摘要:Cookie.Session.Token 这三者是不同发展阶段的产物 本文分享自华为云社区<Cookie.Session.Token 背后的故事>,作者: 龙哥手记. 1. 网站交互 ...

随机推荐

  1. iOS OC开发,文件的下载、预览

    /// 下载/打开 - (void)downloadActionWithDownloadString:(NSString *)downloadString{ //url : 下载地址 NSString ...

  2. Vscode,php运行

    1.下载好vscode,点击左侧扩展,然后搜索php,安装插件 2.打开小皮面板创建网站 点击确认 创建成功 3.浏览器输入http://myblog验证 4.在vscode打开新建的myblog文件 ...

  3. char和int的类型转换

    char类型是16位的,底层采用unicode编码保存.char类型是可以直接赋值给int类型的,因为是16位到32位低到高.举个例子比如int i='1';打印i的值是49.char类型跟int类型 ...

  4. vue3.0+vite按需引入element plus

    1.安装vite-plugin-style-import yarn add vite-plugin-style-import -D 2.在项目根目录下的vite.config.js中配置 import ...

  5. java调用c++的几种方式

    jni 类似c#调用c++的方式,定义java端的c++代码接口. package crayon.jni; public class JNITest { public native static vo ...

  6. linux 系统安装配置jdk + mysql + redis (离线状态)

    ​ 系统版本:centos7.7 环境搭建(离线状态) 安装java环境 安装配置mysql数据库 安装配置redis数据库 安装java环境 jdk版本:jdk-8u5-linux-x64.rpm ...

  7. nacos启停脚本

    nacosServer.sh #!/bin/bash #auther by wangxp PWD=`pwd` #配置java环境变量 JAVA_HOME=/u01/java_home/jdk1.8.0 ...

  8. C++ 几款IDE和编程平台的选择分析

    最近闲来无事,就研究了一下几个编程平台和IDE.首先,我必须强调一下,这些方案研究并不一定适用于商业公司内部编程平台选择,而是给个人学习或者闲暇之余把玩用的.主要从以下几个指标考量:使用体验.跨平台. ...

  9. C# winform DataGridView 一列显示星号

    private void myDataGrid_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventA ...

  10. linux 安装 jupyter notebook

    虚拟机使用的是ubuntu系统 直接遇见一个问题 E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) E: 无法锁定管理目录(/var/lib/dpkg/ ...