PCM(Pulse Code Modulation,脉冲编码调制)一种用数字表示采样模拟信号的方法。是用于将波形表示的模拟音频信号转换为数字1和0表示的数字音频信号,而不压缩也不丢失信息的处理技术。PCM编码的最大的优点就是音质好,最大的缺点就是体积大。
一、基本概念
- 采样率(Sampling Rate):指每秒采集的音频样本数量。常见的采样率有 44100Hz(CD 音质)、48000Hz 等。采样率越高,音频的还原度越高,但数据量也越大。
- 位深度(Bit Depth):表示每个音频样本的位数。常见的位深度有 16 位和 24 位。位深度越高,音频的动态范围越大,能够表示的声音细节也越多。
- 声道数(Number of Channels):分为单声道(Mono)和立体声(Stereo)等。单声道只有一个声道,立体声有左右两个声道。多声道音频(如 5.1 声道、7.1 声道)则用于环绕声系统。
二、数据组织方式
- 单声道 PCM 数据组织:
- 对于单声道 PCM 音频,数据按照时间顺序依次排列每个音频样本。如果位深度为 16 位,那么每个样本占用 2 个字节。
- 例如,假设有一段采样率为 44100Hz、位深度为 16 位、时长为 5 秒的单声道音频。那么总的音频样本数量为 44100×5 = 220500 个。这些样本依次存储在内存中或文件中,每个样本占据 2 个字节。
- 立体声 PCM 数据组织:
- 立体声 PCM 音频有左右两个声道。数据通常以交错的方式组织,即先存储左声道的一个样本,然后存储右声道的一个样本,如此交替进行。
- 如果位深度为 16 位,那么每对左右声道样本占用 4 个字节(左声道 2 个字节,右声道 2 个字节)。
- 例如,对于同样采样率为 44100Hz、位深度为 16 位、时长为 5 秒的立体声音频,总样本数量为 220500×2(左右声道各有相同数量的样本)。数据存储时,先存储左声道第一个样本的 2 个字节,再存储右声道第一个样本的 2 个字节,然后是左声道第二个样本、右声道第二个样本,以此类推。
- 多声道 PCM 数据组织:
- 多声道音频(如 5.1 声道包括左前、中置、右前、左后、右后和低音炮六个声道)的数据组织方式类似立体声,只是声道数量更多。按照特定的声道顺序依次存储每个声道的样本,同样可以采用交错或非交错的方式。
- 例如,对于 5.1 声道、采样率为 48000Hz、位深度为 24 位的音频,每个样本占用 3 个字节(24 位转换为 3 个字节)。总样本数量为 48000× 时长 ×6(六个声道)。数据存储时,按照左前、中置、右前、左后、右后、低音炮的顺序依次存储每个声道的样本,然后重复这个过程直到存储完所有样本。
三、文件存储格式
- PCM 音频数据可以存储在各种文件格式中,如 WAV、AIFF 等。这些文件格式通常包含一个文件头,用于描述音频的参数,如采样率、位深度、声道数等,然后紧跟着音频数据部分。
- 文件头的结构和大小因文件格式而异,但通常包括一些标识信息、音频参数和数据偏移量等。音频数据部分则按照上述的数据组织方式进行存储。
- 例如,WAV 文件格式以 “RIFF” 标识开头,接着是文件大小、“WAVE” 标识、“fmt ” 子块标识(包含音频格式信息)、“data” 子块标识(表示音频数据开始)以及实际的音频数据。文件头中的信息用于播放器或音频处理软件正确解析和播放音频数据。