Python 如何避免Mac上的音频初始0.5s延迟?

Python 如何避免Mac上的音频初始0.5s延迟?,python,macos,audio,Python,Macos,Audio,在Mac笔记本电脑(OS 10.9.5)上,当播放python程序的声音时,在声音播放之前,我将获得0.5秒的初始启动延迟。如果我在最后一分钟左右一直在播放声音,就不会有这种延迟。我在网上看到过对这类事情的引用,但没有太多的见解(例如,)。我寻找了一种苹果API方法来禁用它(就像屏幕保护程序一样),但没有看到任何明显的效果。这个问题可能是笔记本电脑特有的,例如节能功能。它不仅发生在电池电源上,而且在插入电源时也会发生 问:从OSX上的python来看,如何告诉Mac在第一次播放声音时尽其所能避免

在Mac笔记本电脑(OS 10.9.5)上,当播放python程序的声音时,在声音播放之前,我将获得0.5秒的初始启动延迟。如果我在最后一分钟左右一直在播放声音,就不会有这种延迟。我在网上看到过对这类事情的引用,但没有太多的见解(例如,)。我寻找了一种苹果API方法来禁用它(就像屏幕保护程序一样),但没有看到任何明显的效果。这个问题可能是笔记本电脑特有的,例如节能功能。它不仅发生在电池电源上,而且在插入电源时也会发生

问:从OSX上的python来看,如何告诉Mac在第一次播放声音时尽其所能避免0.5秒的延迟


约束条件:可以通过子进程调用一些命令,如
pmset
,除非它需要root(sudo)priv;i、 例如,只能接受正常的用户空间命令。也不可接受:编写一个小线程来每隔30秒左右播放一个简短的~silent声音是很容易的,但这会增加程序的复杂性并使用资源——必须有更好的方法来做到这一点

延迟是否可能是因为试图播放一个巨大的声音文件?媒体文件在此请求渲染之前是否已加载到内存中


尝试将音频媒体加载到缓冲区,然后根据播放信号直接从缓冲区执行渲染

好主意,但这绝对不是问题所在。是的,媒体文件已预加载到内存中,或者已在内存中生成数据,这没有任何区别。这只是你第一次播放声音时才会发生,而不是随后(如果最近有声音)。它的声音很小,只有1秒长,并没有什么大不了的。可能python正在缓慢加载音频库,直到它们被调用。。。虽然除非系统在渲染音频时由于可用RAM不足而进行抖动/交换,否则在初始渲染之后出现后续延迟似乎很奇怪。。。你可以通过观察在一台有大量免费ram的机器上是否出现同样的同情来挑逗这个问题。我不这么认为。。。如果我播放一个声音,然后让python进程等待60秒,然后播放第二个声音,第二个声音开始时有0.5秒的延迟。但是如果中间的间隔是30秒,就没有这种延迟。假设python在前一种情况下(60秒)没有卸载音频库,但在后一种情况下(30秒)没有卸载音频库。是的,~4G内存可用,同样的行为。如果可行,从头开始编写加载文件然后渲染音频所需的最小代码。。。可能在这些步骤之外有一些人为的影响。。。奇怪的事情发生了。。。然后将这个最小代码发布到网上,这样我们就可以更仔细地了解执行最小代码是否会继续带来时间延迟。如果您可以包含一个最小示例,以便有人可以尝试重新处理您的问题,这将非常有用。好主意,@jaket,最小示例非常好。我用pyaudio模拟了一个,没有得到0.5s的延迟,这非常有趣。我很难提供一个简单的例子,那就是在一个叫做PsychoPy的桌面应用程序中播放声音,它使用pyo来播放声音。我还看到了使用pysoundcard/pysoundfile而不是pyo时的延迟,也是0.5s。我希望这是一个可以用mac系统设置来修复的东西,但这似乎不太可能。