[英]Sound duration isn't accurate enough with Pygame.mixer.sound
我想為神經科學研究提供一系列特定頻率和持續時間的音頻提示。 經過一番谷歌搜索后,我發現一個名為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)
,則聲音的實際持續時間永遠不會精確地為100ms。 我的解決方法是事先生成一個wav文件,該文件恰好具有我所需的長度,然后播放該wav文件。
sound = pygame.mixer.Sound("foo.wav")
sound.play()
這不是最好的解決方法,但這對我有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.