【流媒体】音频相关概念详解

文章目录

      • 一、前言
      • 二、概述
      • 三、音频相关概念
        • 1、采样率(Sampling rate)
        • 2、位深度(Bit depth)
        • 3、比特率(Bit rate)
        • 4、声道(Audio channel)
        • 5、音频帧
        • 6、音频编码
        • 7、音频解码

一、前言

嵌入式音视频开发过程中涉及到的音视频相关概念有很多,本文对音频一些常见的术语和概念进行详细的介绍和总结。

二、概述

如何采集声音?

通过模数转换原理,声音模数转换是将声音信号从模拟形式转换为数字形式的过程。它是数字声音处理的基础,常用于语音识别、音频编码等应用中。

为什么音视频采集完之后,不能直接传输,要进行编码?

在音视频采集完之后,通常不会直接传输原始数据,而是要经过编码处理,主要原因有以下几个:

数据量过大: 原始音视频数据量非常庞大。例如,未经压缩的高清(1080p)视频,每秒的数据量可以达到数百MB,即使是未经压缩的音频数据也会占用较大的带宽。直接传输这些数据会占用过多的网络资源,甚至可能无法进行实时传输。

带宽限制: 大多数网络环境(尤其是互联网或无线传输环境)都存在带宽限制。将原始数据进行压缩编码可以大幅减少数据量,从而使得在有限的带宽内能够流畅地传输音视频数据。

存储空间: 原始音视频数据的存储需求极大,经过编码压缩后,可以显著减少所需的存储空间,使得数据更易于存储和管理。

传输可靠性和错误恢复: 编码协议中往往包含纠错和恢复机制,能够在传输中出现数据丢失或错误时进行恢复,确保接收到的音视频数据质量。这是原始数据所不具备的优势。

兼容性和标准化: 编码格式通常是标准化的,这意味着不同设备和平台之间可以互相兼容。例如,H.264是广泛应用的视频编码标准,不同的设备和软件都可以编码和解码这种格式的数据,提高了互操作性。

实时性要求: 为了满足实时传输的需求,编码算法可以进行优化,使数据传输和解码过程更为迅速,从而减少延时。这在实时通信(如视频通话、直播)中尤为重要。

安全性和版权保护: 编码过程中可以加入加密和数字版权管理(DRM)措施,保护数据的安全性和版权。这在商业应用和版权保护方面具有重要意义。

综合以上原因,对于大部分应用场景来说,通过编码压缩方式传输音视频数据既节省了传输带宽和存储空间,同时又能保证数据传输的效率和可靠性。因此音视频在采集完之后,通常都需要进行一定的编码处理,再进行传输。

三、音频相关概念

1、采样率(Sampling rate)

当我们想要数字化的记录声音时,需要将声音的模拟信号转换成数字信号,这个过程就是采样。采样率指的是在单位时间内(每一秒)采集的样本数量,通常用赫兹(Hz)表示。例如44100Hz,指的就是每秒采样数为44100,也常被简称为44.1KHz。

在这里插入图片描述
蓝色代表模拟音频信号,红色的点代表采样得到的量化数值。采样频率越高,红色的间隔就越密集。

具体来说,采样率越高,数字化的声音信号就越接近原始声音,所以采样率越高声音质量就越好,但是数字化文件的大小也会越大。常见的采样率有8kHz、16kHz、44.1kHz、48kHz等。语音通话、监控摄像头等,这些场景下,音频采样率一般只有8KHz,这个频率虽然听音乐是一种折磨,会一卡一卡的,但是对听清别人说话倒是一点问题没有。

2、位深度(Bit depth)

位深度,也叫位宽,采样精度,单位为Bit。上图中,每一个红色的采样点,都需要用一个数值来表示大小,这个数值的数据类型大小可以是:4bit、8bit、16bit、24bit等等,位数越多,则位深度越大,记录的样本数据精度就越高,表示得就越精细,声音质量自然就越好,当然,数据量也会成倍增大。

位深影响信号的信噪比和动态范围,也决定了文件的大小,理论上来说,位深越高,质量越好,同时其所生成的文件也越大。

笔者借用网络上看过的一个总结:声波,有频率和振幅,频率高低决定音调,振幅大小决定响度,采样率是对频率采样,位深是对振幅采样。

3、比特率(Bit rate)

