声音是如何产生的

一、音频概述

RTMP中一般音频采用aac编码,采样率为44100HZ, 每帧1024采样,帧率43,23.2ms一帧
RTC中一般音频采用opus编码,采样率为48000HZ,每帧480采样,帧率100,10ms一帧

通道数(channels)

声音的通道数,常用的有单声道和立体声之分。

采样频率

也称为采样速度,定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(HZ)来表示,例如44.1Hz

采样位数(采样格式)

采样格式是为了实现度量每个采样点。通常使用16bit(2字节),也就是2的16次方,共有65536个不同的度量值,这样采样位数越高,音频度量化的就越精细,音质同样也就越高。

采样个数(样本数)

对于采样频率,采样频率是一秒采样的个数,例如48000HZ,每秒采样个数为48000,44100HZ,每秒采样个数为44100。

而对于一帧音频的采样个数,AAC固定一帧采样1024个,MP3格式则为1152。

计算一帧音频的大小
一帧音频的大小(字节) = 通道数 x 采样个数 x 采样位数。

例如该音频帧是FLTP格式的PCM数据,那么就是aac,所以一帧中包含1024个采样个数,并且是双声道的话,那么该音频帧包含的数据量是 2 x 1024 x 4 = 8192字节。 若格式改成AV_SAMPLE_FMT,那那么采样位数是64位8字节,数据量为 2 x 1024 x 8 = 16384字节。

每秒播放的音频字节大小
每秒播放的音频字节大小(字节) = 通道数 x 采样个数 x 采样位数。

公式是一样的,但是由于求的是每秒的数据量而不是一帧的数据量,所以我们需要知道它的采样频率。 例如当采样频率为48kHZ时,一秒包含48k个采样个数而不是1024个,同样是双声道,FLTP格式,那么每秒的数据量是 2 x 48000 x 4 = 384000字节。

一帧音频的播放时长
一帧播放时间(毫秒) = 每帧样本数 * 1000 / 采样率

以采样率44100HZ来计算,每秒44100个sample,而正常一帧为1024个sample,由于比是相等的,可知每帧播放时间/1024 = 1000ms/44100,得到每帧播放时间= (1024 * 1000) / 44100 = 23.2ms(更精确的是23.21995464852608)。

或者用另一种方式去理解公式,1s显示的帧数 = 44100 / 1024 = 43.06640625帧。所以每一帧的播放时长 = 1s / 43.06640625 = 1000ms / 43.06640625 = 23.21995464852607ms。和上面的公式一样(浮点数尾部运算存在极小误差是正常)。 帧率:44100(每秒的采样) / 1024(每帧的采样)= 43帧/s

所以转换一下公式: 一帧播放时间(毫秒) = 1000ms / (44100 / 1024) = 1000ms * 1024 / 44100 = 23.2ms(更精确的是23.21995464852607)。

关于音频时间精度的例子

例如当采样频率为44.1kHZ:一帧播放时间(毫秒) = nb_sample样本数 * 1000 / 采样率 = 1024 * 1000 / 44100 = 23.21995464852608ms,约等于23.2ms,精确损失了0.011995464852608ms,如果累计10万帧,误差 > 1199毫秒,如果有视频一起的就会出现音视频同步的问题,如果按着23.2msm去计算pts(0 23.2 46.4 …)就会有累积误差。

二、声波

波形叠加原理

声波是一种机械波,遵循叠加原理,当两个波形相遇时,它们的振幅会相加,如果一个波形与其完全相反的波形(相位相差180度)叠加,理论上会相互抵消,这也叫做相位反转或者音频反向。可利用这个原理进行噪声消除,通过分析原始音频中的噪声部分,可以生成一个与噪声波形完全相反的波形。将这个反向波形添加到原始音频中,理论上可以抵消噪声部分。

波是一种能量传播的形式,不涉及物质的整体移动。波通过介质中的粒子振动来传播能量。

叠加原理状态:当两个或多个波在同一介质中传播时,每个波的效果是独立的,总效果是各个波效果的代数和。当两个波相遇时,它们会同时影响介质中的同一粒子,每个波都试图使粒子按照自己的方式振动,粒子的实际运动是这些独立影响的综合结果。

同相波:如果两个波的相位相同,它们的振幅会直接相加,导致更大的振幅。

反相波:如果两个波的相位相差180度,它们的振幅会相互抵消

