美国·明尼沃斯卡州立公园
『声音』是我们司空见惯再熟悉不过的一种物理现象。我们唱歌发出声音,用耳朵听到声音,用手机记录并分享声音;如果作为音视频开发人员,我们还会在工作中处理众多声音数据。但是,你真的了解『声音』吗?
在前面的文章里,我们提出了一个问题:从我们耳朵听见的『声音』,到我们用手机、电脑所处理的『音频数据』,其中经历了什么?从这个问题出发,我们在《声音的表示(1)》和《声音的表示(2)》两篇文章中探讨了『声音的定义是什么』、『声音有哪些特征』、『怎样对声音进行数学描述』这几个问题?接下来我们继续探讨另外两个问题:『怎样对声音进行数字化』和『数字音频数据是什么』。
对声音进行数字化,首先要使用特定的设备对声音进行采集,比如麦克风就是常见的声音采集设备。麦克风里面有一层碳膜,非常薄而且十分敏感。声音是一种纵波,会压缩空气也会压缩这层碳膜,碳膜在受到挤压时也会发出振动,在碳膜的下方就是一个电极,碳膜在振动的时候会接触电极,接触时间的长短和频率与声波的振动幅度和频率有关,这样就完成了声音信号到电信号的转换。之后再经过放大电路处理,就可以实施后面的采样、量化处理了。
上面探讨了声音三要素的数学描述,这是声音数字化的基础。
声音由波形组成,包含了不同频率、振幅的波的叠加。为了在数字媒体内表示这些波形,需要对波形进行采样,其采样率需要满足可以表示的声音的最高频率;同时还需要存储足够的位深,以表示声音样本中波形的适当振幅。
声音处理设备重建频率的能力称为其频率响应,创造适当响度和柔度的能力称为其动态范围,这些术语通常统称为声音设备的保真度。最简单的编码方式可以利用这两个基本元素重建声音,同时还能够高效地存储和传输数据。
声音的数字化过程是将模拟信号(连续时间信号)转化为数字信号(离散时间信号)的过程,包括 3 个步骤:
其过程如下图所示:
经过数字化处理后的数字音频包含如下三要素:
1)采样率
对模拟信号的采样一般遵循奈奎斯特采样定理:如果一个信号是带限的(即它的傅立叶变换在某一有限频带范围以外均为零),并且它的样本取得足够密(相对于信号中的最高频率而言),那么这些样本值就能唯一地用来表征这一信号,并且能从这些样本中把信号完全恢复出来。为了不失真地恢复模拟信号,采样频率应该不小于模拟信号频谱中最高频率的 2 倍。一般实际应用中保证采样频率为信号最高频率的 2.56~4 倍。
数字信号由模拟信号采样而来,如果满足采样定理,数字信号就可以完全恢复原始的模拟信号。
从发声的角度来看,人类发出的声音信号频率绝大部分在 5k Hz 以内,因此以 10k Hz 的频率来采样就足够了。
从听声的角度来看,人类听觉范围是 20~20k Hz 内的音频,那么数字音频的采样率需要在 40k Hz 以上。
CD 音频使用 44100 Hz 的采样率,部分原因也在于此,至于为什么具体是 44100 这个数字,这个是历史原因:最早的数字录音由一台录像机加上一部 PCM 编码器制作的,由于当时使用的是 PAL 录像制式(帕制,与之对应的有 NTSC),场频 50 Hz,可用扫描线数 294 条,一条视频扫描线的磁迹中记录 3 个音频数据块,把它们相乘,就得到了 44100 这个奇葩数字。
生活中常见的采样率:
8,000 Hz:电话所用采样率,对于人的说话已经足够; 11,025 Hz:AM 调幅广播所用采样率; 22,050 Hz 和 24,000 Hz:FM调频广播所用采样率; 32,000 Hz:miniDV 数码视频 camcorder、DAT(LP mode)所用采样率; 44,100 Hz:音频 CD,也常用于 MPEG-1 音频(VCD/SVCD/MP3)所用采样率; 47,250 Hz:商用 PCM 录音机所用采样率; 48,000 Hz:miniDV、数字电视、DVD、DAT、电影和专业音频所用的数字声音所用采样率; 50,000 Hz:商用数字录音机所用采样率; 96,000 或者 192,000 Hz:DVD-Audio、一些 LPCM DVD 音轨、BD-ROM(蓝光盘)音轨、和 HD-DVD(高清晰度 DVD)音轨所用所用采样率; 2.8224 MHz:Direct Stream Digital 的 1 位 sigma-delta modulation 过程所用采样率。
2)量化位深
量化位深是对模拟音频信号的幅度轴进行数字化,它决定了模拟信号数字化以后的动态范围。比如,8 bit 位深可以拥有 48 分贝的动态范围,16 bit 位深可以拥有 96 分贝的动态范围,24 bit 位深可以拥有 144 分贝的动态范围,32 bit 位深可以拥有 192 分贝的动态范围。这里位深和动态范围的数值对应关系的计算公式可以从上文声压级的计算公式推导而来。位深体现的是能表示的值的范围,比如 16 bit 能表示的最大值是 216 - 1 = 65535,那么取其最大值就能计算它能表示的最大声压级:最大声压级 = 20 × lg(65535) = 96.33
。所以 16 bit 的位深可以最大表示 96 分贝。
所以这个公式是:
人耳有大约 140 分贝的动态听力范围,类似一根针掉到地上和喷气发动机噪音的区别。当声压级达 120 分贝时,人耳将感到痛楚,无法忍受,因此,人能接受的动态范围为 0~120 分贝。在音乐厅中听乐队演奏大型交响音乐,最响的音乐片段可达 115 分贝,最弱的音乐片段约为 25 分贝,因而动态范围可达 90 分贝。当然,这是很少有的情况。通常交响音乐的动态范围约为 50~80 分贝,中、小型音乐的动态范围约在 40 分贝左右,语言的动态范围约在 30 分贝左右。
CD 音乐音频使用 16 bit 的位深,DVD 音频使用 24 bit 的位深,而大多数电话设备使用 8 bit 的位深。
为了避免运算中声音信号精度的丢失,目前业界高端音频处理系统里都是用 32 bit float 采样来进行运算的,而输出的时候转化为 16 bit。
3)声道
声道是指声音在录制或播放时在不同空间位置采集或回放的相互独立的音频信号,所以声道数也就是声音录制时的音源数量或回放时相应的扬声器数量。
我们在手机、电脑上处理的声音数据,就是声音经过数字化后的数据,也就是数字音频数据,其中最常见的格式是 PCM(Pulse Code Modulation),即脉冲编码调制格式。得到 PCM 数据的主要过程是将话音等模拟信号每隔一定时间进行取样,使其离散化,同时将抽样值按分层单位四舍五入取整量化,同时将抽样值按一组二进制码来表示抽样脉冲的幅值。也就是我们在上文中讲到的采样、量化、编码过程。
在计算机应用中,PCM 是能达到音频最高保真水平的格式,它被广泛用于素材保存及音乐欣赏,PCM 也因此被称为无损编码格式。但这并不意味着 PCM 就能够确保信号绝对保真,它只能做到最大程度的无限接近原始声音。要计算一个 PCM 音频流的码率需要数字音频的三要素信息即可:码率 = 采样率 × 量化位深 × 声道数
。
在处理 PCM 数据时,对于音频不同声道的数据,有两种不同的存储格式:
下面是一个示例:
此外,在处理 PCM 数据时,还需要注意大小端字节序类型。
由于 PCM 编码是无损编码,且广泛应用,所以我们通常可以认为音频的裸数据格式就是 PCM 的。但为了节省存储空间以及传输成本,通常我们会对音频 PCM 数据进行压缩,这也就是音频编码,比如 MP3、AAC、OPUS 都是我们常见的音频编码格式。更多关于音频编码的内容,我们将在后面专题介绍。
1)音高
https://bideyuanli.com/p/3673
2)音符 https://zh.wikipedia.org/wiki/%E9%9F%B3%E7%AC%A6
3)如何理解声强级和声压级 https://www.zhihu.com/question/44894469
4)麦克风是如何采集声音的
https://zhuanlan.zhihu.com/p/342978785
(通过上文的探讨,我们知道了对声音进行数字化的过程:采样 → 量化 → 编码,以及数字音频的要素:采样率、量化位深、声道数,我们还知道了 44100 这个奇葩数字的来历。经过数字化过程后,就可以得到我们熟悉的 PCM 数字音频数据了。这些是我们在音视频开发中所熟悉的知识。这样一来,对于『从我们耳朵听见的声音,到我们用手机、电脑所处理的音频数据,其中经历了什么』这个问题的探讨也应该可以暂时告一段落了。我们接下来会继续探讨一些『图像』相关的基础知识,敬请期待)