2012-09-21 71 views
4

我正在編寫一個應用程序來模擬火車聲音。我爲列車的每個速度獲得了非常短的(0.2s)音頻樣本,並且我需要能夠循環多達其中的20個(每個列車一個)同時沒有間隙。 音頻樣本的無縫更換(列車速度)也是必須具備的。 我一直在尋找可能的蟒蛇音頻解決方案,包括Python音頻庫,用於快速,無縫循環的很多短音軌

  • PyAudio
  • PyMedia
  • pyaudiere

,但我不知道哪一個最適合我的使用情況,所以我真的很欣賞任何提議和經驗!

PS:我已經嘗試過gstreamer但由於1.0版本還沒有,我不知道如何讓無縫播放與pygi一起工作,我認爲可能有更好的選擇。我也嘗試pygame,但它似乎只限於8個音頻通道?

+0

好的,對於那些對我如何繼續這個感興趣的人: –

+0

我現在實際上使用pygame,因爲它支持無縫播放(使用pygame.mixer.queue()),非常友好和直觀(我發現是的,可以有多於8個通道同時播放;))。如果你有更好的想法,我仍然開放,但它似乎工作到目前爲止。 –

回答

0

我使用PyAudio做了很多事情,對它很滿意。如果它能做到這一點,我不知道,但我認爲它可以。

一種解決方案是手動輸入聲音緩衝區並控制/設置所需的延遲時間。我已經做到了這一點,並且工作得很好。如果你有足夠的延遲,它將會起作用。

另一種類似於此的解決方案是管理自己的延遲。您可以將小型聲音文件手動排隊或混合到尺寸爲0.5-1秒。這將大大降低對「實時性」的要求,並允許您在「速度」之間做一些非常酷的轉換

我不知道您可以應對哪種延遲,但如果我們談論的是列車速度,我猜他們不會瞬間改變 - 因此500毫秒到幾秒的延遲很可能是可以接受的。