比特率俗称码率。顾名思义,比特率就是Bit的速率的意思,意思为单位时间内(每一秒)传输或处理的Bit的数量。比如一个单声道,用44.1KHz/16Bit的配置来说,它的比特率就为 44100*16*1=705600,单位是bit/s,因为通常计算出来的数字都比较大,大家就用kbit/s了,也就是705.6kbit/s(也有人用bps,或者kbps来当比特率的单位,意思是一样的,bps是比特/秒(bits per second)的缩写,表示每秒钟传输的比特数)。

何为比特数?就是比特率乘以时长即可。1Byte(字节)等于8个Bit。通常情况下,文件大小的算法是这样的,比如,所选择的采样率为44100,位深为16Bit,单轨道,时长为60s,则Bits(比特数)的值为44100*16*1*60=42336000,然后我们再将Bits(比特数)转换成Byte(字节),直接除以8等于5292000个Byte,有了Byte我们就可以将其转换成KB或者M(结果大约是5168KB,5M左右)。

计算公式:Bits(比特数) = 采样率 x 位深 x 通道数 x 时长

以上计算的是不压缩的原始音频数据。

4、声道(Audio channel)

声道,是指在不同空间位置录制或播放声音时采集或播放的独立音频信号。通俗的讲就是:声道数就是声源个数。比如:单声道(Mono),采集源只有一个;双声道也称为立体声(Stereo),采集源有两个,分别为左和右;多声道即环绕声(Surround Sound),采集源有多个。

每个声道的声音样本都会单独记录,一般双声道的采样数是单声道的两倍,多声道同理。在数字音频处理中,立体声(左右通道)的采样数据可以有不同的排列方式,具体取决于音频文件的格式和存储标准。这里是两种常见的排列方式:

交错排列(Interleaved):
在交错排列方式中,左右通道的采样数据是交替存储的,每个通道的采样点依次排在一起。这是最常见的一种格式,广泛应用于WAV、AIFF等音频文件中。
例如,对于一个包含4个采样点的立体声样本,数据排列如下:

数据在内存中的实际排列方式为:L1, R1, L2, R2, L3, R3, L4, R4。

非交错排列或平面排列(Non-Interleaved or Planar):
在这种方式中,每个通道的数据是连续存储的,即所有左通道的数据存储在一起,然后是所有右通道的数据。某些专业音频处理软件和格式(如某些版本的FLAC)可能会使用这种方式。
使用相同的例子,数据排列如下:
在这里插入图片描述
数据在内存中的实际排列方式为:L1, L2, L3, L4, R1, R2, R3, R4。

以上两个排列方式各有优缺点,交错排列方式通常在播放和处理过程中更具效率,因为其数据连续性可以减少缓存缺失(cache miss)。而非交错排列方式可能在某些批处理或信号处理算法中略微简化操作,但在实时播放和任意读取时可能稍显复杂。

总的来说,交错排列(interleaved)是更为常见和普遍使用的方式,特别是在需要实时播放和处理的情况下。

声道越多,播放的音频效果越立体,但是存储的数据越大。

5、音频帧

理论上,音频并不需要音频帧的概念,因为音频采样数据和采样率已经可以把音频播放描述清楚了。

但是音视频文件播放时,为了保证音视频同步,程序需要根据每帧的播放时间戳进行有序播放。由于每个音频采样数据太小了,如果每个采样数据都记录播放时间戳的话,那么就得不偿失了。毕竟一个时间戳数据的大小比一个音频采样数据都大,所以就有了音频帧的概念。

音频帧的概念没有视频帧那么清晰,几乎所有视频编码格式都可以简单的认为一帧就是编码后的一幅图像。但音频帧跟编码格式相关,它是各个编码标准自己实现的。

音频帧实际上就是把一小段时间的音频采样数据打包起来,如每20ms的音频采样数据合并成一帧。这里的具体时间间隔是具体编码码格式决定的,一般不需要特别关心。
在这里插入图片描述

如果以PCM(未经编码的音频数据)来说,它根本不需要帧的概念,根据采样率和采样精度就可以播放了。比如采样率为44.1kHz,采样精度为16bit的音频,你可以算出bitrate(比特率)是44100*16 bps,每秒的音频数据是固定的44100*16/8字节。

对采样率为44.1kHz的AAC音频进行解码时,一帧的解码时间须控制在23.22毫秒内。通常是按1024个采样点一帧。
分析:
1、 AAC
AAC(高级音频编码)采用了一种称为MDCT(修正离散余弦变换)的技术来处理音频信号。MDCT在AAC中的一个帧长度为1024个采样点,是出于技术性能、压缩效率、音质以及标准化等多方面的考虑。

