一.数字音频       1.1 采样
      1.2 量化
      1.3 编码
二. 音频编码
      2.1 压缩比
            无损压缩
            有损压缩
      2.2 压缩编码 
            2.2.1 WAV编码
            2.2.2 MP3编码
            .2.3 AAC编码
            2.2.4 Ogg编码

一.数字音频

 为了将模拟信号数字化,将会有三个操作分别是采样、量化和编码

1.1 采样

首先要对模拟信号进行采样,所谓采样就是在时间轴上对信号进行数字化
根据奈奎斯特定理(也称为采样定理),按照声音最高频率的 2 倍以上的频率对声音进行采样(也称为AD转换),对于高质量的音频信号,其频率范围(人类能够听到的频率范围)是20Hz~20kHz,所以采样频率一般为44.1kHz,这样就可以保证采样声率达到20kHz也能被数字化,从而使得经过数字化处理之后,人类听到的声音质量不会被降低。
所谓的 44.1kHz 就是代表 1 秒会采样44100次(如下图)。

mediarecorder默认采样率 采样率 音频_码率

 那么,具体的每个采样又该如何表示呢?这就涉及将要讲解的第二个概念:量化。

1.2 量化:

    量化是指在幅度轴上对信号进行数字化,例如 用16 比特的二进制信号来表示声音的一个采样,而16比特(C语言中一个short类型的长度)所表示的范围是[-32768,32767],共有65536个可能取值,因此最终模拟的音频信号在幅度上也分为了65536层(如下图)。

mediarecorder默认采样率 采样率 音频_数据_02


 既然每一个量化都是一个采样,那么这么多的采样该如何进行存储呢?这就涉及将要讲解的第三个概念:编码。

1.3 编码

所谓编码,就是按照一定的格式记录采样和量化后的数字数据,例如顺序存储或压缩存储,等等。

 这样就涉及了很多种格式,通常所说的音频的裸数据格式就是脉冲编码调制(Pulse Code Modulation,PCM)数据。
描述这段PCM数据一般需要以下三个概念:量化格式(sampleFormat)、采样率(sampleRate)、声道数(channel)

1.3.1 比特率:    
      以CD的音质为例:量化格式(有的描述为位深度)为16比特(2字节),采样率为44100,声道数为2,这些信息就描述了CD的音质。而对于声音格式,还有一个概念用来描述它的质量,称为数据比特率,即1秒时间内的比特数量,它用于衡量音频数据单位时间内的容量音质。而对于CD音质的数据,比特率为多少呢?计算如下:

44100 * 16 * 2 = 1378.125kbps

那么在1分钟内,这类CD音质的数据需要占据多少的存储空间呢?计算如下:

1378.125 * 60 / 8 / 1024 = 10.09MB

 当然,如果sampleFormat更加精确(例如用4字节来描述一个采样),或者sampleRate更加密集(例如48kHz的采样率),那么所占的存储空间就会更多,同时能够描述的声音细节就会越精确。存储的这段二进制数据即表示将模拟信号转换为数字信号了,以后就可以对这段二进制数据进行存储、播放、复制,或者进行其他任何操作。

1.3.2 麦克风采集声音
 麦克风音频有一层碳膜,非常稀薄且十分敏感。声音其实是一种纵波,会压缩空气也会压缩这层碳膜,碳膜在受到挤压时也会发出振动,在碳膜的压力就是一个电极,碳膜在振动的时候会接触电极,接触时间的长短和频率与声波的振动幅度和频率有关,这样就完成了声音信号到电信号的转换。之后再经过放电路处理,就可以实施后面的采样量化处理了。

1.3.3 分贝 
      前面提到过分贝,那么什么是分贝呢?分贝是用来表示声音强度的单位。生活中听到的声音,若以声压值来表示,由于其变化范围非常广,可以达到六个数量级以上,同时声音功率由于人体听觉对声信号强弱刺激反应不是线形的,而是成对数比例关系。所以引入分贝的概念来表达声学量值。所谓分贝是指两个相同的物理量(例如,A1和A0)之所取以10为底的对数并乘以10(或20),即:

N= 10 * lg(A1 / A0)

分贝符号为“dB”,它是无量纲的。式中A0是基准量(或参考量),A1是被量度量。
被量度量和基准量之比取对数,这对数值称为被量度量的"级"。亦即用对数标度时,所得到的是比值,它代表被量度量比基准量高出多少"级"。

1.3.4 声功率(W)
声功率是指单位时间内,声波通过垂直于传播方向某指定面积的声能量。在噪声监测中,声功率是指声源总声功率。单位为W。 声功率级: Lw =10lg(W/W0) 式中:Lw——声功率级(dB); W—— 声功率(W); W0—— 基准声功率,为10-12 W。

