术语
PCM
PCM(Pulse Code Modulation, 脉冲编码调制),是一种编码方式,目标是将模拟信号转换为数字信号。具体分为三个阶段,采样、量化和编码,如下:
- 采样:每隔一定时间进行采样,转换成一个个离散的点。采样率为信号带宽两倍以上(来奎斯特采样定理)。
- 量化:再对离散点的值四舍五入取整,进行分层。
- 编码:将分层的值进行二进制编码,来表示脉冲的幅值。PCM 音频格式编码为 A 律 13 折线编码。
声道
- 单声道声音文件,采样数据为八位的短整数(short int 00H-FFH);
- 双声道立体声声音文件,每次采样数据为一个 16 位(采样位数仍是 8bit)的整数(int),高八位(左声道)和低八位(右声道)分别代表两个声道。
采样频率
8000 hz
: 电话采样22050 hz
: 常用44100 hz
: CD 音质>48000 hz
: 对人耳没有意义
采样位数
- 1 字节(也就是 8bit) 只能记录 256 个数, 也就是只能将振幅划分成 256 个等级
- 2 字节(也就是 16bit) 可以细到 65536 个数, 这已是 CD 标准了;
- 4 字节(也就是 32bit) 能把振幅细分到 4294967296 个等级, 实在是没必要了
如果是双声道(stereo), 采样就是双份的, 文件也差不多要大一倍.
比特率
码率是指经过编码后的音频数据每秒钟需要用多少个比特来表示
无损
指传统 CD 格式中的 16bit/44.1kHz 采样率的文件格式
WAVE 文件
WAVE 格式是 PC 上存储 PCM 音频最流行的文件格式,支持不同的比特率、采样率、多声道音频。
WAV 文件格式
IFF
WAVE 文件,遵从 IFF 标准,采用"chunk"来存储数据。
如果要在 WAV 文件中补充信息,只需要在末尾追加新的"chunk",不需要改变整个文件。
必须的 chunk
WAV 格式中,有三个必须的 chunk
- RIFF WAVE Chunk:
- Format Chunk:
- Data Chunk:
44
WAV 文件的前 44 字节,保存着元数据信息,具体为[1]:
Positions | Sample Value | Description |
---|---|---|
1 - 4 | "RIFF" | Marks the file as a riff file. Characters are each 1 byte long. |
5 - 8 | File size (integer) | Size of the overall file - 8 bytes, in bytes (32-bit integer). Typically, you'd fill this in after creation. |
9 -12 | "WAVE" | File Type Header. For our purposes, it always equals "WAVE". |
13-16 | "fmt " | Format chunk marker. Includes trailing null |
17-20 | 16 | Length of format data as listed above |
21-22 | 1 | Type of format (1 is PCM) - 2 byte integer |
23-24 | 2 | Number of Channels - 2 byte integer |
25-28 | 44100 | Sample Rate - 32 byte integer. Common values are 44100 (CD), 48000 (DAT). Sample Rate = Number of Samples per second, or Hertz. |
29-32 | 176400 | (Sample Rate * BitsPerSample * Channels) / 8. |
33-34 | 4 | (BitsPerSample * Channels) / 8.1 - 8 bit mono2 - 8 bit stereo/16 bit mono4 - 16 bit stereo |
35-36 | 16 | Bits per sample |
37-40 | "data" | "data" chunk header. Marks the beginning of the data section. |
41-44 | File size (data) | Size of the data section. |
Sample values are given above for a 16-bit stereo source.
Format Chunk
Format Chunk 中指定了 formatTag,通常都为 LPCM(Linear pulse-code modulation)格式。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于