【问题标题】:Play square wave SciPy and PyAudio播放方波 SciPy 和 PyAudio
【发布时间】:2018-01-26 12:00:39
【问题描述】:

我正在尝试通过 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

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

【问题讨论】:

  • 你能发布更多代码吗?

标签: python numpy scipy pyaudio


【解决方案1】:

我得到同样的错误。但是,您省略了一些信息,所以我假设这些是您的导入:

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)) 工作没有问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-28
    相关资源
    最近更新 更多