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

看过我们新一期的 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. Taro 弹窗阻止小程序滑动穿透(亲测有效) tabbar数据缓存不更新 入口场景值不同

    v3.0 推出后反馈最多的问题之一,就是在 touchmove 事件回调中调用 e.stopPropagation() 并不能阻止滑动穿透. 这是因为 Taro 3 的事件冒泡机制是单独在小程序逻辑层 ...

  2. IIS10.0 Web平台安装程序无法安装URL重写工具

    Windows10系统的IIS10.0需要安装URL rewrite重写模块2.0,提示"很遗憾,无法安装下列产品",解决方法: win键+R键,运行regedit,打开注册表编辑 ...

  3. 小凡的Python之路——安装

    小凡的Python之路--安装 第二天是周六,俩人约定九点半在图书馆二楼最西边的阅览室里共同学习Python.吃过早饭,小凡背着电脑向图书馆走去. 小文一直在学习Python?这是小凡最大的疑问.至少 ...

  4. ansiable学习

    ansiable是用来做什么的? Ansible是一个配置管理和配置工具,是运维开发人员的批操作利器. ansiable是怎样实现高效的? 在一台机器上配置好模板,通过ssh在其他机器上按照模板执行. ...

  5. STM32工程建立

    STM32工程建立 对于用keil5建立stm32工程有两种方法,一种在学习过程中比较方便的建立方式:我们称为工程方式一,另一个便是在实际工程中用的最多,也最普遍,在实际过程中用的最多的,我们称为工程 ...

  6. select * into,insert into,create table

    SELECT * INTO Table2 FROM Table1要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中 INSERT I ...

  7. nginx二进制安装脚本

    #!/bin/bash NGINX_FILE=nginx-1.22.0#NGINX_FILE=nginx-1.20.2#NGINX_FILE=nginx-1.18.0NGINX_URL=http:// ...

  8. vue中自动将px转换成rem

    1.首先下载 lib-flexible npm install lib-flexible --save 2.在main.js中引用 lib-flexible 3.安装px2rem-loader(将px ...

  9. AntD为Form的List设置默认值 (antd form.list 设置默认值 )

    import React from "react"; function demo() { const FormConfig = { labelCol: { span: 8 }, w ...

  10. 转型.netCore开发 记录日常问题

    1.页面问题 asp-for date字段页面显示时间为"yyyy-MM-dd"类型通过@{}来处理,定义常量,将处理后的值赋值给常量,再通过@常量正常赋值例:@{ var beg ...