音频文件的 PCM 和 DSD 都是什么?有什么区别?
后知后觉 暂无评论

喜欢收藏无损的朋友应该经常能看到 DSD,可是什么是 DSD?它和无损有什么关系呢。

PCM

音频基础

声音是由物体的振动产生的,振动引起周围空气压强的震荡,我们将这种震荡的函数表现形式为波形。

波形图(!AVIF)

声音的频率就是周期的倒数,表示声音在1秒钟内的周期数,单位是Hz,48kHz,就是表示1秒钟震荡了18k次。

现实生活中我们听到的声音是连续的,但是在计算机中只能处理数字信号,不能处理模拟信号,所以我们只能通过采样的方式,把模拟信号转化成数字信号,

波形采样(!AVIF)

PCM 介绍

PCM (Pulse-Code Modulation,脉冲编码调制),由于人耳听到的都是模拟信号,但是在计算机中存储时需要存储数字信号,因此 PCM 就是将模拟信号转化为数字信号的过程,在音视频领域,PCM 就是一种用数字表示采样模拟信号的方法。

还是刚才那段波形图

波形图(!AVIF)

为了便于理解,取其中的一小段

小段波形图(!AVIF)

将一段波形图变为 PCM 数据大致需要经过三步:

采样

先对其进行 Sampling (采样)

采样波形图(!AVIF)

采样处理,实际上就是让采样数据能够完全表示原始信号,且采样数据能够通过重构还原成原始信号的过程。

波形图与采样图(!AVIF)

其中红色的曲线表示原始信号,蓝色垂直线表示当前时间点对原始信号的一次采样。采样是一系列基于 amplitude(振幅)和相同时间间隔的样本。这也是为什么采样过程被称为PAM的原因。

采样后的信号称为 PAM (Pulse Amplitude Modulation,脉冲幅度调制)

采样中有一个很重要的量:采样率。每秒的样本数称为采样率(Sample rate),在图例中就是一秒内蓝色垂直线条的数量。同理可知,采样率越高,对声音波形的还原度越高,同时采样的结果越大,占用空间也越大。

采样率用途说明
8000 (8kHz)GSM(2G)老式电话
16000 (16kHz)VoLTE(4G)/
22000 (22kHz)无线广播/
44100 (44.1kHz)CD音质/
48000 (48kHz)数字电视(DVD)/
96000 (96kHz)蓝光,高清DVD/
192000 (192kHz)超清蓝光/

量化

原始信号采样后,需要通过量化来描述采样数据的大小。如图:

量化(!AVIF)

量化处理过程,就是将时间连续的信号,处理成时间离散的信号,并用实数表示。这些实数将被转换为二进制数用于模拟信号的存储和传输。

在图例中,如果说采样是画垂直线段的话,那么量化就是画水平线,用于衡量每次采样的数字指标。如图:

量化指标(!AVIF)

图中,每条横线表示一个等级(level)。

为了更好的描述量化过程,先来介绍一下 bit-depth(位深):用来描述存储数字信号值的比特数。较常用的模拟信号位深有:

位深等级说明
8-bit$2^{8}$分为 256 个 levels 用于衡量真实的模拟信号
16-bit$2^{16}$分为 65,536 个 levels 用于衡量真实的模拟信号
24-bit$2^{24}$分为 16,666,216 个 levels 用于衡量真实的模拟信号

显而易见,位深越大,对模拟信号的描述将越真实,对声音的描述更加准确。

在当前例子中,如果用为8-bit位深来描述的话,就如下图所示:

八比特采样(!AVIF)

量化的过程就是将一个平顶样本四舍五入到一个可用最近 level 描述的过程。如图中黑色加粗梯形折线。量化过程中,将尽量让每个采样和一个 level 匹配,因为每个 level 都是表示一个 bit 值。

编码

最后一步编码(Encoding)将时间线上的每个样本数据转化为对应的二进制数据。编码后的数据是就是原始 PCM 数据。

编码(!AVIF)

PCM 量化指标

在 PCM 中,有一些量为常用的量化指标,这些指标直接决定了最终的“采样质量”。

