音视频--音频入门

2,207 阅读6分钟


音频入门

声音三要素

  • 音调

    声音震动的频率。高音低音、女声男生。

  • 音量

    声音震动的幅度。

  • 音色

    取决于材质,本质是谐波。

人类听觉范围

在进行音频压缩时,对于特定赫兹的数据(比如超声波和次声波),可以选择忽略。


音频的量化与编码

量化的过程

五张图代表不同的阶段:

  1. 截取一个音频片段

  2. 对音频振幅进行采样

    若干次横向均分量化

  3. 对音频高度进行量化

    若干次纵向均分

  4. 对片段进行编码

    将量化的音频信息进行二进制转化

  5. 数字信号转化

    在二进制1位置时进行发声

  • 采样大小

一个振幅高度采样用多少位(bit)存放。通常是16位(bit)

  • 采样率

在音频中,每秒采集的高度信息次数。8k、16k、32k、44.1k、48k

不同的编码方式有不同的采样率,比如AAC使用的是44.1k采样率。

  • 声道数

单声道,双声道,多声道

码率计算

采样率×采样大小×声道数

AAC编码压缩后可以大概128kb/s,AAC HE V2编码可以达到32kb/s。


音频压缩

有损压缩技术

消除冗余数据

关于冗余信息:

  1. 超出人类听觉范围
  2. 被遮蔽掉的音频信号
    • 频域遮蔽
    • 时域遮蔽
  • 频域遮蔽效应

一个声音会掩盖另一个声音(图中横向为频率,总想为分贝)。

红色声源会掩盖其他紫色声源而无法掩盖绿色声源

白色区域虽然在人耳听觉范围之内,但是由于音量不够,也是听不到的。

  • 时域遮蔽效应

当一个高分贝的声音出现时,其前后一定时间内的低分贝声音会被遮蔽

该图横向为毫秒,纵向为分贝

编码过程

无损压缩

哈夫曼无损编码


音频编解码器

常见的音频编解码器:OPUS、ACC、Vorbis、Speex、iLBC、AMR、G.711

OPUS

当前十分流行的音频编解码器。内部具有基于口(速度快)、耳(高保真)两个编解码模型。

AAC

也是一种流行的音频编解码器。具有高保真的特性,由于RTMP协议的支持性良好,主要应用于直播业务中。

Speex

在AAC与OPUS之前的主流音频编解码器。包括回音消除,降噪等等辅助模块。

G.711

固话的编解码器

解码器的比较

网上的测评结果中:OPUS>ACC>Vorbis

上图中横轴是音频编码码率,纵轴是音频频带信息。从图中我们可以获得如下几方面信息。

  (1)对于固定码率的编码标准,如G.711或者G.722,图中采用单点表示,说明这两个编码标准是固定码率编码标准。其他如Opus、Speex,它们的曲线是连续的,说明这类编码标准是可变码率的编码标准。

  (2)从频带方面看,G.711、G.722、AMR和iLBC等标准适用于narrowband(8khz采样率)和wideband(16khz采样率)范围,针对普通的语音通话场景。AAC和MP3适用于fullband(48khz采样率)范围,针对特殊的音乐场景。而Opus适用于整个频带,可以进行最大范围的动态调节,适用范围最广。

  (3)从标准的收费情况看,适用于互联网传输的iLBC、Speex和Opus都是免费且开源的;适用于音乐场景的MP3和AAC,需要license授权,而且不开源。


AAC编解码器

应用范围广

  1. 大部分的直播系统。
  2. RTMP传输协议支持ACC与Speex,但并不支持OPUS。
  3. 音频编码可以做到高保真。

产生的目的

取代MP3格式

MP3使用的是MPEG-2编解码规范的有损压缩。 而AAC使用的是MPEG-4规范,压缩率更高,损耗更小。

常用规格

AAC LCAAC HE V1AAC HE V2

对应关系如下所示

  • AAC LC (Low Complexity)

低复杂度,码流128kb/s

  • AAC HE V1

AAC LC的基础上增加了SBR(Spectral Band Replication),码流64kb/s左右

SBR指的是频段复制

简要叙述一下,音乐的主要频谱集中在低频段,高频段幅度很小,但很重要,决定了音质。

SBR把频谱切割开来,降低低频波段的采样率以减少文件大小,提高高频波段的采样率以提高音质。

  • AAC HE V2

AAC HE V1的基础上增加了Parametric Stereo),码流32kb/s左右

PS指的是参数立体声

原来的立体声文件文件大小是一个声道的两倍。

但是两个声道的声音存在某种相似性,根据香农信息熵编码定理,相关性应该被去掉才能减小文件大小。所以PS技术存储了一个声道的全部信息,然后,花很少的字节用参数描述另一个声道和它不同的地方。

AAC音频文件解析

  • ADIF

Audio Data Interchange Format 音频数据交换格式

这种格式的特征是可以确定的找到这个音频数据的开始,不需进行在音频数据流中间开始的解码,即它的解码必须在明确定义的开始处进行。故这种格式常用在磁盘文件中。

  • ADTS

Audio Data Transport Stream 音频数据传输流

种格式的特征是它的每一帧头部都包含一个同步字,解码可以在这个流中任何位置开始。它的特征类似于mp3数据流格式。

  • 二者区别

简单说,ADTS可以在任意帧解码,也就是说它每一帧都有头信息。ADIF只有一个统一的头,所以必须得到所有的数据后解码。

目前一般编码后的和抽取出的都是ADTS格式的音频流。

二者的头部信息以及组织结构也有区别,具体可以参阅《AAC帧格式及编码介绍》


AAC的编解码库

Libfdk_AAC > ffmpeg AAC > libfaac > libvo_aacenc

其中最常用的是Libfdk_AAC


AAC文件处理流程

1. 判断文件格式,确定为ADIF或ADTS。

2. 若为ADIF,解ADIF头信息,跳至第6步。

3. 若为ADTS,寻找同步头。

4. 解ADTS帧头信息。

5. 若有错误检测,进行错误检测。

6. 解块信息。

7. 解元素信息。


参考资料

慕课网

网易视频云技术分享:音频处理与压缩技术漫谈

AAC帧格式及编码介绍