数字音频基础知识

103 阅读7分钟

下一篇见 数字视频基础知识

基本参数

  • 采样率 Sampling Rate

    • 录音设备每秒进行采样的次数,单位Hz,采样率越高,数字波形就越接近原始模拟波形
    • 常见的为 8kHz、16kHz、44.1kHz、48kHz、96KHz
  • 音频位深(采样精度) Audio Bit Depth

    • 采样值的二进制编码位数,单位bit,反映了声音的辨析度,含义是用多少位数值描述声音信号的强度
    • 常见的为 8bit、16bit、24bit、32bit
  • 声道 Sound Channel

    • 指声音在录制或播放时在不同空间采集或回放的相互独立的音频信号,也就是录音时的音源数量和播放时的扬声器数量,也叫通道数、音轨数
    • 常见的为单声道(mono)、双声道(立体声 stereo)、5.1声道(如杜比音效)、7.1声道
  • 比特率 Bit Rate

    • 每秒传输或处理的比特(bit)数,单位为bit/s或bps,更高的比特率通常意味着更好的音质,更大的文件大小
    • 常见的为 128kb/s 192kb/s 320kb/s,这些比特率表示了MP3格式下音乐的标准、较高、极高音质

音频采集

了解音频采集的过程可以对音频的基本参数有更深的理解

数字音频需要将模拟信号转换为数字信号,此处常用的是PCM

PCM( Pulse Code Modulation 脉冲编码调制)是一种模拟信号的数字化方法,是最常用、最简单的波形编码方式

PCM的完整过程可概括为采样、量化、编码

  • 采样

    • 对模拟信号采样,在时间轴(t)上对信号进行数字化
    • 对应采样率,一般为44.1kHz、48kHz
  • 量化

    • 在幅度轴(U)上对信号进行数字化
    • 如用 16bit 的二进制信号来表示声音的一个采样,则音频信号被分为 2^{16} 个级别
  • 编码

    • 按照一定的格式记录采样和量化后的数字数据
    • PCM编码下直接将样本值用二进制表示

过程如下图所示

PCM编码是最原始的音频编码,即音频的裸数据格式,音频的无损编码,其他编码都是在此基础上再次编码和压缩的

可以直接计算PCM编码的音频文件的比特率,为 采样率 x 采样精度 x 声道数

如标准CD音质的采样率为44.1kHz,采样精度为16bit,声道数为立体声,则可计算得到,标准CD的比特率为

44100162=1411.2kbps44100 * 16 * 2 = 1411.2kbps

音频编码

为了降低文件大小,更方便在网络中传输,通常会对音频进行压缩编码,基本指标为压缩比

压缩比,用未压缩的数据大小比上压缩后的数据大小,如MP3的压缩比通常为10:1

压缩编码的原理实际上是压缩掉冗余信号,冗余信号指不能被人耳感知到的信号(心理声学),包括人耳听觉范围之外的音频信号以及被掩蔽掉的音频信号等,有时域冗余、频域冗余、听觉冗余等

压缩算法包括有损压缩和无损压缩,有损压缩更实用

  • 有损压缩指压缩后的数据不能完全复原,压缩比一般较高

  • 而无损压缩在压缩后的数据能够完全复原,压缩比一般很小

不同的音频编码支持的采样率、采样精度、比特率,以及压缩比、压缩后的音质有所不同

即使是同一编码格式,编解码器不同也会影响音质

常见的音频编码格式有

  • WAV

    • 不压缩,通常直接为标头+PCM格式音频信息
    • 音质好,体积大,兼容性好,常用于音频开发的中间格式
  • MP3 1993

    • 有损压缩,压缩比较高
    • 兼容性好,最受欢迎,经久不衰
    • 至2018年,相关专利已全部过期,MP3格式进入公有领域
  • AAC 1997

    • 作为MP3后继者被设计,在相同比特率下音质通常好于MP3
    • 有损压缩,压缩比很高
    • 广泛用于视频中的音频编码
    • 用户传输和分发内容不需要许可,但AAC的所有编解码器都需要专利许可
  • FLAC 2001

    • 无损压缩,压缩比通常为2
    • 常用于音乐存档,各大音乐平台无损音质的音频格式
    • 开放格式,免专利
  • OPUS 2012

    • 通常在任何给定比特率情况下音质都好于MP3、AAC,可以说是未来的音频格式
    • 有损压缩,压缩比很高
    • WebRTC中默认的音频编码格式,也是WebM容器视频文件中音频的编码格式之一
    • 开放格式,免专利

