播放方波SciPy和PyAudio

时间:2017-08-17 22:25:49

标签: python numpy scipy pyaudio

我试图播放使用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

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

1 个答案:

答案 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))无问题地工作。