1.3.5  声强(I)
声强是指单位时间内,声波通过垂直于传播方向单位面积的声能量。单位为 W / m2。 声强级: LI = 10lg(I/I0)式中:LI —— 声压级(dB); I —— 声强(W/m2); I0 —— 基准声强,为10-12 W/m2。

1.3.6  声压(P)
声压是由于声波的存在而引起的压力增值。单位为Pa。声波在空气中传播时形成压缩和稀疏交替变化,所以压力增值是正负交替的。但通常讲的声压是取均方根值,叫有效声压,故实际上总是正值,对于球面波和平面波,声压与声强的关系是: I= P2 / ρc式中:ρ-空气密度,如以标准大气压与20℃的空气密度和声速代入,得到ρ?c =408 国际单位值,也叫瑞利。称为空气对声波的特性阻抗. 声压级: LP = 20lg(P/P0) 式中: LP—— 声压级(dB); P ——声压(Pa); P0—— 基准声压,为2×10-5Pa,该值是对1000HZ声音人耳刚能听到的最低声压。

二. 音频编码

 上面提到了CD音质的数据采样格式,曾计算出每分钟需要的存储空间约为10.1MB,如果仅仅是将其存放在存储设备(光盘、硬盘)中,可能是可以接受的,但是若要在网络中实时在线传播的话,那么这个数据量可能就太大了,所以必须对其进行压缩编码。

2.1 压缩比

    压缩编码的基本指标之一就是压缩比,压缩比通常置于1(否则就没有必要去做压缩,因为压缩就是要减少数据容量)。
压缩算法包括有损压缩和无损压缩

无损压缩

    无损压缩是指解压后的数据可以完全复原。在常量的压缩格式中,使用得较多的是有损压缩。

有损压缩

    有损压缩是指解压后的数据不能完全复原,会丢失一部分信息,压缩的越多,丢失的信息就越多,信号还原后的失真就会越多。

    根据不同的应用场景(包括存储设备、传输网络环境、播放设备等),可以选则不同的压缩编码算法,如 PCM、WAV、AAC、MP3、Ogg等。

2.2 压缩编码 

    压缩编码的原理实际上是压缩掉冗余信号,冗余信号是指不能被人类感知到的信号,包含人耳听觉范围之外的音频信号以及被掩蔽掉的音频信号等。而被掩蔽掉的音频信号则主要是因为人耳的掩蔽效应,主要表现为频域掩蔽效应与时域掩蔽效应,不论是在时域还是频域上,被掩蔽掉的声音信号都被认为是冗余信息,不进行编码处理。

下面介绍几种常用的压缩编码格式

2.2.1 WAV编码

 PCM(脉冲编码调制)是Pulse Code Modulation的缩写。前面已经介绍过PCM格式的制作流程,而WAV编码的几种实现(有多种实现方式,但是都不会进行压缩操作)就是在PCM数据格式的前面加上 44 字节,分别别来描述PCM的采样率、声道数、数据格式等信息。

特点:音质非常好,常用软件都能持。
适用场合:多媒体开发的中间插件、保存音乐和音效素材。

2.2.2 MP3编码

 MP3具有不错的压缩比,使用LAME编码(MP3编码格式的几种实现)的中低码率的MP3文件,听感上去非常接近源WAV文件,当然在不同的应用场景下,应该调整合适的参数以达到最好的效果。

特点:音质在128Kbit/s以上表现还不错,压缩比比较少,音量软件和硬件都支持,兼容性好。
适用场合:低比特率下对兼容性有要求的音乐欣赏。

2.2.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以下的音频编码,多用于视频中音频轨的编码。

2.2.4 Ogg编码

    Ogg是一种非常有潜力的编码,在各种码率下都有着较优秀的表现,尤其是在中低码率场景下。Ogg除了音质好之外,还是完全免费的,这为Ogg获得更多的支持打好了基础。Ogg有着非常出色的算法,可以替代更高的码率达到更好的音质,128Kbit/s的Ogg比192Kbit/s甚至更高码率的MP3还要出色。但目前因为还没有媒体服务软件的支持,因此基于Ogg的数字编播还无法实现。Ogg目前受支持的情况还不够好,无论是软件上的还是硬件上的支持,都无法和MP3相提并论。

特点:可以替代MP3更高的码率实现比MP3更好的音质,在中低码率下均有良好的表现,兼容性不够好,流媒体特性不支持。
适用场合:语音聊天的音频消息场景。