什么是最快的Python声音模块?

时间:2015-09-06 19:05:55

标签: python opencv audio

我在视频设置中使用opencv(逐帧),我有一小部分需要播放音频文件,如最后的铃声,它可以是任何格式。

我目前正在使用pygame,但播放声音时程序稍微滞后。鉴于我试图尽可能快地执行1帧,这种延迟很麻烦。

import pygame
sound=pygame.mixer.Sound('beep.wav')
sound.play()

什么是可以播放声音文件的最快模块? 最好是我可以移植到Windows计算机上的东西。

3 个答案:

答案 0 :(得分:1)

如果你在需要声音的时候运行上面的代码,那么你就不会感到意外了。在包含其余导入的文件顶部,使用

from pygame.mixer import Sound

所以你只导入你需要的东西,而不是整个pygame模块。然后,在需要声音之前,运行

sound = Sound("beep.wav")

所以它准备好了。然后,当你需要播放它时,只需运行

sound.play()

并且应该有最小的延迟。

答案 1 :(得分:0)

Pygame可能是音频的最佳选择。在the documentation for the mixer module中,您可以看到以下注释:

  

注意:为了减少迟钝的声音,请使用较小的缓冲区大小。默认设置为减少某些计算机上发出沙哑声音的几率。您可以通过调用pygame.mixer.pre_init()在pygame.mixer.init()初始化混音器模块或pygame.init()之前调用混音器初始化参数来更改默认缓冲区。初始化所有导入的pygame模块都会被调用。例如:pygame.mixer.pre_init(44100,-16,2,1024)在pygame 1.8中,默认大小从1024更改为3072.

我有一个使用Pygame声音的应用程序,我遇到了你所看到的同一个问题。我将缓冲区大小更改为512,使用mixer初始化mixer.init(buffer=512)

答案 2 :(得分:0)

我没有比较延迟,但您可以尝试一些基于PortAudio的内容,例如python-sounddevice

在那里,您可以使用blocksizelatency选项,以便尽可能减少系统的延迟。

在Windows上,您还应该确保使用实际上具有低延迟的后端(我认为您应该尝试WDM / KS,WASAPI或ASIO)。