PyAudio - Windows 10上的延迟变化

时间:2017-04-04 09:29:54

标签: python audio pyaudio portaudio

我正在使用PyAudio和PyAudio网站上的一个例子:

{{1}}

我计算了延迟(每秒): latency graph

有谁知道这些高峰来自哪里?

1 个答案:

答案 0 :(得分:0)

Windows,Linux或Mac等主要操作系统是非实时的。这意味着操作系统可以优先考虑其他应用程序CPU时间而不是音频采样程序。这使程序等待CPU选择其程序,从声卡中获取样本。

我有三种方法可以解决这个问题。

  • 禁用不必要的服务
  • 使用声卡缓冲
  • 切换到实时操作系统(Linux上的ALSA几乎就在那里)

您系统中最大的瓶颈之一就是您的云端硬盘活动。这通常是由Windows Update,病毒扫描程序/实时保护,Windows遥测和Windows索引服务(Superfetch)引起的。将Internet连接设置为Metered One,以便Windows Update不会自动更新。确保在防病毒/防恶意软件程序上禁用实时扫描,并在设置中禁用Windows Defender。 Windows有一个名为Windows Telemetry的“Corprate-Ware”服务,它与Microsoft共享您的使用信息,您可以继续在服务中禁用它。现在你真的不想禁用Windows索引服务,但是如果你的机器比典型的5200rpm HDD慢,我建议你在完全相同的服务窗口中禁用它。

有些声卡中有硬件缓冲区,有些则没有,这完全取决于。如果您知道您的系统具有硬件缓冲区,则会大大减少丢弃的样本量。如果要使用声卡硬件缓冲区,则必须自己进行研究。

最后,只需切换到较低延迟的操作系统,例如Linux。它没有像Windows那样在后台计算垃圾。尝试使用带有python的Lubuntu和ALSA音频驱动程序。它应该超出你的需要。