当两个或多个波相遇时,它们会暂时相互影响,产生叠加效果,但在相遇后,每个波会继续按照自己原有的方向、速度、频率和振幅传播,就像它们从未相遇过一样。

每个波保持其独立性,不会因为与其他波的相遇而永久改变其特性,在一个嘈杂的房间里,尽管有多种声音混合在一起,但你仍然能够分辨出特定的声音(如某人的说话声)。这是因为每个声波在相互叠加后仍保持其原有特性。当两个水波圈相遇时,它们会在交叉点产生干涉图案,但通过这个区域后,每个波仍然保持其原有的形状和传播方向。

空气是声波传播的主要介质之一,声波通过空气分子的压缩和膨胀来传播。温度、湿度、密度等因素会影响波(尤其是声波)在空气中的传播速度和衰减。空气的流动(如风)也会影响波的传播方向和速度。

振幅是波从平衡位置到波峰(或波谷)的最大位移,它表示波的强度或"大小"。在波形图上,振幅是从中线(平衡位置)到波峰或波谷的垂直距离。

频率指的是每秒钟声波振动的次数,单位是赫兹(Hz),一般来说,频率越高,我们感知到的声音音调就越高,频率低的声音我们听起来音调较低,超过20,000 Hz的声波称为超声波,人耳通常听不,低于20 Hz的声波称为次声波,同样难以被人耳直接感知。

音调是我们感知声音"高低"的主观体验,在音乐中,音调直接对应音符(如C、D、E等)。响度是我们感知声音"大小"或"强弱"的主观体验,主要由声波的振幅(强度)决定,振幅越大,感知的响度通常越大,客观上用分贝(dB)来测量声压级,在音乐中体现为音量的强弱变化。

三、分子是如何振动的

声波本质上是一种能量传递的形式。它通过介质(如空气)中的压力波动来传播。空气由分子组成(主要是氮气和氧气分子)。这些分子之间存在微弱的相互作用力。声波通常由物体的振动产生(如扬声器振膜、声带振动等)。这种振动首先推动附近的空气分子。被推动的分子会与周围的分子发生碰撞。通过这些碰撞,能量从一个分子传递到另一个分子。空气具有一定的弹性。当分子被挤压时,它们会产生反作用力,试图恢复原来的位置。分子具有质量,因此也具有惯性。这意味着它们倾向于保持运动状态。声波在传播过程中创造了局部的压力差。高压区的分子会向低压区移动,造成振动。这种压力波动和分子运动的过程不断重复。结果是一种连续的、波状的能量传递。不同频率的声波会导致分子以不同的速率振动。这就是为什么我们能听到不同音调的声音。

声波是一种纵波,即振动方向与波传播方向平行,它通过空气中的压缩和膨胀区域传播。空气分子在声波影响下沿着波的传播方向前后振动。它们不会随波传播而持续移动,而是在原位置附近振动。

声波传播时,会形成交替的高压(压缩)和低压(膨胀)区域。在压缩区域,分子被挤压在一起。在膨胀区域,分子相对分散。分子通过碰撞将能量传递给相邻分子。这种能量传递导致声波在空气中传播。分子振动的幅度很小,通常在纳米级别。分子振动的频率与声波频率相同。

尽管单个分子的运动微小,但大量分子的集体运动产生了我们能感知的声音。

声波的能量最终会转化为热能。这就是为什么声波会随距离衰减。

四、音频3a

3A 音频处理技术,是声学回声消除(AEC)、背景噪声抑制(ANS)、自动增益控制(AGC)三种音频算法的合称。

在音频数据的处理过程中,在音频数据采集完成之后需要进行预处理,3A 是预处理的关键。

AEC 回声消除算法原理及详解

回声消除(AEC)是指在二线传输的两个方向上同时间、同频谱地占用线路,在线路两个方向传输的信号完全混在一起,本端发信号的回波就成为了本端信号的干扰信号,利用自适滤波器可抵消回波以达到较好的接收信号质量,即为回声消除。

回声消除的原理就是利用接收到的音频与本地采集的音频做对比,添加反向的人造回声,将远端的声音消除。

在容易产生回声的通信场合,自适应回声消除算法是一项不可缺少的技术,其主要应用领域有视频会议系统、免提电话、可视电话终端、移动通信或声控系统及会议麦克风等。

尤其在视频会议系统和免提语音通话中,回声的存在严重影响会议质量,特别是在企业远程会议中,由于传输延时加大,回声的影响更加恶劣明显。

ANS 背景噪声抑制方法和作用

