音频编码基础

813 阅读6分钟

音频基础

声音

声音是波,靠物体的振动产生

声波的三要素,是频率,振幅,波形.频率代表音阶的高低,振幅代表响度,波形则代表音色.

  • 频率越高,波长就会越短.而低频声响的波长则较长.所以这样的声音更容易绕过障碍物,能量衰减就越小.声音就会传播的越远.

  • 响度,就是能量大小的反馈.用不同的力度敲打桌面,声音的大小势必发生变换.在生活中,我们用分贝描述声音的响度.

  • 音色,在同样的频率和响度下,不同的物体发出的声音不一样.比如钢琴和古筝声音就完全不同.波形的形状决定了声音的音色.因为不同的介质所产生的波形不同.就会产生不一样的音色.

数字音频

将模拟信号转换为数字信号的过程,分别是采样,量化和编码.

音频采样

对模型信号进行采样,采样可以理解为在时间轴上对信号进行数字化. 而,根据奈斯特定理(采样定理),按比声音最高频率高2倍以上的频率对声音进行采样.这个过程称为AD转换.

比如,前面提到高质量音频信号,其频率范围是20Hz-20KHz.所以采样频率一般是44.1KHz.这样可以保证采样声音达到20KHz也能被数字化.而且经过数字化处理后的声音,音质也不会降低.44.1KHZ,指的是1秒会采样44100次.

量化

量化,指的是在幅度轴上对信号进行数字化.简单的说,就是声音波形的数据是多少位的二进制数据,通常用bit做单位.比如16比特的二进制信号来表示声音的一个采样.它的取值范围[-32768,32767].一共有65536个值.如16bit、24bit。16bit量化级记录声音的数据是用16位的二进制数,因此,量化级也是数字声音质量的重要指标。我们形容数字声音的质量,通常就描述为24bit(量化级)、48KHz采样,比如标准CD音乐的质量就是16bit、44.1KHz采样.

编码

编码: 按照一定格式记录采样和量化后的数据.

音频编码的格式有很多种,而通常所说的音频裸数据指的是脉冲编码调制(PCM)数据.

如果想要描述一份PCM数据,需要从如下几个出发:

  • 量化格式(sampleFormat)

  • 采样率(sampleRate)

  • 声道数(channel)

举例:

以CD音质为例,量化格式为16bite,采样率为44100,声道数为2.这些信息描述CD音质.那么可以CD音质数据,比特率是多少? 44100 * 16 * 2 = 1378.125kbps

那么一分钟的,这类CD音质数据需要占用多少存储空间? 1378.125 * 60 /8/1024 = 10.09MB

如果sampleFormat更加精确或者sampleRate更加密集,那么所占的存储空间就会越大,同时能够描述的声音细节就会更加精确.

存储在这些二进制数据即可理解为将模型信号转化为数字信号.那么转为数字信号之后,就可以对这些数据进行存储\播放\复制获取其他任何操作.

音频压缩

压缩的本质

压缩编码的原理实际上就是压缩冗余的信号.冗余信号就是指不能被人耳感知的信号.包括人耳听觉范围之外的音频信号以及被掩盖掉的音频信号.

人耳掩盖效应

  • 主要表现在频域掩盖效应与时域掩盖效应.无论是在时域还是频域上,被掩盖掉的信息都认为是冗余信息,不进行编码处理

  • 掩蔽效应指人的耳朵只对最明显的声音反应敏感,而对于不明显的声音,反应则较不为敏感。例如在声音的整个频率谱中,如果某一个频率段的声音比较强,则人就对其它频率段的声音不敏感了。应用此原理,人们发明了mp3等压缩的数字音乐格式,在这些格式的文件里,只突出记录了人耳朵较为敏感的中频段声音,而对于较高和较低的频率的声音则简略记录,从而大大压缩了所需的存储空间。在人们欣赏音乐时,如果设备对高频响应得比较好,则会使人感到低频响应不好,反之亦然。

常用压缩编码格式

WAV编码

WAV编码的一种实现方式(其实它有非常多实现方式,但都是不会进行压缩操作).就是在源PCM数据格式的前面加上44个字节.分别用来描述PCM的采样率,声道数,数据格式等信息.

  • 特点: 音质非常好,大量软件都支持其播放

  • 适合场合: 多媒体开发的中间文件,保存音乐和音效素材

MP3编码

MP3编码具有不错的压缩比,而且听感也接近于WAV文件,当然在不同的环境下,应该调整合适的参数来达到更好的效果.

  • 特点: 音质在128Kbit/s以上表现不错,压缩比比较高.大量软件和硬件都支持.兼容性高.

  • 适合场合: 高比特率下对兼容性有要求的音乐欣赏.

AAC编码

AAC是目前比较热门的有损压缩编码技术,并且衍生了LC-AAC,HE-AAC,HE-AAC v2 三种主要编码格式.

  • LC-AAC 是比较传统的AAC,主要应用于中高码率的场景编码(>= 80Kbit/s)

  • HE-AAC 主要应用于低码率场景的编码(<= 48Kbit/s)

  • 特点:在小于128Kbit/s的码率下表现优异,并且多用于视频中的音频编码

  • 适合场景:于128Kbit/s以下的音频编码,多用于视频中的音频轨的编码

Ogg编码

Ogg编码是一种非常有潜力的编码,在各种码率下都有比较优秀的表现.尤其在低码率场景下.Ogg除了音质好之外,Ogg的编码算法也是非常出色.可以用更小的码率达到更好的音质.128Kbit/s的Ogg比192Kbit/s甚至更高码率的MP3更优质.但目前由软件还是硬件支持问题,都没法达到与MP3的使用广度.

  • 特点:可以用比MP3更小的码率实现比MP3更好的音质,高中低码率下均有良好的表现,兼容不够好,流媒体特性不支持.

  • 适合场景:语言聊天的音频消息场景