2

次のコード:

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 サンプルの期間が途中で何らかの形で 4 倍になったことを示唆しています。ここで何が欠けているか分かりますか?

4

1 に答える 1

4

make_soundに入るデータは16ビット整数ではありません(pre_init()が示唆しているように)。make_sound()を呼び出す前に、...を試してください。

a = a.astype(numpy.int16)

また、16ビット整数の範囲に入る乱数を生成する方法を使用することを確認することもできます。配列の値は、-32768〜32767である必要があります(これらの境界は最大ボリュームを表します)。

于 2012-05-21T18:50:47.953 に答える