PCM基础
什么是PCM?
脉冲编码调制( Pulse Code Modulation , PCM) 是模拟信号以固定的采样频率转换成数字信号后的表现形式。
pcm文件没有头部信息,全部是采样量化后的未压缩音频数据。
PCM 数据储存

用什么量来描述PCM?
-
Sample Rate 采样率
8kHz(电话)、44.1kHz(CD)、48kHz(DVD),16kHz 因为保留了绝大部分信息因此得到广泛使用 -
Sign 符号
表示样本数据是否是有符号位 -
Sample Size 采样数据大小/量化位数
8位量化(8-bit)、16位量化(16-bit)、32位量化(32-bit),通常该值为16-bit(即2 byte) -
Byte Ordering 字节序
分大端(big-endian)和小端(little-endian),一般都是小端字节序(低位低地址,高位高地址)所有网络协议都是采用big endian的方式来传输数据的。所以也把big endian方式称之为网络字节序。当两台采用不同字节序的主机通信时,在发送数据之前都必须经过字节序的转换成为网络字节序后再进行传输。
-
Number of Channels 通道数
指声音在录制或播放时,在不同空间位置采集或回放的相互独立的音频信号,常见的有单声道,双声道,四声道
PCM数据流是什么样?
- 单声道
+------+------+------+------+------+------+------+------+------+
| 500 | 300 | -100 | -20 | -300 | 900 | -200 | -50 | 250 |
+------+------+------+------+------+------+------+------+------+
每个整数占据2个字节(16-bit),9个采样也就是18字节的数据。
- 立体声
+----------+----------+---------+----------+---------+----------+---------+----------+----------+
| LFrame1 | RFrame1 | LFrame2 | RFrame2 | LFrame3 | RFrame3 | LFrame4 | RFrame4 | LFrame5 |
+----------+----------+---------+----------+---------+----------+---------+----------+----------+
每一个frame是一个16-bit的采样点。左右声道的数据交叉存放。
WAV与PCM的区别
- wav与pcm区别,pcm加头变为wav,wav相关头信息
- wav文件头信息由大小44个字节的数据组成
- 使用python包struct来转换为二进制流
WAV头部信息:
1、4字节数据,内容为
“RIFF”,表示资源交换文件标识
2、4字节数据,内容为一个整数,表示从下个地址开始到文件尾的总字节数(= pcm音频流长度 + 36 ),其中36 = 44位wav头信息 - 8,8表示不包括RIFF和WAVE不包括RIFF和WAVE这8个字节
3、4字节数据,内容为“WAVE”,表示WAV文件标识
4、4字节数据,内容为“fmt ”,表示波形格式标识(fmt ),最后一位空格。
5、4字节数据,内容为一个整数,表示PCMWAVEFORMAT的长度,其表示为:采样率(一般为8或16)
6、2字节数据,内容为一个短整数,表示格式种类(值为1时,表示数据为线性PCM编码)
7、2字节数据,内容为一个短整数,表示通道数,单声道为1,双声道为2
8、4字节数据,内容为一个整数,表示采样率,比如8000, 16000
9、4字节数据,内容为一个整数,表示波形数据传输速率(每秒平均字节数),大小为采样率 * 通道数 * 采样位数 / 8
10、2字节数据,内容为一个短整数,表示DATA数据块长度,大小为通道数 * 采样位数 / 8
11、2字节数据,内容为一个短整数,表示采样位数,即PCM位宽,通常为8位或16位
12、4字节数据,内容为“data”,表示数据标记符
13、4字节数据,内容为一个整数,表示接下来声音数据的总大小
14、以上所有的头文件进行相加,然后加上pcm字节流进行拼接
其它
- 快放
若我们告知声卡的采样率大于数据本身的采样率,那么这些数据的播放速度会高于其原始的速度。就是快放的功能。 - 提高音量
如果要增加PCM数据的音量,只需要将每一个采样的数据乘以一个系数就行了。
参考:
1872



被折叠的 条评论
为什么被折叠?



