我想创建一个产生声音的程序。但是,我在使用pyaudio时遇到麻烦。我相信输出的频率与我制作单个音符的频率不同。
尤其是我对python和pyaudio的了解还很远,所以我确实需要帮助。 我想要做的是将代码堆叠在一个轴上(不确定是否合适),然后将这个堆叠的数组写入流中。
#make the sine functions
sample1 = (np.sin(2*np.pi*np.arange(fs*length1)*f1/fs)).astype(np.float32)
plt.plot(sample1, label='sample1')
sample2 = (np.sin(2*np.pi*np.arange(fs*length1)*0.5*f1/fs)).astype(np.float32)
sample3 = (np.sin(2*np.pi*np.arange(fs*length1)*1324*f1/fs)).astype(np.float32)
print(sample1)
#stack them
chunk1 = np.stack([sample1, sample2, sample3], axis=1)
#send to pyaudio
stream = p.open(format=pyaudio.paFloat32, channels=1, rate=fs, output=True)
stream.write(chunk1.astype(np.float32).tostring())
stream.close()
p.terminate()
尽管这种方法(以某种方式)有效,但我并不十分高兴,因为声音似乎与只播放这种声音(频率不同)不同。