参考文章
- 音频相关的基础知识: https://zhuanlan.zhihu.com/p/91837880
- 音视频基本概念:分辨率、帧速率、码流、采样位深、采样率、比特率https://ccf19881030.blog.csdn.net/article/details/109051111?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-109051111-blog-110136419.235%5Ev29%5Epc_relevant_default_base3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-109051111-blog-110136419.235%5Ev29%5Epc_relevant_default_base3&utm_relevant_index=2
- https://www.cnblogs.com/smartNeo/p/14788021.html
- 音频之声道那些事:https://www.cnblogs.com/smartNeo/p/14789302.html
- 音视频基础知识—音频编码格式 https://zhuanlan.zhihu.com/p/69901270
1. 基础名词概念
1.1 原始音频模拟信号转数字信号流程
(1)采样:模拟信号首先被等间隔地取样,这时信号在时间上就不再连续了,但在幅度上还是连续的。经过采样处理之后,模拟信号变成了离散时间信号。
(2)量化:每个信号采样的幅度以某个最小数量单位△的整数倍来度量。这时信号不仅在时间上不再连续,在幅度上也不连续了。经过量化处理之后,离散时间信号变成了数字信号。
(3)编码:将数字信号编码成B位长度的二进制字。虽然在量化之后信号已经变成了数字信号,但二进制字的表示方法有很多。ADC还要根据精度、动态范围及实现成本等多个角度选择所需的二进制编码方式。
经过编码处理之后得到的信号才是我们通常所说的比特流。对这个比特流的处理才是通常所说的数字信号处理。在数字信号处理理论中,经过采样处理得到离散信号是最为关键的一步。只有在考虑到具体实现的时候,量化和编码的问题才必须要考虑。这也是数字信号处理有时也称为离散时间信号处理的原因所在。
因此,从上述看原始的声音设备录制音频到最后存储的声音文件大概经历如下的流程:采样->量化->编码->存储。
1.2 采样
模拟信号(连续信号)是连续的,意味着不会失真(音质好),比如磁带、唱片中就通过物理介质(通过唱片表面的起伏跌宕,或者是磁带上的磁粉引起的磁场强度来表示音箱上振膜的即时位置)保存着音频的模拟信号。但是物理手段无法长期保存音频。因此考虑使用数字手段来保存音频。也就是将音频转换为数字。
如何将音频转为数字呢?首先先通过图中「采样」手段,将模拟信号转为离散信号,离散信号可以理解为不连续信号,把一段连续函数按照一定规则断开。如下图所示:
上图为CD标准的采样信号图,图中的「采样率44.1Khz」就是断开函数的规则,每 1s 将一段波分为 44100 个矩形,经过采样,得到了一个有一堆柱形图组成的图形(离散信号)
- 为什么音频的采样率是 44.1Khz 呢?
对于高质量的音频(人耳能够听到的频率范围是 20hz-20Khz),根据采样定理,按比人能听到的最大频率的2倍进行采样可以保证声音在被数字化处理后,还能有质量保障。
1.3 量化
量化其实就是把上图采样得到的矩阵块数字化。
在采样后,并没有一个规则表示每段样本的数字大小。因此引入量化的概念来表示每个采样音频的大小。通俗易懂地讲「量化」就是在沿水平方向再将信号图按照一定数字范围切断,保证每段样本能用数字描述。这个数字的最终物理意义是反应在音响振膜位置,比如用[0-10万]进行量化,最终反应在振膜的位置就是 0-10万。
- 那么CD的量化标准是什么呢?
采用16bit(short),也就是2的16次方,总共65536,然后为了由于振膜是可以发生正向和负向位移,所以用[-32767,32768]进行量化。
图中虚线范围就代表了量化的数字范围,最终的红色曲线就是量化的结果,数字信号。
1.4 编码
PCM数据是经采样、量化和编码后得到最原始声音数据,PCMA和PCMU是在PCM的基础上采用不同的算法近一步加工得到的PCM数据,分别称为PCMA和PCMU。
经过量化后,每一个采样都是一个数字,那这么多的数字该如何存储呢?这就需要第三个概念:「编码」,所谓编码,就是按照一定的格式记录采样和量化后的数据,比如顺序存储或压缩存储等。
这里涉及很多种格式,通常所说的音频的裸数据格式就是脉冲编码调制数据,简称 PCM (Pulse Code Modulation)。描述一段 PCM 通常需要以下三个概念:
- 量化格式(SampleFormat)
- 采样率(SampleRate)
- 声道数(Channel)
还以CD标准为例,量化格式 16bit,采样率 44100,声道数 2。
这里对声道概念做一个补充,平时所谓的双声道、单声道其实可以理解为需要记录几个信号,比如磁带,双声道就是同一时刻记录两个轨道的信息,一个负责记录左耳机振膜位置,一个负责记录右耳机振膜位置,以此类推,多个声道也是类似。
上述信息就描述了CD的音质,对于声音格式来说,还有另一个概念用来描述它的大小,称为数据比特率(bitRate),即 1s 内的比特数目,用于衡量音频数据单位时间内的容量大小,那么比特率如何计算?
b
i
t
R
a
t
e
=
s
a
m
p
l
e
F
o
r
m
a
t
∗
s
a
m
p
l
e
R
a
t
e
∗
c
h
a
n
n
e
l
N
u
m
b
e
r
bitRate=sampleFormat * sampleRate * channelNumber
bitRate=sampleFormat∗sampleRate∗channelNumber
单位为千比特每秒kbps(kb per second,注意非千字节)。
比如对于CD音质,
44100
∗
16
∗
2
=
1378.125
k
b
p
s
44100 *16*2=1378.125 kbps
44100∗16∗2=1378.125kbps
那么,一分钟里,CD音质数据需要占多大存储空间呢?
1378.125
∗
60
/
8
/
1024
=
10.09
M
B
1378.125*60/8/1024=10.09MB
1378.125∗60/8/1024=10.09MB
所以一段1分钟的音频经过采样、量化、编码后可以得到一个大约10MB裸数据,成功地将音频的模拟信号转为数字信号,并存储下来。
疑问:
此处计算存储占用为什么不是:
音频文件的大小 = 1 ∗ 1411200 / 1024 / 8 / 1024 音频文件的大小 = 1 * 1411200 / 1024 / 8 / 1024 音频文件的大小=1∗1411200/1024/8/1024
1KB = 1024 Byte
1Byte = 8bit
解答:存储的计算用1000来换算
1.5 压缩编码
音频的压缩分为有损压缩和无损压缩。
- 有损压缩就是通过删除一些已有数据中不太重要的数据来达到压缩目的。
- 无损压缩就是通过优化排列方式来达到压缩目的。
1.5.1 常见压缩编解码格式
音频编码格式汇总
(1) WAV
WAV编码的一种实现(有多种实现方式,但是都不会进行压缩操作)就是在PCM数据格式的前面加上44字节,分别用来描述PCM的采样率、声道数、数据格式等信息。
特点:该格式其实未对原始音频做任何压缩,因此音质非常好,大量软件都支持。
适用场合:多媒体开发的中间文件、保存音乐和音效素材。
(2) MP3(有损)
MP3具有不错的压缩比,使用LAME编码(MP3编码格式的一种实现)的中高码率的MP3文件,听感上非常接近源WAV文件,当然在不同的应用场景下,应该调整合适的参数以达到最好的效果。
特点:音质在128Kbit/s以上表现还不错,压缩比比较高,大量软件和硬件都支持,兼容性好。
适用场合:高比特率下对兼容性有要求的音乐欣赏。
(3) AAC(有损)
AAC是新一代的音频有损压缩技术,它通过一些附加的编码技术(比如PS、SBR等),衍生出了LC-AAC、HE-AAC、HE-AAC v2三种主要的编码格式。
LC-AAC是比较传统的AAC,相对而言,其主要应用于中高码率场景的编码(≥80Kbit/s);
HE-AAC(相当于AAC+SBR)主要应用于中低码率场景的编码(≤80Kbit/s);
而新近推出的HE-AAC v2(相当于AAC+SBR+PS)主要应用于低码率场景的编码(≤48Kbit/s)。事实上大部分编码器都设置为≤48Kbit/s自动启用PS技术,而>48Kbit/s则不加PS,相当于普通的HE-AAC。
特点:在小于128Kbit/s的码率下表现优异,并且多用于视频中的音频编码。
适用场合:128Kbit/s以下的音频编码,多用于视频中音频轨的编码。
(4) Ogg(有损)
Ogg是一种非常有潜力的编码,在各种码率下都有比较优秀的表现,尤其是在中低码率场景下。Ogg除了音质好之外,还是完全免费的,这为Ogg获得更多的支持打好了基础。Ogg有着非常出色的算法,可以用更小的码率达到更好的音质,128Kbit/s的Ogg比192Kbit/s甚至更高码率的MP3还要出色。但目前因为还没有媒体服务软件的支持,因此基于Ogg的数字广播还无法实现。Ogg目前受支持的情况还不够好,无论是软件上的还是硬件上的支持,都无法和MP3相提并论。
特点:可以用比MP3更小的码率实现比MP3更好的音质,高中低码率下均有良好的表现,兼容性不够好,流媒体特性不支持。
适用场合:语音聊天的音频消息场景。
(5) APE(无损)
与MP3这类有损压缩格式不可逆转地删除(人耳听力不敏感的)数据以缩减源文件体积不同,APE这类无损压缩格式,是以更精炼的记录方式来缩减体积,还原后数据与源文件一样,从而保证了文件的完整性。
APE由软件Monkey’s audio压制得到。相较同类文件格式FLAC,ape有查错能力但不提供纠错功能,以保证文件的无损和纯正;其另一个特色是压缩率约为55%,比FLAC高,体积大概为原CD的一半,便于存储。
APE作为一种无损压缩音频格式,通过Monkey’s Audio这个软件可以将庞大的WAV音频文件压缩为APE,,体积虽然变小了,但音质和原来一样。通过Monkey’s Audio解压缩还原以后得到的WAV文件可以做到与压缩前的源文件完全一致。所以APE被誉为“无损音频压缩格式”,Monkey’'s Audio被誉为“无损音频压缩软件”。
简单来讲,APE 压缩与WinZip或WinRAR这类专业数据压缩软件压缩原理类似,只是APE等无损压缩数字音乐之后的APE音频文件是可以直接被播放的。APE的压缩速率是动态的,压缩时只压缩可被压缩部分,不能被压缩的部分还是会保留下来。
(6) FLAC(无损)
FLAC中文可解释为无损音频压缩编码。FLAC是一套著名的自由音频压缩编码,其特点是无损压缩。不同于其他有损压缩编码如MP3 及AAC,它不会破坏任何原有的音频资讯,所以可以还原音乐光盘音质。2012年以来它已被很多软件及硬件音频产品(如CD等)所支持.
FLAC与MP3不同,MP3是音频压缩编码,但FLAC是无损压缩,也就是说音频以FLAC编码压缩后不会丢失任何信息,将FLAC文件还原为WAV文件后,与压缩前的WAV文件内容相同。这种压缩与ZIP的方式类似,但FLAC的压缩比率大于ZIP和RAR,因为FLAC是专门针对PCM音频的特点设计的压缩方式。而且可以使用播放器直接播放FLAC压缩的文件,就象通常播放你的MP3文件一样(近几年已经有许多汽车播放器和家用音响设备支持FLAC,在FLAC的网站上你可以找到这些设备厂家的链接)。
FLAC是免费的并且支持大多数的操作系统,包括Windows,基于Unix Like内核( (Linux,BSD,Solaris,IRIX, AIX等)而开发的系统,BeOS,OS/2,Amiga。并且FLAC提供了在开发工具autotools,MSVC,Watcom C,Project Builder上的build系统。
1.6 声道
1.6.1 声道是什么
声道是指在不同空间位置录制或播放声音时采集或播放的独立音频信号。通俗的讲就是:声道数就是声源总数,比如:录制棚内在不同方位上安放的录音器,最后录制的音频就是多声道的;播放多声道的音频文件,不同声道的音频信号通过对应声道的扬声器播放出来。
1.6.2 声道类型
(1) 单声道
单声道的音频只有一个音源,它是一种比较原始的再现声音的方式;它的主要目的是让人感觉声音只在一个地方发出来。单声道音频在双声道或多声道设备上播放,每个声道的音频信号完全一致,没有一点点差异,起不到立体效果。
(2) 立体声
立体声是使用两个或多个独立音频通道的声音再现,其方式可产生从各个方向听到的声音的感觉,就像在自然听觉中一样。将不同的扬声器插入到不同的声道上,扬声器中就会播放对应的声道音频信号。现实中使用最多的是双声道的耳机,有时候我们会感觉耳机左右的声音信号强弱不同,声音也有差别,这说明当前播放的音频是立体声的;如果听起来完全没什么区别,就是单声道的音频。
(3) 4.0环绕声
4.0环绕声也就是四声道,4.0环绕声在将四个扬声器放置到四个角落的场景非常有用。听众可以听到四个方位传入耳朵的声音。该环绕声系统设备放置方位如下:
(4) 5.1环绕声
5.1环绕声系统使用6个通道,其中5个标准通道和1个超低音通道。该环绕声系统设备放置方位图如下:
(5) 7.1环绕声
7.1环绕声系统使用8个声道,其中7个标准声道和1个超低音声道。该环绕声系统设备放置方位图如下:
1.7 重采样
(1) 什么是重采样
将音频三元组(采样率、采样大小、通道数)的值转成另外一组值。三元组其中任意一个值发生改变就称为重采样, 例如44100/16/2 转成 48000/16/2
(2) 为什么要重采样
- 从设备采集的音频数据与编码器要求的数据不一致
- 扬声器要求的音频数据与要播放的音频数据不一致
- 更方便运算(回音消除须使用单声道,需要先转换)
(3) 如何知道是否需要进行重采样
- 要了解音频设备的参数(在设备管理中查看相应要求)
- 查看ffmpeg源码(包括各平台几乎所有编解码器实现)
(4) 重采样的步骤
- 创建重采样上下文
- 设置参数
- 初始化重采样
- 进行重采样
2. 流程
2.1 音频的采集传输和播放
最简单的音频录制流程为:
设备采集获取模拟信号 —》模数转换 —》存储(播放、传输等)
播放端流程相反:
音频文件 —》数模转换 —》播放器播放