我在視頻設置(逐幀)中使用opencv,並且我有一小部分需要播放音頻文件,如最後的鈴聲,它可以是任何格式。什麼是最快的Python聲音模塊?
我目前正在使用pygame,但播放聲音時程序滯後一點。鑑於我試圖儘可能快地執行1幀,這個延遲很麻煩。
import pygame
sound=pygame.mixer.Sound('beep.wav')
sound.play()
什麼是最快的模塊可以播放聲音文件? 最好是我可以移植到Windows電腦的東西。
我在視頻設置(逐幀)中使用opencv,並且我有一小部分需要播放音頻文件,如最後的鈴聲,它可以是任何格式。什麼是最快的Python聲音模塊?
我目前正在使用pygame,但播放聲音時程序滯後一點。鑑於我試圖儘可能快地執行1幀,這個延遲很麻煩。
import pygame
sound=pygame.mixer.Sound('beep.wav')
sound.play()
什麼是最快的模塊可以播放聲音文件? 最好是我可以移植到Windows電腦的東西。
Pygame可能是您音頻的最佳選擇。在the documentation for the mixer
module中,您可以看到以下說明:
注意:不要減小聲音的滯後性,請使用較小的緩衝區大小。默認設置是爲了減少某些計算機上出現磨擦聲的機會。您可以通過調用pygame.mixer.pre_init()預設mixer init參數來更改默認緩衝區,方法是在pygame.mixer.init()初始化混頻器模塊或pygame.init()初始化所有導入的pygame模塊被調用。例如:pygame.mixer.pre_init(44100,-16,2,1024)在pygame 1.8中,默認大小從1024更改爲3072。
我有一個應用程序,使用Pygame的聲音,我遇到了同樣的問題,你看到。我將緩衝區大小更改爲512,用mixer.init(buffer=512)
初始化mixer
。
如果您在需要聲音時運行上面的代碼,那麼您並不奇怪,您會落後。在與進口的,其餘的文件的頂部,使用
from pygame.mixer import Sound
所以你只需要導入你需要什麼,而不是整個pygame
模塊。然後,你之前也需要的聲音,跑
sound = Sound("beep.wav")
所以它已經準備好去。然後,當你需要播放時,只需運行
sound.play()
並且應該有最小的延遲。
我假設OP已經這樣做了,但肯定有可能他們不是。 – TigerhawkT3
是的,我已經這樣做了,但是爲具有類似問題的人添加內容很有幫助 – azazelspeaks
我沒有比較這些延遲,但您可以嘗試一些基於PortAudio的內容,例如, python-sounddevice。
在那裏你可以玩blocksize
和latency
選項,以獲得系統的最小可能延遲。在Windows上,您還應該確保使用實際上能夠延遲較低的後端(我認爲您應該嘗試使用WDM/KS,WASAPI或ASIO)。
正如說明所述,某些計算機需要較大的緩衝區或有問題。在我測試過我的應用程序的少數計算機上,我看到較小的緩衝區沒有音頻質量問題 - 只有較少的延遲。我想知道Pygame開發者多久經歷一次這種發癢的聲音,這使得他們增加了默認緩衝區,並且引入了Pygame音頻_的延遲。也許它應該顛倒過來,有一個小的默認緩衝區和一個關於在必要時增加它的註釋。 – TigerhawkT3