PCM(Pulse Code Modulation,脉冲编码调制) 是最基础、无损的原始音频格式,绝大多数音频文件、播放设备的底层数据都是 PCM。PCM是把连续的模拟声波,按固定间隔采样、量化、编码,转换成数字二进制数据,全程无压缩、无损耗。
狭义点讲,PCM数据可以理解为麦克风采样后的原始数据,也是扬声器播放的基础数据。PCM未经过压缩,每个点的数据是标准时间点的采样2进制数据。
一、采样数据关键属性
1.1 采样率(Sample Rate)
每秒采集多少次声波样本,单位 Hz。
常见的采用率有:
- 8000Hz:电话、对讲机(窄带语音)
- 16000Hz:主流语音通话、微信语音
- 44100Hz:CD 标准、MP3 / 音乐通用
- 48000Hz:视频、直播、影视、声卡主流
- 96000/192000Hz:HiFi 高保真
1.2 采用位数(Bit Depth)
单个样本用多少 bit 存储,决定动态范围、信噪比。
- 8bit:低音质、老旧设备
- 16bit:CD、绝大多数音乐 / 语音(最常用)
- 24bit:专业录音、HiFi、混音
1.3 声道数(Channels)
- 单声道 Mono(1 声道):语音、录音笔
- 立体声 Stereo(2 声道):音乐、耳机
- 多声道:5.1/7.1 环绕声(影视)
1.4 计算公式
比特率 = 采样率 × 采用位数× 声道数
例:44100Hz + 16bit + 双声道
比特率 =44100 × 16 × 2 = 1411200 bps
每秒字节:1411200 ÷ 8 = 172.27 KB/s
由以上公式可知,采样率越大,采用位数越高,声道数越多, 单位时间的PCM数据越大,当然音质也越好。
二、 PCM存储格式
2.1 裸流PCM
该数据无法知晓PCM的采用率,采用位数和声道数,因此在播放的时候,需要人工输入相关的音频属性。
- 纯二进制音频数据,无头部信息
- 播放器无法直接识别,必须手动指定:采样率 / 位深 / 声道 / 字节序
- 用途:嵌入式、实时音频流、音频编解码中间数据
2.2 带头格式的PCM(WAV,AIFF)
windows的标准音频数据,音频头+PCM 组合的方式存储音频数据。 并且以.wav格式存储数据。 使用该格式,音频播放器可以从wav的头中读取采用率,采用位数和声道数等数据,用于音频播放。wav格式具体在后面介绍。
AIFF为苹果公司的音频格式,也是头+裸流的PCM的格式,具体后面 AIFF格式介绍。
三、字节序 & 编码格式
开发 / 音频处理必看:
- PCM 编码标识
PCM_S16LE:16 位有符号、小端序(全球最通用,WAV 默认)PCM_S16BE:16 位有符号、大端序PCM_U8:8 位无符号
- 字节序:PC 系统几乎都是小端 LE。
四、优缺点
优点
- 无损、音质最佳,音频处理、混音、转码首选源格式
- 结构简单,编解码开销极小,实时性强
缺点
- 体积巨大,不适合网络传输、存储,所以才有 MP3/AAC 等压缩格式
五、应用场景
- 录音软件、专业音频工作站
- 声卡、麦克风、耳机底层数据
- WebRTC、直播、语音通话(原始音频流)
- FFmpeg、音频编解码开发中间格式
- CD 唱片(标准 44100Hz/16bit / 双声道 PCM)