我试图播放使用SciPy和PyAudio生成的方波,但是我收到了错误
TypeError:未确定对象的len()
这有点奇怪,因为方波对象应该有一个大小,对吗?
RATE = 48000
p = pyaudio.PyAudio()
stream = p.open(format = pyaudio.paInt16,
channels = 2,
rate = RATE,
output = True)
# ... inside a loop
wav = signal.square(2*math.pi*FREQ*t)
wav = wav.astype(np.int16)
stream.write(wav) # crash here
崩溃发生在循环的第一次迭代中,所以我认为循环不是问题。
答案 0 :(得分:0)
我得到了同样的错误。但是,您省略了一些信息,因此我假设这些是您的导入:
import pyaudio
import math
import numpy as np
from scipy import signal
那个
FREQ = 440
看起来你正在迭代的变量是t
,它是一个标量。你可能有充分的理由这样做,但我不认为scipy.signal
是如何工作的。如果您改为使用向量t
:
t = np.linspace(0, 2)
然后signal.square(...)
和stream.write(wav.astype(np.int16))
无问题地工作。