影音科普:数字音频如何工作?

2021-03-16 17:06发布

数字音频的工作原理

关于数字音频工作原理的详尽解释已经超出了本手册的范围。以下是一个非常简短的说明,它将使您对成功使用MSP所必需的最低限度的了解。

为了更全面地说明数字音频的工作原理,我们推荐由麻省理工学院出版社于1996年出版的Curtis Roads编写的《计算机音乐教程》。它还包括有关该主题的大量参考书目。


声音

简单谐波运动

我们听到的声音是由振动的物体引起的气压波动-与正常大气压的微小变化。(从技术上讲,如果您在水下听,可能是水压,但请不要将计算机放在游泳池旁。)

当物体移动时,它会置换旁边的空气分子,进而置换其旁边的空气分子,依此类推,从而导致瞬间的“高压前沿”从移动的物体(朝您的耳朵)移开。因此,如果我们引起物体振动(例如,敲打音叉),然后使用麦克风测量附近某个点的气压,则麦克风会检测到气压略有上升,因为“高压前进”。由于音叉的尖齿相当坚硬并且固定在一端,因此会有一个恢复力将其拉回其正常位置,并且由于该恢复力使它具有动量,因此它超过了其正常位置,因此移至相反的极端位置,并继续以此方式来回振动,直到最终失去动力并停在其正常位置。结果,我们的麦克风检测到压力升高,然后压力降低,然后压力升高,依此类推,这与音叉尖叉的来回振动相对应。


如果要绘制一个麦克风所检测到的气压随时间变化的图表,我们会看到正弦形状(正弦波)上升和下降,与音叉的来回振动相对应。

1.gif

来回简单振动引起的气压正弦变化

压力的这种持续上升和下降会产生声波。相对于正常大气压,气压的变化量称为波幅(从字面上看,是“大”)。我们最常使用的术语“振幅”是指峰值振幅,即波所达到的最大压力变化。


这种简单的来回运动(也可以在摆的摆动中看到)称为简单谐波运动。它被认为是最简单的振动形式,因为物体以恒定的速率完成了一个完整的来回循环。即使它的速度变慢,当它变慢以改变方向,然后在另一个方向上增加速度时(如正弦波的曲线所示),它从一个循环到下一个循环的平均速度是相同的。因此,每个完整的循环振动发生在相等的时间间隔(在给定的周期的时间),所以波被认为是周期性的。一秒钟内发生的循环数称为振动频率。例如,如果音叉的叉齿往返440次每秒,其频率为每秒440个周期,其周期为1 / 440每个周期第二。


为了让我们听到这样的压力波动:

•波动必须足以影响我们的鼓膜(鼓膜),而又不会伤害到我们。实际上,气压变化的强度必须大于大气压的约10 -9倍,但不大于大气压的约10 -3倍。您实际上永远不需要这些信息,但是确实有。这意味着,我们可以听到的最柔和的声音大约是我们可以承受的最响的声音的强度的百万分之一。那是各种各样的可能性。

•波动必须以固定的速度重复,以使我们能够将它们感知为声音(而不是作为单个事件),但又不能太快以至于超出我们的听觉能力。教科书通常将这种可听频率范围表示为每秒20到20,000个周期(cps,也称为赫兹,缩写为Hz)。您自己的里程可能会有所不同。如果您正接近中年或听过太大声的音乐,则可能会达到约17,000 Hz甚至更低的频率。


复合音

在简单的谐波运动中振动的物体据说具有共振模式,即在运动时自然会振动的频率。但是,大多数现实世界的物体具有几种共振模式的振动,因此会同时以许多频率振动。任何包含多个单一频率的声音(即,不是简单正弦波的任何声音)都称为复杂音调。让我们以拉长的吉他弦为例。


吉他弦在整个长度上具有均匀的质量,由于两端固定(在“螺母”和“琴桥”处),因此具有已知的长度,并具有一定的张力,具体取决于调弦的紧密程度调音钉。由于琴弦的两端都是固定的,因此在这些点上必须始终保持静止,因此琴弦在其中心自然会产生最大的振动。

2.gif

弹弦以其基本共振模式振动

它振动的频率取决于其质量,张力和长度。这些特征在音符过程中保持相当恒定,因此它具有一个振动的基本频率。


但是,其他方式的振动仍然是可能的。

3.gif

拉伸琴弦的其他一些共振模式

弦的两端必须保持静止的事实限制了可能的振动模式。这将其共振模式限制在其长度的整数部分。

4.gif

因为弦线的两端固定,所以这种共振模式是不可能的


由于已设置张力和质量,因此弦线长度的整数除法将导致基频的整数倍。

5.gif

每种谐振模式导致不同的频率

实际上,弹拨弦将同时在所有这些可能的共振模式中振动,从而在所有相应的频率上产生能量。当然,每种振动模式(以及每种频率)都将具有不同的振幅。(在吉他弦的示例中,弦的较长部分具有更大的振动自由度。)产生的音调将是所有这些频率的总和,每个频率都有自己的振幅。


由于弦的振动由于夹具两端的阻尼力而消失,因此每个频率可能以不同的速率消失。实际上,在许多声音中,不同分量频率的振幅可能会分别非常不同且彼此不同地变化。这种变化似乎是我们对声音具有不同音色(即音色)的感知的基本因素之一,即使是单个音符的音色也会在音符过程中发生巨大变化。


谐波音

声音中出现的频率及其振幅的组合称为频谱(就像不同的频率和光强度构成一个色谱一样)。进入复杂音调的每个单独的频率称为部分频率。(这是整个音调的一部分。)


当复音中的部分音(分量频率)都是相同基本频率的整数倍时(例如在我们的吉他弦示例中),该声音被称为具有谐波频谱。谐波频谱的每个分量都称为谐波部分,或简称为谐波。所有这些谐波相关频率的总和仍然导致具有基频的周期波。因此,整数倍频率“和谐地”融合为一个音调。

6.gif

谐波相关频率之和仍在基频处重复

尚·巴蒂斯特·约瑟夫·傅里叶(Jean-Baptiste Joseph Fourier)著名的数学定理支持这种融合,该定理指出,无论多么复杂,任何周期波都可以证明是不同谐波相关频率(正弦波)的总和,每个频率都有自己的振幅和阶段。(相位是时间的偏移量,相当于一个周期的一部分。)

谐波相关的频率概述了我们音乐感知中的一组特定的相关音高。

7.gif

基本频率ƒ的谐波部分,其中ƒ= 65.4 Hz =低音低C

每次将基本频率乘以2、2、4、8、16等的幂时,感知到的音乐音调就会增加一个八度。所有文化似乎都认为,在这种与八度相关的频率之间,音高等级存在一定的“相同性”。基本的其他整数倍会产生新的音高。每当您听到和声复杂的音调时,您实际上就是在听到和弦!但是,正如我们所看到的,合并后的结果会在基本频率上重复出现,因此我们倾向于将这些频率融合在一起,以便感知单个音高。


非谐音和噪音

一些物体(例如铃铛)以更加复杂的方式振动,并具有许多不同的振动模式,这些振动可能不会产生谐调相关的部分声波。如果音调中出现的频率不是单个基本频率的整数倍,则该波不会周期性重复。因此,在我们的感知中,一组不谐调的部分不容易融合在一起。我们也许能够更容易地挑选出各个部分,并且-尤其是当这些部分很多且完全不和谐时-我们可能不会将音调视为具有可辨别的基本音高。


当一个音调如此复杂以至于它包含许多不同的频率而没有明显的数学关系时,我们将声音视为噪声。具有许多完全随机的频率和振幅-基本上所有频率均等比例存在的声音是一种称为白噪声的类似静态的声音(类似于包含所有光频率的白光)。


因此,将声音视为从总纯度和可预测性(正弦波)到总随机性(白噪声)连续存在的声音可能会很有用。大多数声音都介于这两个极端之间。谐音(例如小号或吉他音调)位于连续谱的较纯净的一端,而crash声碰撞更接近连续谱的嘈杂的一端。定音鼓和铃铛可能恰好暗示了谐波频谱,我们可以识别出基本音高,但是它们还包含其他不谐音部分。其他鼓会产生更多的带限噪声-随机相关的频率,但限制在某个频率范围内-给出音高范围或非特定音高的感觉,而不是可识别的基本音。在合成声音时,请记住这一连续性,这一点很重要。


