【发布时间】:2019-03-12 23:27:09
【问题描述】:
我正在构建一个像鼓机一样播放节奏的 Python 脚本。我使用 PyGame 来处理音频。但是,我在调用播放和听到实际音频之间遇到了显着/不可接受的延迟。
我将以下代码粘贴到交互式解释器中,然后反复执行最后一行:
import pygame
pygame.mixer.init(frequency=22050, size=-16, channels=2, buffer=4096)
s = pygame.mixer.Sound('snare.wav')
s.play(loops=0, maxtime=0, fade_ms=0)
从按下回车键到听到音频之间的时间,我的最佳猜测是 400 毫秒左右,而且确实很明显且无法接受。延迟与我单击 VLC 中的播放按钮并等待音频播放大致相同。
我在 Windows 和 Ubuntu 上都试过了,结果相同。我的电脑有点旧,Intel Core i3,2.53GHz,但我认为这应该不是问题。
对此我能做些什么?
循环中:
此代码演示了相同的延迟。
for i in range(10):
print i
s.play(loops=0, maxtime=0, fade_ms=0)
sleep(2)
【问题讨论】:
-
1) 可能是解释器本身的延迟?试试
raw_input();s.play(loops=0, maxtime=0, fade_ms=0),然后再按回车。 2) 军鼓是否从声音文件的最开头开始?如果您在 Audacity 中打开文件,从开始到实际声音之间有多少时间? -
1) 没有区别。 2) 实际声音确实在波形文件中立即开始。我也尝试过使用其他波形文件。
-
你能发一个声音文件的链接吗,我想用我的机器测试一下
-
这是去年的一个学校项目,我们甚至没有完成这个项目。我什至不记得哪个声音文件,所以我不能发送它,但我相信任何声音文件都是这样的!不,这不是因为文件开头有一个“空白”部分,我们确定了这一点。