背景噪声抑制(ANS)指的是将声音中的背景噪声识别并进行消除的处理。

背景噪声分平衡噪声瞬时噪声,平稳噪声频谱稳定,瞬时噪声频谱能量方差小,利用噪声的特点,对音频数据添加反向波形处理即可消除。

目前,对于平稳的噪声已经有很多种简单方法能够成功抑制,但是生活中常见的一些瞬态噪声却依然缺乏好办法。

瞬态噪声的共同特点就是突发性极强,在时域上呈振荡衰弱的形式,持续时间在十几毫秒至上百毫秒不等;在频域上分布很宽,瞬态噪声的频谱基本上是和正常语音的频谱混叠在一起,很难进行抑制。

AGC 自动增益算法实现与影响

自动增益控制(AGC)主要用于调整音量幅值,提高语音通信系统在带噪声环境中的性能。

人们正常交谈的音量在 40-60dB 之间,低于 25dB 的声音听起来很吃力,而超过 100dB 的声音会让人感到不适,AGC 的作用就是将音量调整到人接受的范围

音频响度及麦克风拾音控制是保证音视频沟通质量的重要技术手段,一般来说,音频标准、传输条件、人为失误等因素都可能导致音频信号之间出现声音突变或者响度不一致的情况,这时候就需要对音频信号放大或缩小以得到自然清晰的语音通信。

参考融云音频3a:音频 3A 处理实践,让你的应用更「动听」 – 融云 Blog-融云即时通讯云|实时音视频

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/949749.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是中间件中间件有哪些

什么是中间件? 中间件(Middleware)是指在客户端和服务器之间的一层软件组件,用于处理请求和响应的过程。 中间件是指介于两个不同系统之间的软件组件,它可以在两个系统之间传递、处理、转换数据,以达到协…

问题清除指南|关于num_classes与 BCELoss、BCEWithLogitsLoss 和 CrossEntropyLoss 的关系

前言:关于「 num_classes 1 」引发的探究。 2024年尾声,学弟问到一个问题:在研究工作 CNNDetection 的github开源代码 networks/trainer.py 文件的 line 27 self.model resnet50(num_classes1) 中,变量 num_classes 的值为1&…

FinDKG: 用于检测金融市场全球趋势的动态知识图谱与大型语言模型

“FinDKG: Dynamic Knowledge Graphs with Large Language Models for Detecting Global Trends in Financial Markets” 论文地址:https://arxiv.org/pdf/2407.10909 摘要 动态知识图(DKG)能够表示对象间随时间变化的关系,适用于…

Robot---奇思妙想轮足机器人

1 背景 传统机器人有足式、轮式、履带式三种移动方式,每种移动方式都有各自的优缺点。轮式机器人依靠车轮在地面上移动,能源利用率高、移动速度快,但是仅以轮子与地面接触,缺乏越障能力和对复杂地形的适应能力,尤其面对…

高效工作流:用Mermaid绘制你的专属流程图;如何在Vue3中导入mermaid绘制流程图

目录 高效工作流:用Mermaid绘制你的专属流程图 一、流程图的使用场景 1.1、流程图flowChart 1.2、使用场景 二、如何使用mermaid画出优雅的流程图 2.1、流程图添加图名 2.2、定义图类型与方向 2.3、节点形状定义 2.3.1、规定语法 2.3.2、不同节点案例 2.…

.NET框架用C#实现PDF转HTML

HTML作为一种开放标准的网页标记语言,具有跨平台、易于浏览和搜索引擎友好的特性,使得内容能够在多种设备上轻松访问并优化了在线分享与互动。通过将PDF文件转换为HTML格式,我们可以更方便地在浏览器中展示PDF文档内容,同时也更容…

Tableau数据可视化与仪表盘搭建-可视化原则及BI仪表盘搭建

目录 可视化原则 BI仪表盘搭建 仪表盘搭建原则 明确仪表盘主题 仪表盘主题拆解 开发设计工作表 经营情况总览:突出显示的文字 经营数据详情:表格 每日营收数据:多轴折线图 每日流量数据:双轴组合图 新老客占比&#xf…

AIA - APLIC之三(附APLIC处理流程图)

