PCM是什么?
PCM :(Pulse-code modulation)脉冲编码调制,是将模拟信号进行抽样、量化和编码转化为数字信号的一种方法;
PCM文件
模拟音频信号经模数转换(A/D变换)直接形成的二进制序列,该文件没有附加的文件头和文件结束标志。Windows的Convert工具可以把PCM音频格式的文件转换成Microsoft的WAV格式的文件。
PCM过程
声音是一种机械波,在运算处理过程中,需要被数字化,最常见的就是通过脉冲编码调制;下图是声音信号在处理过程中的流程;
其中量化模拟信号的过程如下:
蓝色代表模拟音频信号,红色的点代表采样得到的量化数值。
采样频率:即取样频率,指每秒钟取得声音样本的次数。采样频率越高,声音的质量也就越好,声音的还原也就越真实。通常人耳能听到频率范围大约在20Hz~20kHz之间的声音,为了保证声音不失真,采样频率应在40kHz以上;根据奈奎斯特理论,采样频率只要不低于音频信号最高频率的两倍,就可以无损失地还原原始的声音。
常用的音频采样频率有:8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.1kHz(CD)、48kHz、96kHz、192kHz等。
采样位数:即采样值或取样值。它是用来衡量声音波动变化的一个参数,也可以说是声卡的分辨率。它的数值越大,分辨率也就越高,所发出声音的能力越强。
声道数:很好理解,有单声道和立体声之分,单声道的声音只能使用一个喇叭发声(有的也处理成两个喇叭输出同一个声道的声音),立体声的pcm可以使两个喇叭都发声(一般左右声道有分工) ,更能感受到空间效果。
采样时间/音频帧:音频跟视频很不一样,视频每一帧就是一张图像,而从上面的正玄波可以看出,音频数据是流式的,本身没有明确的一帧帧的概念,在实际的应用中,为了音频算法处理/传输的方便,一般约定俗成取2.5ms~60ms为单位的数据量为一帧音频。这个时间被称之为“采样时间”,其长度没有特别的标准,它是根据编解码器和具体应用的需求来决定的,我们可以计算一下一帧音频帧的大小:假设某音频信号是采样率为8kHz、双通道、位宽为16bit,20ms一帧,则一帧音频数据的大小为:int size = 8000 x 2 x 16bit x 0.02s = 5120 bit = 640 byte
存储量=(采样频率采样位数声道)*时间/8(单位:字节数)
波形声音的码率 = 取样频率 × 量化位数 × 声道数
PCM实例
以采样位数为4位为例,量化的波形如下:
采样点: t1 t2 t3 t4 t5 t6 t7 ... t16 t17 t18 t19 t20
幅值: 0011 0101 0111 1001 1011 1101 1110 ... 0110 0110 0101 0011 0000