我正在從事一項需要在程序中創建信號的項目,從頭開始。信號存儲在一個數組中,每個元素都是一個樣本。它應該以44.1 kHz播放。由於該項目的其他方面,我正在使用pygame來實現這一點。 Pygame有一個功能,允許從一個numpy數組創建一個Sound對象,並將其播放爲wav文件。初始化pygame.mixer時,我將頻率設置爲44100 Hz,但Sound對象正在播放大約10 kHz。pygame播放聲音很慢
這是pygame中的一個錯誤,還是還有其他需要完成的操作來完成以給定速率播放數組嗎?
def test_script(t):
bin_sig[0:8] = throttle(t)
bin_sig[8:28] = restofsignal()
bin_sig[28:32] = checksum(bin_sig)
print bin_sig
sig = create_audiosig(bin_sig)*60
pygame.mixer.init(44100,-16,1,2**16)
num_ary = numpy.array(sig)
plt.plot(num_ary)
plt.savefig('generated_signal.jpg')
if (sys.argv[1] == 'on'):
s = pygame.sndarray.make_sound(num_ary)
s.play()
plt.show()
信號
的返回的情節有以44.1KHz玩過長度6835. 60個脈衝,這應該採取9.3秒。但是,它需要37.2秒(11020 Hz)。
如果你需要看到更多的代碼,你可以找到它here