音频帧的播放时长 = 一个AAC帧对应的采样点个数 / 采样频率(单位为s)

一个AAC原始帧包含某段时间内1024个采样点相关数据。
44.1kHz采样率,表示每秒44100个采样点,则当前一帧的播放时长 = 1024*1000/44100 = 22.32ms。
48kHz采样率,则当前一帧的播放时长 = 1024*1000/48000 = 21.32ms。
22.05kHz采样率,则当前一帧的播放时长 = 1024 *1000/220500 = 46.43ms。

2、MP3
mp3每帧包含1152个采样点,则每帧播放时长 = 1152*1000/sample_rate(采样率)。
例如:sample_rate = 44100Hz时,计算出每帧播放时长 = 1152*1000/441000 = 26.122ms,这就是经常听到的mp3每帧播放时间固定为26ms的由来。

详细请看下图:
在这里插入图片描述

6、音频编码

音频编码是将原始的未压缩音频数据转换为压缩格式的一系列过程,目的是减少数据量,以便更高效地存储和传输。以下是常见的音频编码流程:

1、采样和量化(Sampling and Quantization)
采样:音频信号是连续的模拟信号,采样是将其在时间轴上以固定的间隔进行离散化,也就是每秒钟记录一定数量的音频样本,这个过程生成一系列离散的数据点。采样率通常以赫兹(Hz)为单位,例如44.1kHz表示每秒采样44100次。
量化:将这些离散的采样点的电压值转化为数字格式,通常是用二进制数表示。量化级别决定了每个采样点的精度,通常称为比特深度(bit depth),例如16位或24位越高的比特深度能表示的音频细节就越多。

2、预处理(Pre-processing)
过滤和去噪(Filtering and Denoising):优化音频信号的质量,对采样数据进行提前处理,包括去除噪音和不必要的频段。
分帧(Framing):将音频数据分割成小的帧(帧通常包含数百到数千个采样点),以便于后续处理。

3、变换和特征提取(Transformation and Feature Extraction)
变换(Transformation):通过数学变换(如快速傅里叶变换FFT或离散余弦变换DCT)将音频信号从时域转换到频域,这可以使得某些频率特性更容易被分析和处理。

4、压缩(Compression)
无损压缩(Lossless Compression):在不损失任何音频信息的前提下压缩数据,例如FLAC。如果需要保留音频的全部细节,可以选择无损压缩,但压缩率不高。
有损压缩(Lossy Compression):通过丢弃人耳不易察觉的音频信息来达到更高的压缩比例,例如MP3、AAC。这种方法有效减小文件大小,但会损失一些音质。

5、编码(Coding)
音频编码器(Audio Encoder):采用特定的编码算法将压缩后的音频数据转换为一种标准格式,这会涉及使用例如熵编码(Entropy Coding)(如哈夫曼编码)等技术,提高数据的压缩效率。
元数据添加(Adding Metadata):往编码数据中加入相关的元数据,如采样率、比特率、声道数等,以及文件的其他信息如标题、艺术家、专辑等。

6、封装(Packaging)
容器格式(Container Format):将编码后的音频数据和元数据存储在某种容器格式中。例如WAV、MP3、AAC等。

7、存储和传输(Storage and Transmission)
存储在本地或者通过网络传输。编码后的音频文件由于体积较小,因此能够高效地在各种平台和设备之间进行传输和共享。

总结
音频编码通过一系列复杂的处理步骤,大幅减少了音频数据量。这一过程涉及采样、量化、预处理、变换、压缩和编码等多个阶段,其目标是在音质和数据量之间取得平衡,以便更高效地存储和传输音频数据。无论是用于实时传输的有损编码,还是用于高保真存储的无损编码,不同的编码方式和技术满足了不同应用的需求。

音频编码标准

