![为什么在 Windows 和 Nvidia 驱动程序更新后使用 USB 声卡时突然出现严重延迟?](https://linux22.com/image/1635069/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%9C%A8%20Windows%20%E5%92%8C%20Nvidia%20%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E6%9B%B4%E6%96%B0%E5%90%8E%E4%BD%BF%E7%94%A8%20USB%20%E5%A3%B0%E5%8D%A1%E6%97%B6%E7%AA%81%E7%84%B6%E5%87%BA%E7%8E%B0%E4%B8%A5%E9%87%8D%E5%BB%B6%E8%BF%9F%EF%BC%9F.png)
大约两周前,我的 USB 声卡开始出现严重延迟。我不知道它为什么会出现。当声卡在音频流输入/输出 (ASIO) 模式下使用时也会发生这种情况,因此这比 WDM 音频现代更严重。大约两周前,Windows 更新了,我安装了最新的 Nvidia 驱动程序并添加了一个新显示器。
我尝试重新安装所有设备的各种驱动程序,而我所能做的似乎只是降低设备开始滞后的速度。
几分钟后(1-10 分钟),音频开始延迟。噼啪声和爆音逐渐加剧,持续约 30 秒至 1 分钟,然后声音开始起作用,但延迟约 1-2 秒。除了延迟之外,一切正常,ASIO 中也会发生这种情况。这使得音频混音毫无用处。多年来,我使用声卡从未遇到过这个问题。
如果我以某种方式更改与显卡相关的大多数设置(有时不更改)(某些设置与 Nvidia 或 Windows 相关),那么它将暂时解决问题。此外,似乎有时在几个小时不使用声音后它可以自行修复并且不会出现延迟,但使用几分钟后就会出现延迟。
不管怎样,我使用这个系统已经 4 年了,没有出现任何问题。由于 WMD 和 ASIO 都存在延迟问题,因此这几乎证明了这是一个比一些表面修复更深层次的问题。
通常,它与延迟问题的工作方式完全相同。如果将延迟问题设置得太低,并且计算机上的负载过大,它就会发出噼啪声和爆裂声。它的行为与此类似,但似乎会逐渐恶化(好像 CPU 的负载越来越大,但这里 CPU 的负载可能接近 0)。但随后,奇迹般地,一切都开始正常工作,但延迟时间要长得多。
就好像 Windows 添加了某种自适应延迟算法,试图找到最佳延迟,但结果却一团糟。它一开始的延迟很低,然后认为必须增加延迟,于是就这么做了,然后将其设置为最大值,比如 1 秒。
这似乎只发生在 USB ASIO 声卡上,而不是内部 Realtek。但 WMD 和 ASIO 会发生这种情况。这比设置更严重,因为当这种情况开始发生时,我没有更改任何设置,除了我提到的完全不相关的设置。
当它开始滞后时,就好像我设置了一个非常大的缓冲区大小。我必须更改一些音频设置,我猜这会重置正在发生的任何问题,才能让它正常工作,但这只会持续一分钟左右。
我没有其他办法,只能尝试重新安装 Windows 并检查它(我做不到也不想这样做)。要么是硬件出现故障(例如时钟变得不稳定,无法以正确的采样率同步,因此逐渐不同步),要么是某些驱动程序或设置出现问题导致问题。
同样的问题发生在任何声音配置(16 位 41.1k、24 位 48k)上,尽管失真的精确程度可能会发生变化。我确实更换了声卡插入的 USB 端口,它似乎工作得更好,工作时间更长。这让我认为这可能是 USB 端口的问题。不确定这是否是硬件设置;BIOS 中的某些内容,例如超频等……但我没有更改任何东西。
更新:我使用了另一个 USB 端口并将其插入前置端口,这似乎增加了延迟时间……但延迟会持续几分钟,直到音频完全延迟。我会尝试按照这些思路进行诊断,如果我似乎找不到任何有意义的东西,我会将其放在另一台计算机上,看看是否是设备的问题。
此外,我弄乱了 2 个看似不相关的 BIOS 设置,到目前为止,据我所知,它运行了 50 分钟,没有出现滞后现象(我离开了那个时间)。我仍然认为问题存在,但至少它可能是可控的,也许有一个真正的解决办法。我确实听到了这里和那里的一些砰砰声。我想知道这是否与 CPU 本身或导致计时问题的相关设置有关?
更新 2:我将设备连接到另一台计算机,但无法重现该问题。所以要么是 Windows 的问题,要么是我的计算机本身的问题。我将在另一个分区上安装 Windows 并进行检查。当然,如果问题出在 Windows 上,那么这些都无法帮助确定问题,而这很可能是 Windows 的问题。
更新 3:大约一个月后,我不再遇到这些问题。我不知道我做了什么来解决这个问题。在它开始工作的同时,我稍微摆弄了一下电缆之类的东西(没什么大不了的)。我能想到的只是电缆或连接可能短路或断开,但大多数时候都能正常工作。
更新 4:因此我重新启动了,因为我的电脑已经开了几个星期,但问题又出现了;/ 我最终在这段时间内安装了一些 USB 驱动程序和其他东西(并且不必重新启动),所以谁知道呢;/
答案1
ASIO 不容小觑。尽管 ASIO 以延迟极小而著称,但你可以将缓冲区设置得非常低,但由于误解了工作原理而错误配置此设置可能会导致非常严重的问题。
首先,您需要了解一些事情。
使用 ASIO 时,声卡将以低级方式与 CPU 交互,以使延迟尽可能小。延迟设置得越低,CPU 的任务就越多。
如果 CPU 无法处理,ASIO 驱动程序运行的核心达到 100%,您的音频将开始发出噼啪声。
话虽如此,您的声卡是 USB 驱动的,因此这又增加了一层复杂性。例如,如果您的电源管理将 USB 设备设置为较低的电源状态,则其性能会下降,这可能意味着会发生相同的问题。
因此,您应该检查以下几条指南,它们应该可以解决问题。
将缓冲区(延迟)设置为不低于必要值。通常,10-20ms 就足以满足您的要求。只有使用功能强大的 PC 和集成声卡时,才应将延迟设置为更低,而且只有在绝对必要时才应这样做,因为开销通常不值得性能提升。
如果是笔记本电脑,则应连接到电源插座,而不是使用电池。
电源管理设置应设为高性能,以确保 USB 不会在节能设置下运行,从而导致性能不佳。
也就是说,您应该确保音频不会出现噼啪声,因为您正在播放一首带有大量 VST 效果和乐器的歌曲,并且您的 CPU 会因为您认为您的 PC 速度很快而达到最大值,但实际上它很吃力。请记住,如果您运行的 DAW 没有针对多线程进行优化,则所有 vst 都将在同一个核心上运行,很快就会使该核心达到最大值。您的歌曲对 CPU 的占用越大,随着时间的推移情况就会变得越糟,因为歌曲通常会累积。所以……它可能实际上不是您的 ASIO,而只是低估了您正在做的事情以及它对 CPU 的占用程度。