【问题标题】:Sound duration isn't accurate enough with Pygame.mixer.soundPygame.mixer.sound 的声音持续时间不够准确
【发布时间】:2016-07-08 21:50:14
【问题描述】:

我想为我的神经科学研究生成一系列特定频率和持续时间的音频提示。经过一番谷歌搜索,我发现一个名为 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 的能力,并且可能会建议使用另一个库,那也很棒。

【问题讨论】:

    标签: python audio pygame


    【解决方案1】:

    看起来这个问题并没有引起太多关注:(

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

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

    这不是最好的解决方法,但这对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-28
      • 2010-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多