播放方波 SciPy 和 PyAudio

Play square wave SciPy and PyAudio

我正在尝试使用 PyAudio 播放使用 SciPy 生成的方波,但出现错误

TypeError: len() of unsized object

这有点奇怪,因为方波对象应该有一个大小,对吧?

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

崩溃发生在循环的第一次迭代,所以我想循环不是问题。

我得到了同样的错误。但是,您遗漏了一些信息,所以我假设这些是您的进口商品:

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)) 可以正常工作。