Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 声音持续时间为';Pygame.mixer.sound不够精确_Python_Audio_Pygame - Fatal编程技术网

Python 声音持续时间为';Pygame.mixer.sound不够精确

Python 声音持续时间为';Pygame.mixer.sound不够精确,python,audio,pygame,Python,Audio,Pygame,我想为我的神经科学研究生成一系列特定频率和持续时间的音频线索。通过谷歌搜索,我发现一个名为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

我想为我的神经科学研究生成一系列特定频率和持续时间的音频线索。通过谷歌搜索,我发现一个名为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中分析了信号。有些脉冲持续时间长达180毫秒,有些短脉冲仅持续80毫秒,而理论上它们都应该持续100毫秒


这种变化对我的应用来说太大了。我能做些什么来改进它吗?或者,如果有人能够确认这种精度超出了Pygame的能力,并建议使用另一个库,这也将是非常好的

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

我在这里发布我的解决方法,以防有人想知道。如果我使用
sound.play(maxtime=100)
,或者
sound.play(-1)
,那么
time.delay(100)
,声音的实际持续时间永远不会精确到100毫秒。我的解决方法是事先生成一个长度正好符合我需要的wav文件,然后播放这个wav文件

sound = pygame.mixer.Sound("foo.wav")
sound.play()
这不是最好的解决办法,但这对我很有效