簡體   English   中英

Pygame.mixer.sound的聲音持續時間不夠准確

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM