延迟的工作原理
- Live 版本:所有版本
- 操作系统:所有操作系统
请注意:以下内容仅供参考。 若需要更为详细的故障排查建议,请参考这篇文章 如何减少延迟。
什么是延迟
延迟指的是信号进入系统后,再从系统中输出所需经过的时间。 在数字音频工作站中,输入信号由音频接口起进行信号转换、传输至 DAW(或其它应用程序)、由 DAW 中的乐器/效果器进行处理、传输至音频接口进行信号转换并通过音频接口进行输出。在处理信号的过程中,一定的延迟是必须的。
延迟不可避免,但我们可以理解其中的原理!
是什么导致了延迟
在数字音频中,延迟主要由信号路径中的信号转换和音频缓冲区产生。
模拟到数字(AD) 信号转换器可以将输入的模拟音频信号转换为电脑能够处理的数字信号。 反之,数字到模拟(DA)信号转换器可以将数字信号转换为模拟信号,可发送扬声器或硬件音频效果器。 在大多数工作室中,这个任务由音频接口(声卡)处理。
音频缓冲区用于把一段区域的信号作为一个整体进行传输。 (较大的音频缓冲区需要更长时间来处理,因此会增加整体的延迟)。
延迟从何产生
- 音频接口
- 音频接口驱动
- 操作系统 (可能需要把其他应用程序发出的声音融合一并输出)
- 音频接口和 DAW 之间
- DAW 内部的信号处理(例如 监听的轨道 / 原生效果器 / 插件 / 其它。)
音频接口的延迟是如何计算的
为了使信号数据从一个位置传输到另一个位置,至少需要处理一个音频缓冲区。 因此,最小的延迟即一个音频缓冲区包含的采样时长,具体取决于采样率。
更精确来说,
缓冲区大小(采样的数量) ÷ 采样率(kHz)= 预测的延迟(ms)。
例如,缓冲区大小 256 采样 采样率 44.1 kHz,音频接口会在 5.8 毫秒内完成数据转换,再传输数据到 Live(256 采样÷ 44.1 kHz)。
您可能会发现在 Live 的偏好设置中,“整体延迟” 和上述计算的结果不符。 这是因为真实的延迟会受到许多因素的影响:
- 上述的计算公式仅适用于一级信号的转换。 但是,音频接口的 “总体延迟” 同时包含了输入和输出延迟。 最简单的估算方式是将理论的计算结果乘以两倍。
- 在数字信号处理(DSP)领域,预测的数值并不精确,因为还有许多额外的处理/转换计算过程可能会影响到具体的延迟。 相关的具体示例,请参考下文的 使用案例 部分。
- 某些音频接口报告的延迟数值并不准确。
影响延迟的 Live 设置
延迟补偿
参见下文。
减少监听延迟
参见下文。
缓冲区大小
如上文所述,音频是以划分为块状的采样数据来进行处理的。 大块的数据处理会导致明显的延迟,较小的数据块则会减少整体的延迟。 但是,较小的数据块加载/释放的频率也越快,这样才能维持稳定的音频回放,因此 CPU 和系统的整体负载也会越高。 如果 CPU 无法及时处理数据,丢失的数据块就会导致爆音或咔嗒声。
采样率
在数字录音中,音频由一系列的 “采样” 数据所表示。 这些数据由计算机迅速地合并在一起,形成可听的声音波形。 音频采样率决定了系统录制,生成并输出声音的频率。 (较高的采样率可以达到更低的整体延迟,但是对 CPU 的压力较大)。
轨道延迟
因为信号无法在产生前就进行处理,因此负数的延迟数值并不能将声音提前进行播放。 现实情况下,工程中的每一个轨道都会进行相应的延迟,以达到相同的效果。
任何一个轨道的输出都能进行正负向的延迟调整,可以用于补偿人为因素、声学条件、硬件设备等等现实环境造成的延迟(当然您也可以将其用于创造目的)。 但是,这些延迟会在实时监听某个轨道时反应出来。
图形处理设置
Live 的图形处理并没有延迟补偿,这是为了给音频计算留出足够的空间。 所以你可能会发现 Live 的图像和音频无法匹配,但在大多数情况下还是不容易察觉到的。
在 Max for Live 中进行编辑
Max for Live 装置会在 编辑状态下产生更多的延迟。
影响延迟的装置设置
请注意:除了下文中的第一段,其它几点同时适用于 Live 的原生装置和第三方插件。
相关阅读:如何查看 Live 装置或插件的延迟
插件延迟补偿
如果某个插件所需的计算量可以在一个音频缓冲区周期内完成,那么不会产生额外的延迟。 如果来不及计算,那么插件会向 DAW 报告所需的额外时间,DAW 会将所有其它轨道进行相应的调整,以保持相对同步进行回放。
某些插件所需的计算量巨大,因此会产生明显的延迟。 如果此时进行实时监听或者录音会十分艰难,因为一轨的高延迟就会导致整个工程的高延迟。
外部乐器 & 外部音频效果器
因为这些设备会从 Live 外部发送/接受音频,因此会自动添加 Live 偏好设置中的延迟量。 除此之外,调整 '硬件延迟(Hardware Latency)' 滑块也会增加整体延迟。
Lookahead(前视时间)
某些装置具有 “(前视)lookahead” 功能,会让输入信号延迟一点进入。 (比如 - Live 的Compressor 利用 Lookahead 功能延迟输入信号,提前进行处理,以达成实时处理无法实现的效果)。
频谱分析/处理
为了将输入的信号从时间概念转换为频谱概念进行显示和处理,需要较大的音频缓冲区。 因此,包含有频谱处理的装置会产生一定的延迟。
其他高级处理选项(过采样 / 卷积 / 等等)
某些装置会进行一些智能的处理,它们不仅分析单个采样内容,还需要一段时间对音频进行智能决策,因此需要非常大的音频缓冲区。 某些插件会特别明显,例如 iZotope 的 Ozone 系列, 它们为了实现智能处理会产生大量的延迟。(但这是必要的!)
其他产生延迟的因素
效能低/过时的音频接口驱动
在 Windows 机器上,ASIO 驱动程序的表现往往优于 MME/DirectX。
此外,由于操作系统的更新以及其它外部因素对 DAW 的影响,过时的驱动程序还会拖慢整体计算机的速度。 音频接口的厂商一般会对硬件的固件和驱动进行更新,以补偿操作系统更新带来的影响,也有可能单纯为了改善硬件的性能。
停用乐器 & 效果器
所有乐器和效果器左上角的黄色按钮能够暂时停用它们。 由于装置停用状态能够由用户随意切换(包括自动化),因此在停用设备时消除延迟可能会导致总体输出产生明显失真。 为了防止失真产生,装置延迟始终有效,无论是否停用。
用户案例
理解延迟会比较困难,因为实际表现和问题的根源可能差距很大。 以下是一些典型的例子。
请注意 - 以下的延迟时间为了演示做了简化;现实情况可能有所不同。1>
情景 1 - MIDI 延迟
在这个情景中,用户从按下 MIDI 控制器的琴键开始到听到声音为止感受到延迟。
- 信号从键盘输出到电脑输入需要 1 毫秒。
- 当 MIDI 信号进入电脑,DAW 需要 1 毫秒 进行内部处理(转换为音频)。
- 产生的音频需要 1 毫秒 传输至音频接口并最终由扬声器进行回放。
因为信号传输的路线是固定的,所以每个部分没法同时处理,那么最终用户感受到的延迟即为 3 毫秒。
情景 2 - 音频延迟
在这个情景中,用户从对着麦克风说话到直到听到声音输出为止感受到延迟。
- 信号从麦克风传输到音频接口需要 0 毫秒(因为这个过程几乎是瞬间的)。
- 音频接口需要 1 毫秒1> 将模拟信号转换为数字信号,然后传输至计算机。
- 信号进入电脑后,DAW 需要 1 毫秒 进行内部处理。
- 产生的音频需要 1 毫秒 从 DAW 传输至音频接口并最终由扬声器进行回放。
因为信号传输的路线是固定的,所以每个部分没法同时处理,那么最终用户感受到的延迟为 3 毫秒。
Live 如何适应延迟
Live 将系统中各个部件的延迟汇总,计算出全局延迟,以智能调整各个轨道的延迟量,达成同步播放。
当延迟补偿被启用后,补偿数值会根据当前最高的延迟而定,这样 Live 才能够调整其它信号的延迟量以达成同步播放。 因此,最后总输出播放的音频会和无延迟的效果相同。 (禁用延迟补偿后,全局延迟将会被忽略,因此每条信号路径都会拥有各自独立的延迟量。)
例如,Live Set 中有两条轨道...
“音频轨道 1” 中包含了多个装置,合计延迟为 120 毫秒,“MIDI 轨道 1” 合计延迟为 80 毫秒。 当延迟补偿启用后,两个轨道都会拥有 120 毫秒的延迟,这样拥有最高延迟的轨道也能与别的轨道同步进行播放。
不过,“MIDI 轨道 1”包含了软件乐器。 你需要将监听模式设置为 In ,或 Auto 模式并启用预备录制,来演奏和录制乐器。 但由于该轨道的延迟补偿到了 120 毫秒(为了和其他轨道同步),在演奏的时候拖沓感十分严重。
当减少监听延迟功能启用后,当前监听的轨道会忽视整体延迟。 所以监听轨道 2 时,仅仅会受到轨道内装置的影响,即 80 毫秒。 这样子用户就可以在高延迟的工程中,进行低延迟录制,同时保证了其他轨道还是由全局延迟保持着统一播放。
调整你的系统以达到精确录音
在 Live 录制新音频时,通常来说可以把轨道的监听模式设置为 “Off”(不通过 Live 进行监听),而是直接监听。
这样操作会有一点挑战性,因为录制的结果和其他轨道一起听会有比较明显的延迟。 为了弥补延迟,Live 会自动根据音频接口报告的延迟,自动调整录音结果的位置。 理想情况下,录制结果会和录制期间的效果相同。
但是,某些音频接口不能准确的报告延迟,所以可以使用 Live 的驱动程序错误补偿功能进一步调整准确的延迟量。 Live 自带了一个课程,其中包含测量所用的 set。 测量驱动程序错误补偿数值需要一根音频线,并且声卡至少拥有一个输入和输出接口。 课程可在 Live 的帮助页中找到。 (帮助 → 帮助页 → 音频 I/O → 课程第 18 页,点击其中【驱动程序错误补偿】课程链接。
注意:: 驱动程序错误补偿功能会对录制文件位置产生影响,但是不影响实时延迟。