把连续声音变成数字
约 10 分钟
人的声音连续变化,电脑却喜欢处理 0 和 1。把声音变成数字,大致经过三步:采样、量化、编码。理解这三步,就能明白录音为什么有清晰度差别,也能明白数字通信并不是把真实世界完整复制进去。
采样:隔一小段时间量一次
麦克风先把空气振动变成连续电压,系统每隔固定时间记录一次。像给奔跑的人连续拍照,拍得太稀会漏掉动作。采样率越高,每秒记录越多,能保留更快的变化,但数据量也更大。
量化:把测量值放进格子
测到的电压可能有无数细微差别,存储时要把它归到有限等级。例如只有 8 个等级时,接近的声音会被归为同一个数;等级越多,误差通常越小,需要的位数也越多。量化误差不是设备坏了,而是数字表示必然做出的取舍。
编码:把数字写成比特
每个量化等级再写成二进制。三个比特能表示 个等级,八个比特能表示 256 个等级。采样率、每次采样的位数、声道数共同决定每秒数据量。更清晰通常意味着更多比特,也意味着传输和存储压力更大。
为什么数字信号容易复制
只要接收方还能判断每一位是 0 还是 1,就可以重新生成整齐的数字序列,不必把线路上的每一点小变形都复制下来。但干扰太强时,0 仍可能被判成 1,所以数字通信也需要差错检测。
练一练:每秒采样 1000 次,每次用 8 比特记录,单声道一秒产生多少比特?如果改成 16 比特,代价是什么?
小纸条
采样、量化、编码分别做什么?