以下代码:
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的打印输出,表明在96000kHz采样率下96000个样本的指定持续时间在某个时间点某处翻了两番。知道我在这里缺少什么吗?
答案 0 :(得分:4)
进入make_sound的数据不是16位整数,(因为你的pre_init()表明它们应该是)。在调用make_sound()之前尝试...
a = a.astype(numpy.int16)
您可能还想确保使用生成随机数的方法,使其落入16位整数范围内。数组中的值应介于-32768到32767之间(这些边界代表最大体积)。