播放方波 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))
可以正常工作。
我正在尝试使用 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))
可以正常工作。