容器(封装)格式

一个音频文件,不仅有编码格式,还有容器格式,容器格式一般以文件后缀名形式体现,有时会和编码格式重名

编码格式与封装格式是独立的概念,一种编码格式能用多种容器格式封装,一种容器格式也能封装多种编码格式

无论是 PCM 还是压缩后的音频数据,都需要通过容器封装,得到最终音频文件

封装,主要是在音频数据头部和尾部增加额外的描述性数据,比如容器内除了音频数据外,还包含了音频基本参数(采样率、采样精度、声道数、比特率、编码格式),音乐标签信息(曲名、作者、专辑、年份)等

不同的容器格式规定了各类数据组织方式(大小顺序和位置),以最简单的WAV容器格式为例

WAV文件遵循RIFF(资源交换文件格式),整体由一个表头(header)和多个区块(chunks)组成,具体结构如图

由 header 和 format chunk、data chunk 组成,详细字段见 WAV文件读取

header 表明该文件遵循 RIFF,文件大小,格式WAVE

format chunk 说明了音频格式、声道数、采样率、比特率、采样精度

data chunk 存储了音频数据

编码后的音频数据不再表示波形采样值,因此不能直接输出播放,必须经过解码还原为最初的 PCM 形式,再发送给硬件播放。编解码器(codec)负责不同格式音频数据与 PCM 之间的编码和解码。

音频文件播放需要先【解封装】,获得其中的音频数据,再【解码】,将音频数据解码为PCM形式进行播放

常见容器格式与编码格式的对应关系可见下图

参数实例

通过 ffprobe 输出文件基本参数

wav

Input #0, wav, from 'file_example_WAV_5MG.wav':
  Metadata:
    BPM (beats per minute): 120
    Encoded by      : LAME in FL Studio 20
    date            : 2018
  Duration: 00:00:29.98, bitrate: 1411 kb/s
  Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, 2 channels, s16, 1411 kb/s

flac

Input #0, flac, from 'flac_music.flac':
  Duration: 00:03:41.64, start: 0.000000, bitrate: 961 kb/s
  Stream #0:0: Audio: flac, 44100 Hz, stereo, s16

mp3

Input #0, mp3, from 'music_mp3.mp3':
  Metadata:
    encoder         : Lavf58.76.100
  Duration: 00:04:30.55, start: 0.025057, bitrate: 128 kb/s
  Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 128 kb/s
    Metadata:
      encoder         : Lavc58.13

浏览器支持

目前浏览器支持的音频编码共有6种,根据 caniuse.com

  • WAV 97%完全支持
  • MP3 98%完全支持
  • AAC 95%完全支持,Firefox仅支持MP4容器内的AAC编码,并且操作系统需自带codec
  • Ogg 79%完全支持,Safari部分支持,IE不支持
  • FLAC 97%完全支持,IE不支持
  • OPUS 79%完全支持,Safari部分支持,IE不支持

浏览器内支持最良好的还是MP3格式

拓展阅读

数字音频基础­­­­­-从PCM说起

音频属性相关:声道、采样率、采样位数、样本格式、比特率 - 夜行过客 - 博客园

Audio coding format

音频编码格式的比较

有损音频编码器(MP3/AAC/Opus)测试与对比

网页音频编码指南

【硬核科普】音响耳机麦克风这些设备是怎么工作的?音频的采样率和采样精度是什么?_哔哩哔哩_bilibili

【一口吃胖】音乐与格式:计算机音频知识与常见文件格式(MP3、WAV、WMA、FLAC、AAC、OGG、PCM、M4A、Opus、MIDI)_哔哩哔哩_bilibili