PyGame中的声音音量变小
我在用Ubuntu 10.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>
>>>
3 个回答
2
虽然我在调整频率方面没什么好运气,但在调用mixer.init()时,把size设置为8,buffer设置为2048对我来说是有效的。
3
我首先想到的是,这听起来像是采样频率的问题。每当混音器启动时,它的默认设置是:
pygame.mixer.init(frequency=22050, size=-16, channels=2, buffer=4096): return None
这里的frequency=22050是采样频率,如果这个频率和你的声音文件的采样频率不一样,就可能会出现问题(简单来说,就是声音播放的速度会变快或变慢)。
不过,pygame.mixer.Sound的文档上写着:
将进行有限的重采样,以帮助样本与混音器的初始化参数匹配。
这说明这种问题应该会自动解决……
但我敢打赌,这还是个采样频率的问题,可以通过将混音器对象的采样频率改成你的声音文件的采样频率,或者自己对声音文件进行重采样来解决。
希望这能帮到你!
2
我之前也遇到过类似的声音问题。我用一个叫WavePad Sound Editor的软件打开了我的声音文件,然后把它重新保存成了.wav格式,并把采样率设置为22050赫兹,这样就解决了我的问题。