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

看过我们新一期的 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. 【RTOS】《基于嵌入式实时操作系统的程序设计技术》——任务的划分与封装

    任务的划分与封装 关键任务的划分处理 对于某些对于系统的正常运作至关重要,少执行一次会对系统产生较大影响的功能,我们倾向于将它从原有任务中剥离出来,称为关键任务,用一个独立任务或者ISR(如外部中断) ...

  2. 初探AOP

    1.背景介绍 1.什么是AOP 1)在OOP(面向对象编程)中,正是这种分散在各处且与对象核心功能无关的代码(横切代码)的存在,使得模块复用难度增加.  2)AOP则将封装好的对象剖开,找出其中对多个 ...

  3. bgp多线互联

    BGP(边界网关协议)主要用于互联网AS(自治系统)之间的互联,BGP的最主要功能在于控制路由的传播和选择最好的路由. 中国网通 .中国电信.中国铁通.教育网和一些大的民营IDC运营商都具有AS号,全 ...

  4. iOS用runtime给一个类动态添加方法 ---class_addMethod

    先介绍下class_addMethod这个fangfa   /**   * Adds a new method to a class with a given name and implementat ...

  5. JLink OB SWI 取代串口打印的方式

    1:debug的串口被占用 2:从Keil 迁移到的LINUX下开发. 3:手上只有JLinkOB,(4线:CLK,SWIO,GND,RST) 4:设备只引出了4线(SWO 没接出) 环境: JLin ...

  6. 搭建react项目

    1.打开新建的项目空文件夹,终端输入命令:npm init,文件夹生成package.json文件: 2.安装webpack.webpack-cli和cross-env:npm install web ...

  7. excel的几个常用方法

    --笔记开始: 1.if(条件,真值,假值),类似于编程语言中的三元运算符.条件为真时返回真值,条件为假时返回假值. 2.match(目标值,查找区域,查找类型),一般查找类型为0(等值查找),查找区 ...

  8. function | fastica

    fastica - Fast Independent Component Analysis FastICA for Matlab 7.x and 6.x Version 2.5, October 19 ...

  9. Thread的状态变更

    [需注意的是:运行中(Running)和就绪(Ready)并不是 Java 的线程状态] public enum State { NEW, RUNNABLE, BLOCKED, WAITING, TI ...

  10. mysql数据库如何支持emoji表情

    mysql数据库的默认字符集utf8,只能存储3个字节的数据.标准的emoji表情是4个字节,在APP端输入 保存表情是用户的普遍需求和行为. 插入数据库报错如下: java.sql.SQLExcep ...