音频编码标准描述
PCM (Pulse Code Modulation)基本的脉冲编码调制方式,无损编码,采样率高,文件较大
G711 (A-law 和 µ-law)G.711是一种关键的音频编码标准,凭借其高语音质量、低延迟和广泛的兼容性,成为电话网络和VoIP服务中的重要组成部分,G.711并不是严格意义上的无损编码,G.711的语音质量通常被认为是接近于原始模拟信号的
MP3 (MPEG-1 Audio Layer 3)有损压缩音频编码,流行的音频格式,文件小,保留较高音质
AAC (Advanced Audio Coding)高级音频编码标准,有损压缩,音质优秀,常用于在线音频流媒体
OGG Vorbis开源音频编码,有损压缩,提供高音质,文件相对小
FLAC (Free Lossless Audio Codec)无损音频编码,保留原始音频质量,文件较大,用于音频编辑和存档
Opus开放式、免专利的音频编码标准,支持广泛的比特率,适用于语音通话和音频流传输
WMA (Windows Media Audio)微软开发的音频编码标准,有损压缩,适用于 Windows 平台
AC3 (Dolby Digital)杜比数字音频编码标准,多用于 DVD、蓝光光盘等视频音频压缩
DTS (Digital Theater Systems)数字影院系统音频编码标准,提供高质量环绕声音效果
ALAC (Apple Lossless Audio Codec)苹果无损音频编码标准,保留音频原始质量,适用于苹果设备
7、音频解码

音频解码的流程总体上可以分为以下几个步骤:

1、接收编码数据: 通过网络下载、存储设备读取等方式获取到编码的音频文件。通常,这些文件使用各种压缩和编码技术对原始音频数据进行了处理,以减少文件大小并便于传输。

2、解析文件格式: 了解音频文件的格式(如MP3、AAC、FLAC等),并准确解析文件头,以获取编码信息、采样率、声道数、比特率等关键参数。

3、提取编码数据: 从音频文件中提取出实际的音频数据流,这部分数据是经过压缩和编码后的,需要还原成原始的未压缩音频数据。

4、解码音频数据: 使用相应的解码算法将压缩的音频数据还原成原始的PCM (Pulse Code Modulation) 数字音频信号。这一步骤需要了解具体的编码/解码算法,比如MP3的霍夫曼编码、AAC的MDCT转换等。

5、音频处理(可选): 根据需求,对解码后的音频数据进行处理,比如增益调整、均衡、混音等。

6、输出音频: 将解码并处理过的PCM音频数据传输到音频输出设备,比如扬声器、耳机等,或者存储为新的音频文件。

这是一个较为简化的描述,各种编码格式和解码器可能有些具体操作上的差异,但大致流程一致。

有建议或疑问,评论区沟通交流。

该专栏下一篇文章我们对嵌入式音视频开发中视频相关概念进行详解。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

搭建自己的DNS服务器

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…

腺苷调节合成高密度脂蛋白用于三阴性乳腺癌的化学免疫治疗

引用信息 文 章:Adenosine-modulating synthetic high-density lipoprotein for chemoimmunotherapy of triple-negative breast cancer 期 刊:Journal of Controlled Release(影响因子:10.8) 发表时间&am…

深入探索:十种流行的深度神经网络及其运作原理

算法 深入探索:十种流行的深度神经网络及其运作原理一、卷积神经网络(CNN)基本原理工作方式 二、循环神经网络(RNN)基本原理工作方式 三、长短期记忆网络(LSTM)基本原理工作方式 四、门控循环单…

jupyter notebook默认工作目录修改

jupyter notebook默认工作目录修改 1、问题2、如何修改jupyter notebook默认工作目录 1、问题 anaconda安装好之后,我们启动jupyter notebook会发现其默认工作目录是在C盘,将工作目录放在C盘会让C盘很快被撑爆,我们应该将jupyter notebook默…

进阶篇01——存储引擎

MySQL体系结构 存储引擎 引擎有多种类型,MySQL支持多种存储引擎,默认的存储引擎为innodb。不同的存储引擎有不同的特点,适用不同的场景。 innodb存储引擎 简介 innodb的逻辑存储结构 MYISAM存储引擎 memory存储引擎 三种引擎特点对比&…

2024华为数通HCIP-datacom最新题库(变题更新③)

请注意,华为HCIP-Datacom考试831已变题 请注意,华为HCIP-Datacom考试831已变题 请注意,华为HCIP-Datacom考试831已变题 近期打算考HCIP的朋友注意了,如果你准备去考试,还是用的之前的题库,切记暂缓。 1、…

融合创新:Web3如何重新定义网络生态

随着区块链技术的不断发展和Web3时代的到来,我们正在见证着互联网生态的巨大变革。Web3将传统的互联网架构转变为去中心化、开放、透明的新网络生态,为创新和合作提供了全新的可能性。本文将深入探讨Web3如何重新定义网络生态,探索融合创新的…

WeTrade亮相Traders Fair展会菲律宾站

