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

看过我们新一期的 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. hadoop单机测试环境安装(简)

    1.下载hadoop官网就可以下载.可以直接搜hadoop  ,  其实可以直接查看官网的版主文档搭建https://hadoop.apache.org/docs/stable/hadoop-proj ...

  2. 【Windows】查询端口占用并中止进程

    netstat -aon|findstr 7000 tasklist|findstr 14828 taskkill /pid 14828 /t /f

  3. 最简单明了的yield from解释

    def one(): print('one start') res = yield from two() print('function get res: ', res) return 'one' + ...

  4. ZSTUOJ平台刷题③:Problem A.--打印金字塔

    Problem A: 打印金字塔 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 10011  Solved: 6227 Description 请编写程序 ...

  5. gets,fgets,getchar,fgetc

    以上四个函数都是读取外部输入的函数.可以使stdin,也可以是文件.以下都是在C语言中的应用 关于gets和fgets都能够读取一行,一行结束的标志是"回车".都有弊端gets(s ...

  6. shell中产生随机字符串的方法

    random变量 echo $RANDOM 8746 生成0-32767之间的整数随机数,若超过5位可以加个固定10位整数,然后进行求余. 再结合md5生成字符串 echo $RANDOM |md5s ...

  7. 浙大版《C语言程序设计(第3版)》题目集 习题3-1 比较大小(10 分)

    本题要求将输入的任意3个整数从小到大输出. 输入格式: 输入在一行中给出3个整数,其间以空格分隔. 输出格式: 在一行中将3个整数从小到大输出,其间以"->"相连. 输入样例 ...

  8. iOS学习十二之选择器控件UIPickerView

    UIPickerView是一个简易的列表控件,用于提供有限个数的选项供用户选择. 它是通过代理和数据源的方法对其进行设置和数据源填充的,这种控件的设计模式也是代理模式的应用之一. 添加下面的代码即可实 ...

  9. QPushButton与Enter相链接

    ui->pushButton_login->setFocus(); // 设置默认焦点 ui->pushButton_login->setShortcut(QKeySequen ...

  10. 问题记录[ PPOME 修改子屏幕日期弹框,No changes to data, periods undone. Message no. 5A496 ]

    最近在做组织信息增强,将子屏幕嵌入PPOME后,修改日期后会弹出信息框并重置300屏幕的开始日期.且PO13和PP01无异常 刚开始以为7000屏幕配置问题,但是对比后并没发现异常.跟踪消息号发现函数 ...