2010-12-01 2 views
3

Я использую Ubuntu 10.4 и изучаю PyGame, следуя учебнику «Избивать шимпанзе и выигрывать $$$».Звук, укороченный в 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> 
>>> 

Here is the wav i'm using. (сломанной ссылке)

+0

Вы играли в .wav-файлы с автономным аудиоплеером? – nmichaels 2010-12-01 22:25:31

+0

У вас больше шансов получить помощь, если вы включите свой код. – Velociraptors 2010-12-01 22:26:06

+0

@ nathon да, хорошо работает – Ant 2010-12-01 22:28:08

ответ

2

У меня была такая же проблема со звуком, я открыл звук в программе WavePad Sound Editor и повторно сохранил файл как .wav и установил частоту дискретизации до 22050 Гц, и это решило мою проблему.

3

Моя первая мысль была, что это звучит как проблема с частотой дискретизации. Всякий раз, когда смеситель инициируется ее значение по умолчанию:

pygame.mixer.init (частота = 22050, размера = -16, каналы = 2, буфер = 4096): возвращение Отсутствует

Если частота = 22050, являющаяся частотой дискретизации, отличается от частоты дискретизации вашего звука, это может вызвать проблемы (существенно ускоряя или замедляя воспроизведение звука).

Однако документация для pygame.mixer.Sound гласит:

Limited передискретизации будет выполнена , чтобы помочь образец соответствовать инициализировать аргументы для смесителя.

, который предлагает такого рода проблемы должен решать сам ...

Но я готов поспорить, что это проблема частоты дискретизации, которая может быть установлена ​​либо изменения (выборки) частоту объекта смесителя для частота дискретизации ваших звуковых файлов или передискретирование ваших звуковых файлов самостоятельно, чтобы они соответствовали значению микшера.

Надеюсь, это поможет!

2

Хотя мне не повезло с настройкой частоты, установка размера = 8 и буфера = 2048 при вызове mixer.init() работала для меня.