Python PyGame中的声音缩短

Python PyGame中的声音缩短,python,audio,pygame,Python,Audio,Pygame,我正在使用Ubuntu10.4并学习PyGame,学习教程“猛击黑猩猩并赢得$$” 我制作了两个“.wav”文件,但当我试着播放它们时,会听到一种奇怪的声音,就像砰的一声,非常短 我没有收到任何错误消息。为什么这不能像预期的那样工作 >>> import pygame >>> pygame.init() (6, 0) >>> def load_sound(name): class NoneSound(object):

我正在使用Ubuntu10.4并学习PyGame,学习教程“猛击黑猩猩并赢得$$”

我制作了两个“.wav”文件,但当我试着播放它们时,会听到一种奇怪的声音,就像砰的一声,非常短

我没有收到任何错误消息。为什么这不能像预期的那样工作

>>> import pygame
>>> pygame.init()
(6, 0)
>>> def load_sound(name):
    class NoneSound(object):
        def play(self): pass
    if not pygame.mixer:
        return NoneSound()
    fullname = os.path.join('data', name)
    try:
        sound = pygame.mixer.Sound(fullname)
    except pygame.error, message:
        print 'Cannot load sound:', name
        raise SystemExit, message
    return sound

>>> whiff_sound = load_sound('whiff.wav')
>>> whiff_sound.play()
<Channel object at 0xb772f1c0>
>>> 
>>导入pygame
>>>pygame.init()
(6, 0)
>>>def加载_声音(名称):
类(对象):
def比赛(自我):传球
如果不是pygame.mixer:
返回非声音()
fullname=os.path.join('data',name)
尝试:
sound=pygame.mixer.sound(全名)
除了pygame.error,消息:
打印“无法加载声音:”,名称
升起系统退出,消息
回音
>>>whiff_sound=加载_sound('whiff.wav'))
>>>吹奏
>>> 

我的第一个想法是,这听起来像是采样频率的问题。无论何时启动混合器,其默认值为:

pygame.mixer.init(频率=22050, 大小=-16,通道=2,缓冲区=4096): 一无所获

如果采样频率=22050与声音的采样频率不同,这可能会导致问题(基本上会加快或减慢声音的播放)

但是,pygame.mixer.Sound的文档内容如下:

将执行有限的重新采样 帮助样本匹配 初始化混合器的参数

这表明这类问题应该自行解决

但我敢打赌,这是一个采样频率问题,可以通过将混音器对象的(采样)频率更改为声音文件的采样频率,或者自己重新采样声音文件以匹配混音器的值来解决


希望这有帮助

我的声音也有同样的问题,我在一个名为WavePad sound Editor的程序中打开了我的声音,将文件重新保存为.wav,并将采样率设置为22050 Hz,这就解决了我的问题

虽然我在调整频率方面运气不佳,但在调用mixer.init()时设置size=8和buffer=2048为我工作。

您是否使用独立的音频播放器播放.wav文件?如果包含代码,您更有可能获得帮助。@velociraptors好的,我正在编辑:)您应该上传并提供指向您遇到问题的其中一个wav的链接。另外,代码应该是一个普通的Python脚本,而不是交互式控制台的输出。我使用wave.getframerate来确定文件的采样频率,它返回22050,所以我想没关系……有什么想法吗?@Ant,对不起!我真的以为就是这样。。。你可以说我在音频方面做了很多工作,但我在pygame方面的经验有限。如果我有什么想法,我会给你回电话的:波克,谢谢你。。。你认为我需要重新安装pygame吗?我在ubuntu上的事实可能会改变什么?谢谢我说过我用过ubuntu吗?这会改变什么?不幸的是,这只适用于windows。我将尝试使用另一个,并将更新;)