指标说明
采样率采样率(Sample rate):每秒的样本数称为采样率,通常采样率的单位用赫兹 (Hz) 表示
位深度位深(Bit-depth):表示用多少个二进制位来描述采样数据
字节序字节序(ByteArray):表示音频PCM数据存储的字节序是大端存储(big-endian)还是小端存储(little-endian),为了数据处理效率的高效,通常为小端存储
声道数声道数(Channel number):表示包含的声道数,是单声道(mono)、立体声(stereo)等
声道布局声道布局:表示声道的布局形式,常用的有立体声(2声道),低音炮(2.1声道),环绕立体声(5.1声道)
采样符号采样数据是否有符号(Sign):需要注意的是,使用有符号的采样数据不能用无符号的方式播放。
比特率没有压缩的音频数据的比特率 = 采样频率 * 采样精度 * 通道数

PCM 数据流

如果是单声道的音频文件,采样数据按时间的先后顺序依次存入(有的时候也会采用 LRLRLR 方式存储,只是另一个声道的数据为零,如果是双声道的话就按照 LRLRLR 的方式存储,存储的时候还和编码的大小端有关。大端模式如下图所示:

大端编码数据流(!AVIF)

存储方式一般分为交错和非交错两种方式:

不同的驱动程序对于多声道数据的排列方式可能稍有区别,下面是常用的声道排列地图:

2:  FL FR                       (stereo)
3:  FL FR LFE                   (2.1 surround)
4:  FL FR BL BR                 (quad)
5:  FL FR FC BL BR              (quad + center)
6:  FL FR FC LFE SL SR          (5.1 surround - last two can also be BL BR)
7:  FL FR FC LFE BC SL SR       (6.1 surround)
8:  FL FR FC LFE BL BR SL SR    (7.1 surround)

音量控制

音量的表示实际上就是量化过程中每个采样数据的等级值,只要适当的增大或者缩小采样的等级就可以达到更改音量的目的。

但需要说明的是,并是不将等级值简单乘二就能得到两倍于原声音的音量,这是因为:

  1. 数据溢出:从上面的采样原理可知,每个采样数据的取值范围是有限制的,例如一个signed 8-bit样本,取值范围为 -128~128,值为 125 时,放大两倍后的值为 250,超过了可描述的范围,此时发生了数据溢出。这个时候就需要做策略性的裁剪处理,使放大后的值符合当前格式的取值区间。
  2. 对数描述:平时表示声音强度都是用分贝(db)作单位的,声学领域中,分贝的定义是声源功率与基准声功率比值的对数乘以10的数值。根据人耳的心理声学模型,人耳对声音感知程度是对数关系,而不是线性关系。人类的听觉反应是基于声音的相对变化而非绝对的变化。对数标度正好能模仿人类耳朵对声音的反应。所以用分贝作单位描述声音强度更符合人类对声音强度的感知。前面直接将声音乘以某个值,也就是线性调节,调节音量时会感觉到刚开始音量变化很快,后面调的话好像都没啥变化,使用对数关系调节音量的话声音听起来就会均匀增大。

如下图所示,横轴表示音量调节滑块,纵坐标表示人耳感知到的音量,图中取了两块横轴变化相同的区域,音量滑块滑动变化一样,但是人耳感觉到的音量变化是不一样的,在左侧也就是较安静的地方,感觉到音量变化大,在右侧声音较大区域人耳感觉到的音量变化较小。

音量调节(!AVIF)

2.2.1 从模拟过渡到数字

  回顾历史,大多数电信号的处理一直是用模拟元部件(如晶体管、变压器、电阻、电容等)对模拟信号进行处理。但是,开发一个具有相当精度、且几乎不受环境变化影响的模拟信号处理元部件是相当困难的,而且成本也很高。
  如果把模拟信号转变成数字信号,用数字来表示模拟量,对数字信号做计算,那末难点就发生了转移,把开发模拟运算部件的问题转变成开发数字运算部件的问题,这就出现了数字信号处理器(digital signal processor,DSP)。DSP与通用微处理器相比,除了它们的结构不同外,其基本差别是,DSP有能力响应和处理采样模拟信号得到的数据流,如做乘法和累加求和运算。
  在数字域而不在模拟域中做信号处理的主要优点是:首先,数字信号计算是一种精确的运算方法,它不受时间和环境变化的影响;其次,表示部件功能的数学运算不是物理上实现的功能部件,而是仅用数学运算去模拟,其中的数学运算也相对容易实现;此外,可以对数字运算部件进行编程,如欲改变算法或改变某些功能,还可对数字部件进行再编程。

2.2.2 模拟信号与数字信号

  话音信号是典型的连续信号,不仅在时间上是连续的,而且在幅度上也是连续的。在时间上“连续”是指在一个指定的时间范围里声音信号的幅值有无穷多个,在幅度上“连续”是指幅度的数值有无穷多个。我们把在时间和幅度上都是连续的信号称为模拟信号。
  在某些特定的时刻对这种模拟信号进行测量叫做采样(sampling),由这些特定时刻采样得到的信号称为离散时间信号。采样得到的幅值是无穷多个实数值中的一个,因此幅度还是连续的。如果把信号幅度取值的数目加以限定,这种由有限个数值组成的信号就称为离散幅度信号。例如,假设输入电压的范围是0.0V~0.7V,并假设它的取值只限定在0、0.1、0.2,…,0.7共8个值。如果采样得到的幅度值是0.123V,它的取值就应算作0.1V,如果采样得到的幅度值是0.26V,它的取值就算作0.3,这种数值就称为离散数值。我们把时间和幅度都用离散的数字表示的信号就称为数字信号。

2.2.3 声音信号数字化

  声音进入计算机的第一步就是数字化,数字化实际上就是采样和量化。如前所述,连续时间的离散化通过采样来实现,就是每隔相等的一小段时间采样一次,这种采样称为均匀采样(uniform sampling);连续幅度的离散化通过量化(quantization)来实现,就是把信号的强度划分成一小段一小段,如果幅度的划分是等间隔的,就称为线性量化,否则就称为非线性量化。图2–02表示了声音数字化的概念。
图2-02 声音的采样和量化(!AVIF)
  声音数字化需要回答两个问题:①每秒钟需要采集多少个声音样本,也就是采样频率 $\left( f_{s}\right) $ 是多少,②每个声音样本的位数(bit per sample,bps)应该是多少,也就是量化精度。

2.2.4 采样频率

  采样频率的高低是根据奈奎斯特理论(Nyquist theory)和声音信号本身的最高频率决定的。奈奎斯特理论指出,采样频率不应低于声音信号最高频率的两倍,这样就能把以数字表达的声音还原成原来的声音,这叫做无损数字化(lossless digitization)。采样定律用公式表示为

$f_{s}^{3}2f$ 或 $T_{s}f\dfrac{T}{2}$
(其中 f 为被采样信号的最高频率)
你可以这样来理解奈奎斯特理论:声音信号可以看成由许许多多正弦波组成的,一个振幅为A、频率为f的正弦波至少需要两个采样样本表示,因此,如果一个信号中的最高频率为 $f_{\max }$,采样频率最低要选择 2$f_{\max }$。例如,电话话音的信号频率约为3.4 kHz,采样频率就选为8 kHz。

2.2.5 采样精度

  样本大小是用每个声音样本的位数bit/s(即bps)表示的,它反映度量声音波形幅度的精度。例如,每个声音样本用16位(2字节)表示,测得的声音样本值是在0~65536的范围里,它的精度就是输入信号的1/65536。样本位数的大小影响到声音的质量,位数越多,声音的质量越高,而需要的存储空间也越多;位数越少,声音的质量越低,需要的存储空间越少。
  采样精度的另一种表示方法是信号噪声比,简称为信噪比(signal-to-noise ratio,SNR),并用下式计算:

$SNR=10\log[\left(V_{signal}\right)^{2}/\left(V_{noise}\right)^{2}]=20\log\left(V_{signal}/V_{noise}\right)$

其中,$V_{signal}$ 表示信号电压,$V_{noise}$ 表示噪声电压;SNR 的单位为分贝(db)
  例1:假设$V_{noise}=1$,采样精度为1位表示 $V_{signal}=2^{1}$,它的信噪比SNR=6分贝。
  例2:假设$V_{noise}=1$,采样精度为16位表示 $V_{signal}=2^{16}$,它的信噪比SNR=96分贝。

2.2.6 声音质量与数据率

  根据声音的频带,通常把声音的质量分成5个等级,由低到高分别是电话(telephone)、调幅(amplitude modulation,AM)广播、调频(frequency modulation,FM)广播、激光唱盘(CD-Audio)和数字录音带(digital audio tape,DAT)的声音。在这5个等级中,使用的采样频率、样本精度、通道数和数据率列于表2–01。

质量采样频率
(kHz)
样本精度
(bit/s)
声道数据率(未压缩)
(kB/s)
频率范围
(Hz)
电话*88单声道8200~3 400
AM11.0258单声道11.020~15 000
FM22.05016立体声88.250~7 000
CD44.116立体声176.420~20 000
DAT4816立体声192.020~20 000
  • 电话使用m律编码,动态范围为13位,而不是8位(详见第3章)

DSD

Direct Stream Digital(DSD)是一项属于索尼和飞利浦的专利,利用脉冲密度调制(pulse-density modulation)编码将音频信号存储在数字媒体上的科技,这项技术的应用对象是 SACD。

信号本身以 ΔΣ调制(积分微分调制)后的数字音频存储,连续单一个比特的序列以 64 倍于标准 CD 采样率(44.1 kHz)的频率来采样,即 2.8224 MHz。借由 64倍过采样(oversample)来达成噪声整形,把以往由于量化不精确的声音频号而造成的噪音和失真,减少至一个比特以内的误差。

了解 PCM 后,DSD 也很好理解,想了解 DSD 和 PCM 的区别,可以先从一个小实验开始,将钢板尺的一端固定,用手指按压另一端。此时钢板尺的震动,引发空气的疏密变化,从而产生声波的传递。

钢尺振动(!AVIF)

扬声器的声波传递原理与钢板尺相同。模拟音频由复合的正弦波构成,所以模拟音频可以用数学三角函数中的正弦比例的曲线来表示。

模拟音频(!AVIF)

DSD 所采用的 Delta-sigma 调制是一种将模拟信号转换为数字信号的编码方法。ΔΣ调制将模拟电压信号转换为脉冲频率或脉冲密度,可以理解为脉冲密度调制(PDM)。只要脉冲的时序和符号可以恢复,代表已知固定速率的比特的正脉冲和负脉冲序列就很容易在接收端产生、发射和精确再生。给定这样一个脉冲序列从一个ΔΣ调制器,原始波形可以重建与足够的精度。相比之下,如果不将模拟信号转换成脉冲流,而只是直接传输模拟信号,系统中所有的噪声都会加到模拟信号上,从而降低模拟信号的质量。使用 PDM 作为信号表示法是 PCM 的另一种选择,以奈奎斯特速率对多位码进行采样和量化。

PCMvsDSD(!AVIF)

DSD 在单位时间内只能表现一个数字,而 PCM 是在单位时间内表现一组数字。以红皮书 CD 标准的采样频率44.1Khz为参考,该频率的64倍频为2.8224Mhz,该频率的采样时间为:354.30839ns(纳秒)。在时间单位内产生一个采样bit,如果数字为1则正弦波向正向移动,如果数字为0则正弦波则向反相移动。无论是0或者1,他们在时间轴上的排列顺序以 354.30839ns(纳秒)为间隔。

DSD说明(!AVIF)

当这些很多的1与很多的0紧紧相连排列在一起时,我们得到这样一个结果。根据采样频率的电平高低变化而引发bit排列的疏密变化。我们可以将1看作扬声器向前运动,0看作扬声器向后运动。

钢尺振动(!AVIF)

根据上下两图的对比,不难看出,DSD的编码方式实际在用数字的“多少”来模拟扬声器所产生的声波,由振动而引发颗子的疏密变化。我们可以将 0 和 1 看作是这些粒子在时间轴上的排列。因此,DSD中零和一的变化与二进制体系无关,所以不能被计算机识别。如果需要让 DSD 在二进制编码体系中运行,则需要将 DSD 转换为 PCM。


差异

通过上面的说明,可以简单理解为 PCM 记录的是声音曲线上的每个点,质量取决于采样深度和采样频率,DSD 记录的是声音曲线的变化趋势,质量只在于采样频率。

只不过 DSD 的文件采样频率要远远大于 PCM,具有高数积分微分知识的可知,只要采样频率够高,这两种采样的差别仅在于方式,而优劣只取决于取样参数。


附录

参考链接

本文撰写于一年前,如出现图片失效或有任何问题,请在下方留言。博主看到后将及时修正,谢谢!
禁用 / 当前已拒绝评论,仅可查看「历史评论」。