声音持续时间不够准确Pygame.mixer.sound文件

2024-03-29 12:36:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我想为我的神经科学研究产生一系列特定频率和持续时间的音频线索。在谷歌搜索之后,我发现一个名为Pygame的Python模块似乎能够完成这项工作。你知道吗

sound = pygame.sndarray.make_sound(sample_array)   #sample_array is a one-second sine wave I created
sound.play(maxtime = 100)   #play the sample_array for 100ms
pygame.time.delay(1000)     #pause for 1000ms

我在循环中多次运行这些代码。然而,在声音的长度上有一个很小但很明显的差别。我用手机录下了声音,并用Matlab分析了信号。有些脉冲持续时间长达180ms,有些短脉冲仅持续80ms,而理论上它们都应该持续100ms。你知道吗

这种变化对我的申请来说太大了。我能做些什么来改进它吗?或者,如果有人能确认这种精度超出了Pygame的能力,并建议使用另一个库,那就太好了。你知道吗


Tags: 模块sample声音forplay脉冲音频array
1条回答
网友
1楼 · 发布于 2024-03-29 12:36:39

这个问题似乎没有引起太多的注意:(

我把我的解决办法贴在这里,以防有人想知道。如果我使用sound.play(maxtime = 100),或者sound.play(-1),那么time.delay(100),声音的实际持续时间永远不会精确到100ms。我的解决方法是预先生成一个具有我所需长度的wav文件,然后播放这个wav文件。你知道吗

sound = pygame.mixer.Sound("foo.wav")
sound.play()

这不是最好的解决办法,但这对我很有效。你知道吗

相关问题 更多 >