2012-05-21 25 views
2

以下代碼:爲什麼pygame.sndarray.make_sound看起來是聲音持續時間的四倍?

import pygame, numpy 
pygame.mixer.pre_init(frequency=96000,size=-16,channels=1) 
pygame.init() 
a = numpy.random.randn(96000) 
sound = pygame.sndarray.make_sound(a) 
print sound.get_length() 

產生一個打印輸出的4.0,這表明的96000個樣品在一個96000kHz採樣率指定的持續時間在某種程度上沿途某處四倍。任何想法我在這裏失蹤?

回答

4

進入make_sound的數據不是16位整數,(因爲你的pre_init()表明它們應該是)。調用make_sound()之前嘗試...

a = a.astype(numpy.int16) 

你可能想也確保你使用的生成隨機數的方法,使他們陷入的16位整數的範圍。數組中的值應該在-32768到32767之間(這些邊界代表最大音量)。