幅度包络

几乎无限多种声音中的另一个重要因素是声音在其持续时间内整个振幅的变化。这种宏观的整体振幅变化的形状称为振幅包络线。声音的初始部分随着振幅包络线从无声到可听度的增加而上升到其峰值振幅,被称为声音的攻击。声音的包络线,尤其是声音的响度,是我们区分,识别和比较声音的能力的重要因素。我们对如何读取声波的图形表示以及如何以好视力的读者使用音符的方式在脑海中听到声音的知识很少。

但是,幅度包络至少可以告诉我们声音的响度随时间的一般演变。

8.gif

振幅包络是声音振幅随时间的演变


振幅和响度

客观测量的声音振幅与我们对声音响度的主观印象之间的关系非常复杂,并且取决于许多因素。在不试图解释所有这些因素的情况下,我们至少可以指出,我们对两种声音的相对响度的感觉与强度的比率有关,而不是强度的数学差异。例如,在任意测量范围内,振幅1的声音和振幅0.5的声音之间的关系与振幅0.25声音和振幅0.125的声音之间的关系相同。振幅之间的相减差在第一种情况下为0.5,在第二种情况下为0.125,但在感知上我们关心的是比率,在两种情况下均为2:1。


振幅大一倍的声音对我们来说响一声吗?通常,答案是“否”。首先,我们对“响度”的主观感觉并不与幅度成正比。实验发现,对于大多数听众来说,声音的“极端主观”感觉是“声音的两倍”,需要将幅度增加两倍以上。此外,我们的响度感会根据所考虑声音的频率而有很大不同。我们对大约300 Hz至7,000 Hz范围内的频率比对该范围外的频率更加敏感。(这可能是由于进化而来的,主要是听语音和许多其他重要声音的重要性,这些声音主要位于该频率范围内。)


但是,振幅和响度之间存在相关性-即使不是完美的线性关系,因此了解两种声音的相对振幅当然是有益的。如前所述,我们可以听到的最柔和的声音的振幅大约是我们可以承受的最响的声音的振幅的百万分之一。与其讨论使用从0到1,000,000如此宽范围的数字的幅度,不如以对数刻度比较幅度。


通常以分贝(缩写为dB)为单位讨论两个幅度之间的比率。用分贝表示的水平表示两个值之间的比率关系,而不是绝对度量。如果我们将一个振幅作为参考,我们将其称为A0,则另一种声音的相对振幅可以用分贝来计算:

等级(分贝)= 20 log10(A / A 0

如果我们考虑最大可能振幅为1的数值,然后用一个振幅0.5声音的参考具有1 / 2的振幅(等于10 -0.3),因此其电平

20 log10(0.5 / 1)_ 20(-0.3)= -6 dB

每个幅度减半大约相差-6 dB;幅度每增加一倍,大约增加6 dB。因此,如果一个振幅比另一个振幅大48 dB,则可以估计它大约大2 8(256)倍。


概括

此处讨论的对正弦波,谐波音,非谐复音和噪声的理论理解对于理解声音的性质很有用。但是,大多数声音实际上是这些理论描述的复杂组合,从一个瞬间变为另一个瞬间。例如,弓弦可能包括因弓scrap刮弦而产生的噪音,由于弓弦压力和速度变化而引起的幅度变化,由于弓弦位置而引起的不同频率的突出变化,幅度和基本频率的变化(和左手的颤音等引起的所有谐波。鼓音可能会很吵,但可能会演变为在其频谱的某些区域具有重点,这意味着和声,从而给人基本音调的印象。检查现有的声音,以及合成新声音的实验,可以深入了解声音的组成方式。计算机提供了这个机会。


声音的数字表示

采样和量化声波

要了解计算机如何表示声音,请考虑影片如何表示运动。通过以恒定的速度(通常每秒24帧)快速连续拍摄静止照片来制作电影。当照片以相同的速率连续显示时,即使我们实际上每秒看到二十四个离散图像,它也会使我们误以为我们看到了连续运动。声音的数字记录工作原理相同。我们对声波的瞬时振幅进行了许多离散采样,存储了这些信息,然后稍后以相同的速率重现这些振幅,从而产生了连续波的错觉。


麦克风的工作是将气压的变化转换(将能量的一种形式转换为另一种形式),转换成类似的电压变化。然后,可以通过称为“采样和保持”的过程定期采样不断变化的电压。在规则的时间间隔上,对该时刻的电压进行采样并保持恒定,直到进行下一次采样为止。这将信息总量减少到一定数量的离散电压。

9.gif

定期采样随时间变化的电压

一种称为模数转换器(ADC)的设备从采样和保持设备接收离散电压,并将数值赋予每个幅度。将电压转换为数字的过程称为量化。这些数字在计算机中表示为一串二进制数字(1或0)。生成的二进制数存储在内存中,通常存储在数字音频磁带,硬盘或激光光盘上。为了播放声音,我们从内存中读取数字,然后以记录它们的相同速率将这些数字传送到数模转换器(DAC)。DAC将每个数字转换为电压,然后将这些电压传送到放大器以增加电压的幅度。


为了使计算机准确地表示声音,每秒必须采集许多样本-比拍摄视觉图像所需的样本还要多。实际上,我们需要采集的样本数量是我们希望记录的最高频率的两倍以上。(有关原因的解释,请参阅下一页的“数字音频的局限性”。)如果要记录高达20,000 Hz的频率,则需要每秒至少采样40,000次声音。光盘记录(和“ CD品质”计算机音频)的标准是每个音频通道每秒要采集44,100个样本。每秒采样的数量称为采样率。


这意味着计算机只能准确表示高达采样率一半的频率。在进行采样过程之前,必须滤除声音中超过采样率一半的任何频率。这是通过通过低通滤波器发送电信号来实现的去除高于某个阈值的任何频率。同样,当数字信号(代表量化样本的二进制数字流)发送到DAC并重新转换为连续的电信号时,从DAC发出的声音将包含杂散的高频,这些杂散的高频是由DAC产生的。采样并保留过程本身。(如上例所示,这是由于离散采样所产生的“尖锐边缘”所致。)因此,我们还需要通过低通滤波器发送输出信号。


因此,数字记录和回放过程是一连串的操作,如下图所示。

10.gif

数字录音和播放过程

数字音频的局限性

采样率和奈奎斯特率

我们注意到,有必要至少抽取两倍于我们希望记录的最高频率的样本。这是由Harold Nyquist证明的,被称为Nyquist定理。换句话说,计算机只能准确表示高达采样率一半的频率。采样率的一半通常称为奈奎斯特频率或奈奎斯特速率。


例如,如果我们每秒采集16,000个音频信号样本,则只能捕获高达8,000 Hz的频率。高于奈奎斯特频率的任何频率都被感知地“折回”到奈奎斯特频率以下的范围内。因此,如果我们尝试采样的声音包含9,000 Hz的能量,则采样过程会将该频率错误地表示为7,000 Hz,这可能是原始声音中根本不存在的频率。这种效果被称为折叠或混叠。混叠的主要问题是它会向数字化声音中添加原始声音中不存在的频率,除非我们知道原始声音的确切频谱,否则无法知道哪些频率真正属于数字化声音中以及这是混叠的结果。这就是为什么在采样和保持过程之前必须使用低通滤波器,以去除高于奈奎斯特频率的任何频率的原因。


要了解为什么会出现这种混叠现象,请回想一下以每秒拍摄24帧的胶卷相机为例。如果我们正在拍摄汽车电影,并且车轮以大于每秒12转的速度旋转,则它已超过相机“采样率”的一半。车轮完成多于1 / 2每帧的革命。如果,例如,它实际完成18 / 24每帧的一场革命,它会出现要被以每秒6转的速度倒退。换句话说,如果我们不目睹样本之间发生了什么,则车轮的270°旋转与-90°旋转是无法区分的。我们在两种情况下获得的样本完全相同。

11.gif

对于相机,18/24的旋转与-6/24的旋转没有什么不同

对于音频采样,该现象实际上是相同的。超过奈奎斯特速率的任何频率都无法与负频率区分开,负频率小于奈奎斯特速率。(并且我们不会在感觉上区分正频率和负频率。)在某个频率超过奈奎斯特频率的程度上,它会从奈奎斯特频率向下折回相同的数量。


为了进行演示,请考虑以下两个示例。以下示例显示了以22,050 Hz的速率采样的4,000 Hz余弦波(仅在4,000 Hz时的能量)的图表。22,050 Hz是CD采样率的一半,对于在我们的听觉范围的最高八度音阶中没有太多能量的声音来说,这是可接受的采样率。


在这种情况下,采样率就足够了,因为我们试图记录的最大频率远低于奈奎斯特频率。

12.gif

在22,050 Hz采样的4,000 Hz余弦波

现在考虑以不足的速率(例如6,000 Hz)采样的相同4,000 Hz余弦波。波完成多于1 / 2每采样周期,将所得样品是从那些将来自2000赫兹余弦波来获得没有区别。

13.gif

4,000 Hz余弦波在6,000 Hz下欠采样

从奈奎斯特定理可以学到的简单教训是,数字音频不能准确表示大于采样率一半的任何频率。折叠到低于采样率一半的范围内,任何这样的频率都将被错误地表示。

量化精度


必须为音频信号的每个样本赋予一个数值,以将其存储在计算机中。数值表示在采样时信号的瞬时幅度。数字范围必须足够大,以充分表达所采样声音的整个振幅范围。


计算机使用的可能数字范围取决于用于存储每个数字的二进制数字(位数)的数量。一个位可以具有两个可能值之一:1或0。两个位一起可以具有四个可能值之一:00、01、10或11。随着位数的增加,它们可以表示的可能数的范围增加2的幂。因此,计算机数据的单个字节(8位)可以表示2 8 = 256个可能数字之一。如果我们使用两个字节来表示每个数字,则由于2 16 = 65,536 ,因此可能的值范围更大。


在计算机中用来表示数字的位数非常重要,因为它决定了我们可以用来测量信号幅度的分辨率。如果我们仅使用一个字节来表示每个样本,则由于信号只有256种描述幅度的方式,因此必须将信号可能幅度的整个范围划分为256个部分。

14.gif

每个样本使用一个字节,每个样本只能具有256个不同的可能值之一

例如,如果要采样的电信号的幅度在-10伏到+10伏的范围内,并且我们对每个采样使用一个字节,则每个数字并不代表精确的电压,而是代表整个范围的0.078125V。属于该部分的任何样本将被赋予相同的编号。这意味着样品的值的每一个数值的描述可以通过从它的实际值被关闭多达0.078125V - 1 / 256个总幅度范围。在实践中每一个样品将一些随机量从0到熄灭1 / 256个总幅度范围。平均误差将是1 / 512个总范围的。


这称为量化误差。这是不可避免的,但是可以通过使用更多的位来表示每个数字,将其降低到可接受的水平。如果我们每个样本使用两个字节,则量化误差将永远不会大于总振幅范围的1 / 65,536,并且平均误差将为1 / 131,072


由于每个样本的量化误差通常是随机的(有时有点太高,有时有点太低),因此我们通常听到量化误差的影响是白噪声。该噪声不存在于原始信号中。由于量化的不精确性,它被添加到数字信号中。这称为量化噪声。


总幅度范围与量化误差之比称为信号量化噪声比(SQNR)。这是最大可能信号幅度与量化噪声的平均电平量化之比,通常以分贝表示。根据经验,量化中使用的每一位精度都会为SQNR增加6 dB。因此,以8位数值精度量化的声音将具有大约48 dB的最佳情况SQNR。这对于保真度不重要但对于音乐或其他关键目的当然不是理想的情况就足够了。以16位精度(“ CD品质”)采样的声音的SQNR为96 dB,这非常好-比传统的磁带录音好得多。


简而言之,计算机用于存储每个样本的位数越多,信号与噪声的潜在比率就越好。


内存和存储

我们已经看到,高保真音频的标准采样率为每秒44,100个采样。我们还看到,每个样本需要16位(2个字节)才能获得良好的信噪比。有了这些信息,我们可以计算出数字音频所需的数据量:每秒41,000个样本,每个样本乘以2个字节,立体声两次乘以2声道,每分钟60秒乘以CD质量每分钟超过10兆字节的数据声音的。


对于这种音频质量,高密度的软盘可容纳少于8秒的声音,而100 MB的Zip盒式磁带可容纳少于10分钟的时间。显然,数字音频的存储和存储要求很高。幸运的是,光盘可容纳一个小时以上的立体声,并且至少有1 GB的计算机硬盘是音频记录和处理的标准配置。


剪裁

如果输入电信号的幅度超过可以用数字表示的最大幅度,则数字信号将是实际声音的简化版本。

15.gif

超过最大幅度的信号在量化时会被削波

剪切后的样本听起来通常会与原始样本完全不同。有时,这种类型的削波只会使声音的轻微失真(由于音色变化而听到)。但是,更常见的是,声音听起来像是非常不愉快的声音。因此,采取预防措施以避免削波非常重要。电信号的幅度不应超过ADC期望的最大值。


也有可能在计算机中产生超出DAC期望的最大值的数字。这将使从DAC发出的声音成为数字信号的削波版本。DAC的削波与ADC的削波一样糟糕,因此必须注意不要产生超出DAC能够处理的数值范围的数字信号。


数字音频的优点

合成数字音频

由于声音的数字表示形式只是数字列表,因此从理论上讲,任何数字列表都可以视为声音的数字表示形式。为了听见数字列表作为声音,数值必须以音频速率上下波动。我们可以通过将数字发送到DAC并将其转换为电压来收听任何此类列表。这是计算机声音合成的基础。我们可以用计算机程序生成的任何数字,我们都可以听成声音。


已经发现了许多方法来产生产生有趣声音的数字。一种产生声音的方法是编写一个程序,该程序反复求解包含两个变量的数学方程。在每次重复中,为变量之一输入一个稳定增加的值,代表时间的流逝。求解方程后,另一个变量的值将用作每个时刻的振幅。程序的输出是随时间上下变化的幅度。


例如,使用n的增加值,通过反复求解以下代数方程,可以产生正弦波:

y = A罪(2_ƒn/ R +ø)

其中,A是波的振幅,ƒ是波的频率,n是采样数(0,1、2,3等),R是采样率,而ø是相位。如果在增加n的值的同时输入A,ƒ和y的值,则y的值(输出样本)将以正弦形式变化。


通过添加正弦曲线可以产生复杂的音调-一种称为加法合成的方法:

y = A1 sin(2_ƒ1n/ R +ø1)+ A2 sin(2_ƒ2n/ R +ø2)+ ...

这是单个代数表达式如何产生声音的示例。自然,许多其他更复杂的程序也是可能的。MSP教程中演示了一些合成方法,例如加法合成,波表合成,频率调制和波动处理。


处理数字信号

任何数字形式的声音(无论是计算机合成的声音还是从“真实世界”的声音中量化的声音)都只是一系列数字。用这些数字执行的任何算术运算都将成为音频处理的一种形式。


例如,乘法等效于音频放大。将数字信号中的每个数字乘以2会使信号的幅度加倍(将其增加6 dB)。将信号中的每个数字乘以0到1之间的某个值可减小其幅度。

加法等同于音频混合。给定两个或多个数字信号,可以通过将每个信号的第一个数字相加,然后再加上第二个数字,再加上第三个数字,依此类推,来创建一个新信号。


可以通过调出较早出现的样本并将其添加到当前样本中来创建回声。例如,较早发出的1000个样本中的任何信号都可以与当前样本一起再次发出。

y = xn + A yn-1000

实际上,此类操作对信号(音频或任何其他种类)的形状可能产生的影响是千差万别的,以至于它们构成了电气工程的整个分支,称为数字信号处理(DSP)。DSP关注数字滤波器的影响-通过延迟,乘法,加法和其他数字运算的组合来修改数字信号的公式。


概括

本章介绍了如何捕获连续的声音现象并将其忠实地再现为一系列数字,并最终以二进制数字流的形式存储在计算机内存中。仅通过声音的这种数字表示可以获得许多好处:比以前更高的保真度记录,通过数学程序合成新声音,将数字信号处理技术应用于音频信号等。

MSP提供了用于探索这一可能性范围的工具包。它将数字音频录制,合成和处理与MIDI控制和Max的基于对象的编程集成在一起。

赞赏支持