2024年5月25日,菲律宾交易博览会在马尼拉的Edsa香格里拉酒店圆满落幕。 WeTrade作为本次交易博览会的重要战略合作伙伴、参展商和赞助商,吸引了全球各界人士的广泛关注。 现场,我们的菲律宾团队与客户进行了亲密的面对面交流,并…

优思学院|精益生产学习过程中如何提高自己的能力水平?

精益生产是一项实践多过理论的课题。 优思学院认为实践并不限于实际的工作,日常的思考同样重要,例如我们会要求学员在学习时不断思考各种事物,不限于自己的企业。例如当你去到一家餐厅,你能夠观察到什么浪费?你可否把…

特征交叉系列:DCN-Mix 混合低秩交叉网络理论和实践

DCN-Mix和DCN-V2的关系 DCN-Mix(a mixture of low-rank DCN)是基于DCN-V2的改进版,它提出使用矩阵分解来降低DCN-V2的时间空间复杂度,又引入多次矩阵分解来达到类似混合专家网络MOE的效果从而提升交叉层的表征能力,若读者对DCN-V2不甚了解可…

部署kubesphere报错

安装kubesphere报错命名空间terminted [rootk8smaster ~]# kubectl apply -f kubesphere-installer.yaml Warning: apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16, unavailable in v1.22; use apiextensions.k8s.io/v1 CustomResourceDefini…

618科技好物清单:物超所值的产品推荐,总有一款适合你!

随着科技的不断发展,我们生活中涌现出了越来越多的科技创新产品。这些产品不仅让我们的生活变得更加便捷,还提升了我们的生活品质。而在即将到来的618购物节,正是我们购买这些物超所值科技好物的绝佳时机。 本文将为您推荐一些在618期间值得关…

英伟达的数字孪生地球是什么

1 英伟达的数字孪生地球 Earth-2是一个全栈式开放平台,包含:ICON 和 IFS 等数值模型的物理模拟;多种机器学习模型,例如 FourCastNet、GraphCast 和通过 NVIDIA Modulus 实现的深度学习天气预测 (DLWP);以及通过 NVIDI…

手撕设计模式——克隆对象之原型模式

1.业务需求 ​ 大家好,我是菠菜啊,前俩天有点忙,今天继续更新了。今天给大家介绍克隆对象——原型模式。老规矩,在介绍这期之前,我们先来看看这样的需求:《西游记》中每次孙悟空拔出一撮猴毛吹一下&#x…

pytorch-nn.Module

目录 1. nn.Module2. nn.Sequential容器3. 网络参数parameters4. Modules内部管理5. checkpoint6. train/test状态切换6. 实现自己的网络层6.1 实现打平操作6.2 实现自己的线性层 7. 代码 1. nn.Module 是所有nn.类的父类,其中包括nn.Linear nn.BatchNorm2d nn.Con…

肺结节14问,查出肺结节怎么办?哪些能用中医调治消散?快来了解一下吧

近些年,随着大众防癌意识的加强,和胸部低剂量CT的普及,肺结节的检出率也逐年升高,不少患者CT报告上,写着“肺小结”“肺部磨玻璃结节”的字样,当你看到这几个字时,会不会瞬间紧张起来&#xff1…

编程规范-代码检测-格式化-规范化提交

适用于vue项目的编程规范 – 在多人开发时统一编程规范至关重要 1、代码检测 --Eslint Eslint:一个插件化的 javascript 代码检测工具 在 .eslintrc.js 文件中进行配置 // ESLint 配置文件遵循 commonJS 的导出规则,所导出的对象就是 ESLint 的配置对…

简化电动汽车充电器和光伏逆变器的高压电流检测

在任何电气系统中,电流都是一个至关重要的参数。电动汽车 (EV) 充电系统和太阳能系统都需要检测电流的大小,以便控制和监测功率转换、充电和放电。电流传感器通过监测分流电阻器上的压降或导体中电流产生的磁场来测量电流。 金属氧化物半导体场效应晶体…

DBeaver连接MySQL提示“Public Key Retrieval is not allowed“问题的解决方式

问题描述 客户端root用户连接数据库出现出现Public Key Retrieval is not allowed 原因分析: 加上allowPublicKeyRetrievalfalse: 解决方案: allowPublicKeyRetrievaltrue:

Java Web学习笔记14——BOM对象

BOM: 概念:浏览器对象模型(Browser Object Model),允许JavaScript与浏览器对话,JavaScript将浏览器的各个组成部分封装为对象。 组成: Window:浏览器窗口对象 介绍:浏览…