一.PCM(Pulse-Code Modulation 脉冲编码调制)
PCM是一个无损无压缩的(相较于有损压缩,如果相对于模拟信号是有损的)数字化编码方式(PCM不单单应用于音频领域,本文只介绍在音频领域中的应用)。
先从PCM讲起是因为PCM是最常用,并且最为简单理解的模拟信号转换成为数字信号的方法。
PCM编码方式是将模拟信号经过采样→量化→编码来实现A/D(数模转换)
1.采样
采样是从连续时间域上的模拟信号转换到离散时间域上的离散信号的过程
简单来说,声波在时间上本身是连续的,时间可以被分割成无数的时间点,采样就是在这无限的时间点上,以固定周期对时间进行划分。
采样的过程,首先将连续的时间域中以特定时间为单位(通常为1s)分割成数个时间区域(周期性采样)。在对单个时间域中的信号进行特定次数的采样(取决于采样率)。
2.采样率
采样率定义了每秒从连续信号中提取并组成离散信号的采样个数,单位为Hz(赫兹)。
那么,采样率究竟需要多快才不会造成明显的音频失真呢?
结论:
采样率必须大于被采样信号带宽的两倍,否则就会发生混叠现象而发生失真
人耳能够感知的声音频率范围在20Hz~20KHz之间,按照上述采样定理,如果需要存储人耳能够感知的声音,就必须以20KHz*2=40KHz以上的频率进行采样。
(所以音乐CD的采样标准为44.1KHz)
3.量化(位深)
采样是以时间为单位,标识出以每秒多少次划分时间点进行抽样,采样过后依然属于模拟信号范畴,其每个采样点的样本所对应的值仍然为无数个值。 那么如果要以数字化存储这些值,我们就必须对这些值进行量化处理。
因为量化规则遵循四舍五入原则,不正好处于在分级中的样值,均四舍五入后进行存储。那么也就不可避免的会造成数据损失,从而失真。
那么我们如果将量化位深提升到4bit,如上图所示,可以发现,当位深越大,越能反映出数据幅度的变化。
这种以四舍五入方式进行分级取整,将取值范围内的样值由离散信号描述的无限多的值变为有限个值,并用数字码进行存储的过程称为量化。
4.编码
编码本质上就是使用某种特定规范,使得采样量化后的数据按照规定方式进行存储、传输。
PCM编码本身是无损无压缩的,那么就说明其数据体积会很大。
PCM数据体积计算方式为:采样率(Hz) x 位深(bit) x 声道数 x 时长(s)
一段常见的4分钟立体声(双声道)的音乐,我们以CD标准(44.1KHz采样率 16bit位深)在进行PCM编码后,其体积为
44100Hz x 16bit x 2 x 240 = 338,688,000 bit(比特)= 40.37MB
在计算机存储中最小存储单位为位,而一位能存储的数据即为1bit(存储0或1),其中8bit为一个Byte(字节),1024Byte=1KB,1024KB=1MB
总结:采样是在声波的时间上周期抽取数个时间点,量化将对应时间点的声波幅度进行规范存储。采样率越高,位深越高,存储的声波越接近于原始声波。
5.PCM的音频领域的应用
PCM在音频领域中的应用极其广泛,无论是语音通话、音乐播放、视频多媒体,其中都离不开PCM的应用。
电脑、手机、随身听等设备播放音乐时,其实就是将PCM数据,转换为模拟信号,在通过扬声器、耳机等设备还原出声波。
应用PCM进行声波存储的流程如下:
6.采样数据与DA转换输出声音
一般的数据采样用的是AD会有一个最大采样值,最小值当然就是0了。
如果声音芯片内的DA是16位,那么最小值为0,最大值为65535即0xffff。
但是由于振内振是上下振的,故中点为32767,故区间范围为-32768到32767之间。因此为了标识我们的数值,需要对采集的数字信号进行归一化处理(转换为在-32768到32767之间).