延迟的原理

  • Live 版本:所有版本
  • 操作系统:所有操作系统

注意:以下文章仅供参考。 更为详细实用的信息,可以参考这篇文章如何减少延迟。

什么是延迟

Latency_1.png

延迟指的是信号进入系统,再从中输出所需的时间。 在数字音频工作站中,一定量的延迟是必要的。输入信号由音频接口的进行信号转换、传输到 DAW(或其他应用程序)、由 DAW 中的乐器/效果器处理、传输到音频接口进行信号转换并输出。

延迟不可消除,但我们可以理解其中的原理

什么导致了延迟

在数字音频中,延迟主要由信号路径中的信号转换音频缓冲区产生。

模拟到数字(AD) 信号转换器将输入的模拟音频信号转换为电脑能够处理的数字信号。 反之,数字到模拟(DA)信号转换器将数字信号转换为模拟信号,可发送扬声器或硬件音频效果器。 在大多数工作室中,这个任务由音频接口(声卡)处理。

音频缓冲区用于把一段时间的信号作为一个整体进行传输。 (较大的音频缓冲区需要更长时间来处理,因此会增加整体的延迟)。

延迟何处产生

  • 音频接口
  • 音频接口驱动
  • 操作系统 (可能需要把其他应用程序发出的声音融合一并输出)
  • 音频接口和 DAW 之间
  • DAW 内部的信号处理(例如 监听的轨道 / 原生效果器 / 插件 / 其他.

音频接口的延迟是如何计算的

为了使信号数据从一个位置传输到另一个位置,至少需要处理一个音频缓冲区。  因此,最小的延迟即一个音频缓冲区包含的采样时长,具体取决于采样率。

更精确来说...
缓冲区大小(采样的数量) ÷ 采样率(kHz)= 预计延迟(ms)。

例如,缓冲区 256 采样 采样率 44.1 kHz,音频接口会在 5.8 毫秒内完成数据转换,再传输数据到 Live(256 采样÷ 44.1 kHz)。

你可能会发现 Live 的偏好设置中,“整体延迟”和上述计算结果不符。 这是因为真实的延迟还有许多因素的影响:

  1. 上述的计算公式适用于单次的信号转换。 但是,音频接口的“总体延迟”同时包含了输入和输出延迟。 最简单的估算方式是将理论计算结果乘二。
  2. 在数字信号处理(DSP)领域,预测数值并不精确,因为还有许多额外的处理/转换计算可能会影响到具体延迟。 有关具体示例,请参考下文的用例部分。
  3. 某些音频接口报告的延迟数值不准确。

影响延迟的 Live 设置

延迟补偿

见下文

减少监听延迟

见下文

缓冲区大小

如上文所述,音频是分为一块块的采样数据进行处理的。 大块的数据处理会导致明显的延迟,较小的数据块则会减少整体的延迟。 但是,较小的数据块加载/释放的频率也越快,这样才能维持稳定的音频回放,因此 CPU 和系统的整体负载也越高。 如果 CPU 无法及时处理数据,丢失的数据块就会导致爆音或咔嗒声。

采样率

在数字录音中,音频由一系列的“采样”数据表示。 这些数据由计算机迅速地串在一起,形成可听的声音波形。 音频采样率决定了系统录制,生成并输出声音的频率。 (较高的采样率可以达到更低的整体延迟,但是对 CPU 的压力较大)。

轨道延迟

因为信号无法在产生前就进行处理,因此负的延迟值并不能将声音实际提前。 现实情况下,工程中的每一个轨道都会进行相应的移动,以达到相同延迟的效果。

任何一个轨道的输出都能进行正负延迟的调整,可以用于补偿人为、声学、硬件等等现实环境造成的延迟(当然你也可以用于创作)。 但是,这些延迟会在实时监听某个轨道时反应出来。

图像设置

Live 的图像并没有延迟补偿,这是为了给音频计算留出足够的空间。 所以你可能会发现 Live 的图像和音频并不符合,但在大多数情况下还是不容易察觉到的。

在 Max for Live 中编辑

Max for Live 装置会在编辑状态下产生更多的延迟

影响延迟的装置设置

注意:除了下文第一段,其他几点同时适用于 Live 原生装置和第三方插件。

相关阅读如果查看 Live 装置或是插件的延迟

插件延迟补偿

如果某个插件所需的计算量可以在一个音频缓冲区周期内完成,那么不会产生额外的延迟。 如果来不及计算,那么插件会向 DAW 报告所需的额外时间,DAW 会将所有其他轨道进行相应的调整,以保持相对同步回放。

某些插件所需的计算量巨大,因此会产生明显的延迟。 如果此时进行实时监听或录音会十分艰难,因为一轨的高延迟就会导致整个工程的高延迟。

External Instrument & External Audio Effect

因为这些设备会从 Live 外部发送/接受音频,因此会自动添加 Live 偏好设置中的延迟量。 除此之外,调整 'Hardware Latency' 滑块也会增加整体延迟。

Lookahead(前视时间)

某些装置具有 “lookahead” 功能,会让输入信号延迟一点进入。 (如 - Live 的Compressor 利用 Lookahead 功能延迟输入信号,提前进行处理,以达成实时处理无法实现的效果)。

频谱分析/处理

为了将输入的信号从时间概念转换为频谱概念进行显示和处理,需要较大的音频缓冲区。 因此,包含有频谱处理的装置会产生一定的延迟。

其他高级处理选项(Oversampling 过采样 / 卷积 / 等等

某些装置会进行一些智能的处理,它们不仅分析单个采样内容,还需要一段时间的音频进行智能决策,因此需要非常大的音频缓冲区。 某些插件会特别明显,例如 iZotope 的 Ozone 系列, 它们为了实现智能处理会产生大量的延迟。(但这是必要的!

其他产生延迟的因素

低效/过旧的音频接口驱动

在 Windows 机器上,ASIO 驱动类型往往优于 MME/DirectX。

此外,由于操作系统的更新以及其他外部因素对 DAW 的影响,过旧的驱动还会拖慢整体计算机的速度。 音频接口的厂商一般会对硬件的固件和驱动进行更新,以补偿操作系统更新带来的影响,也有可能是单纯的改善硬件的性能。

停用乐器 & 效果器

所有乐器和效果器左上角的黄色按钮能够暂时停用它们。 由于装置停用状态能够由用户随意切换(包括自动化),因此在停用设备时消除延迟可能会导致总体输出产生明显失真。 为了防止失真产生,装置延迟始终有效,无论是否停用。

mceclip1.png

用例

了解延迟会比较困难,因为实际表现和根源问题可能差距很大。 以下是一些典型的例子。

注意 - 以下的延迟时间为了演示做了简化;现实情况可能有所不同

情景 1 - MIDI 延迟

Use_Case_1__MIDI_-_Audio_.png

在这个情景中,用户从按下 MIDI 控制器的琴键到听到声音为止感受到延迟。

  • 信号从键盘输出到电脑输入需要 1 毫秒
  • 当 MIDI 信号进入电脑,DAW 需要 1 毫秒 进行内部处理(转换为音频)。
  • 产生的音频需要 1 毫秒 传输至音频接口并最终由扬声器回放。

因为信号传输的路线是固定的,所以每个部分没法同时处理,那么最终用户感受到的延迟即为 3 毫秒。

情景 2 - 音频延迟

Use_Case_2__Audio_-_Audio_.png

在这个情景中,用户从对着麦克风说话到听到声音输出为止感受到延迟。

  • 信号从麦克风传输到音频接口需要 0 毫秒因为这个过程几乎是瞬间的)。
  • 音频接口需要 1 毫秒 将模拟信号转换为数字信号,然后传输至计算机。
  • 信号进入电脑后,DAW 需要 1 毫秒 进行内部处理。
  • 产生的音频需要 1 毫秒 从 DAW 传输至音频接口并最终由扬声器回放。

因为信号传输的路线是固定的,所以每个部分没法同时处理,那么最终用户感受到的延迟即为 3 毫秒。

Live 如何适应延迟

Live 将系统中各个部件的延迟汇总,计算出全局延迟,以智能调整各个轨道的延迟量,达成同步播放。

延迟补偿启用后,补偿数值会根据当前最高的延迟而定,这样 Live 才能够调整其他信号的延迟量以达成同步播放。 因此,最后总轨播放的音频会和无延迟的效果相同。 (禁用延迟补偿后,全局延迟将会被忽略,因此每条信号路径都会拥有各自独立的延迟量。)

例如,Live Set 中有两条轨道...

Use_Case_3__Internal_Processing_.png

“音频轨道 1”包含了多个装置,合计延迟 120 毫秒,“MIDI 轨道 1”合计延迟 80 毫秒。 当延迟补偿启用后,两个轨道都会拥有 120 毫秒的延迟,这样拥有最高延迟的轨道也能和别的轨道同步播放。

不过,“MIDI 轨道 1”包含了软件乐器。 你需要将监听模式设置为 In ,或 Auto 模式并启用预备录制,来演奏和录制乐器。 但由于该轨道的延迟补偿到了 120 毫秒(为了和其他轨道同步),在演奏的时候拖沓感十分严重。

减少监听延迟功能启用后,当前监听的轨道会忽视整体延迟。 所以监听轨道 2 时,仅仅会受到轨道内装置的影响,即 80 毫秒。 这样子用户就可以在高延迟的工程中,进行低延迟录制,同时保证了其他轨道还是由全局延迟保持着统一播放。

调整你的系统以达到精确录音

在 Live 录制新音频时,通常来说可以把轨道的监听模式设置为 “Off”(不通过 Live 进行监听),而是直接监听。

这样操作会有一点挑战性,因为录制的结果和其他轨道一起听会有比较明显的延迟。 为了弥补延迟,Live 会自动根据音频接口报告的延迟,自动调整录音结果的位置。 理想情况下,录制结果会和录制期间的效果相同。

但是,某些音频接口不能准确的报告延迟,所以可以使用 Live 的驱动程序错误补偿功能进一步调整准确的延迟量。 Live 自带了一个课程,其中包含测量所用的 set。 测量驱动程序错误补偿数值需要一根音频线,并且声卡至少拥有一个输入和输出接口。 课程可在 Live 的帮助页中找到。 (帮助 → 帮助页 → 音频 I/O → 课程第 18 页,点击其中【驱动程序错误补偿】课程链接。

注意:驱动程序错误补偿功能会对录制文件位置产生影响,但是不影响实时延迟