本文属于《 RISC-V指令集基础系列教程》之一,欢迎查看其它文章。 1 APLIC复位 APLIC复位后,其所有状态都变得有效且一致,但以下情况除外: 每个中断域的domaincfg寄存器(spec第 4.5.1 节);可能是machine-level interrupt domain的MSI地址配置寄存器(spec第4.5.3 和4.5…

unity学习5:创建一个自己的3D项目

目录 1 在unity里创建1个3D项目 1.1 关于选择universal 3d,built-in render pipeline的区别 1.2 创建1个universal 3d项目 2 打开3D项目 2.1 准备操作面板:操作界面 layout,可以随意更换 2.2 先收集资源:打开 window的 AssetStore 下载…

AI赋能跨境电商:魔珐科技3D数字人破解出海痛点

跨境出海进入狂飙时代,AI应用正在深度渗透并重塑着跨境电商产业链的每一个环节,迎来了发展的高光时刻。生成式AI时代的大幕拉开,AI工具快速迭代,为跨境电商行业的突破与飞跃带来了无限可能性。 由于跨境电商业务自身特性鲜明&…

我用Ai学Android Jetpack Compose之Text

这篇开始学习各种UI元素,答案来自 通义千问,通义千问没法生成图片,图片是我补充的。 下述代码只要复制到第一个工程,做一些import操作,一般import androidx.compose包里的东西,即可看到预览效果。完整工程代…

HashMap总结使用+原理+面试

文章目录 1.Hashmap的基本使用创建hashmap对象。遍历hashmap统计字母出现的次数用来投票计算返回JSON数据 2.hashmap源码阅读put源码阅读 3. HashMap 面试题目hashmap实现的原理什么时候数组需要进行扩容hashmap怎么确定把数据放到那个节点的哪个位置。为什么用 n - 1 与运算&a…

JS中函数基础知识之查漏补缺(写给小白的学习笔记)

函数 函数是ECMAScript中 最有意思的部分之一, 主要是因为函数实际上是对象.-- 每个函数 都是Function类型的实例,Function也有属性和方法. 因为函数是对象,所以函数名就是指向函数对象的指针. 常用的定义函数的语法: ①函数声明 ②函数表达式 ③箭头函数 function sum (n…

Skyeye 云 VUE 版本 v3.15.3 发布,涉及 ERP、OA、财务等

Skyeye 云智能制造,采用 Springboot winUI 的低代码平台、移动端采用 UNI-APP。包含 30 多个应用模块、50 多种电子流程,CRM、PM、ERP、MES、ADM、EHR、笔记、知识库、项目、门店、商城、财务、多班次考勤、薪资、招聘、云售后、论坛、公告、问卷、报表…

LInux单机安装Redis

1. 安装gee工具包 由于Redis是基于c语言编写的所以安装的时候需要先安装gee以及gcc的依赖,yum云用不了可以看一下这个 linux 替换yum源镜像_更换yum镜像源-CSDN博客 yum install -y gcc tcl 2. 添加redis的压缩包 3. 上传到Linux 上传到 /usr/local/src 目录、这个目录一般用于…

热备份路由HSRP及配置案例

✍作者:柒烨带你飞 💪格言:生活的情况越艰难,我越感到自己更坚强;我这个人走得很慢,但我从不后退。 📜系列专栏:网路安全入门系列 目录 一,HSRP的相关概念二,…

java开发springoot

阅读理解 命令之间空一行:表示前面的是配置 红色背景:表示待验证蓝色背景:表示常用或推荐绿色背景:注意/推荐 json 转 对象 import com.fasterxml.jackson.databind.ObjectMapper; public DebangResp convertJsonToObject(Stri…

gesp(C++一级)(17)洛谷:B4062:[GESP202412 一级] 温度转换

gesp(C一级)(17)洛谷:B4062:[GESP202412 一级] 温度转换 题目描述 小杨最近学习了开尔文温度、摄氏温度和华氏温度的转换。令符号 K K K 表开尔文温度,符号 C C C 表摄氏温度,符号 F F F 表华氏温度&am…

windows ping ssh

问题解决1:局域网内,为啥别人ping不到我的IP 问题解决2:ssh连接windows10拒绝连接 第一步:ssh使用的22端口,首先确认windows10的22端口是否开启。 –开启步骤 1.控制面板–>Windws Defender 防火墙–>高级设置…

《Rust权威指南》学习笔记(二)

枚举enum 1.枚举的定义和使用如下图所示: 定义时还可以给枚举的成员指定数据类型,例如:enum IpAddr{V4(u8, u8, u8, u8),V6(String),}。枚举的变体都位于标识符的命名空间下,使用::进行分隔。 2.一个特殊的枚举Option&#xff0…