Numpy 基于Raspi的python实时频谱分析仪
我正在尝试使用插入raspi的USB麦克风获取实时音频的fft图。当通过fft图检测到特定频率时,我希望能够激活LED。到目前为止,我一直试图只绘制一个现场声波,但我遇到了麻烦。我看了这个视频: 我曾尝试将区块大小更改为更大的值和更低的值,但没有成功。由于某种原因,我得到了-9981错误,但打印错误需要很长时间。不显示任何绘图。我甚至试过超频我的覆盆子圆周率,看看是否会工作,但它仍然不工作 我想知道是否有人在他们的Pi上尝试过类似的东西,这是否可能,或者我是否必须使用pyaudio以外的其他软件包 以下是我的python代码:Numpy 基于Raspi的python实时频谱分析仪,numpy,matplotlib,raspberry-pi,pyaudio,Numpy,Matplotlib,Raspberry Pi,Pyaudio,我正在尝试使用插入raspi的USB麦克风获取实时音频的fft图。当通过fft图检测到特定频率时,我希望能够激活LED。到目前为止,我一直试图只绘制一个现场声波,但我遇到了麻烦。我看了这个视频: 我曾尝试将区块大小更改为更大的值和更低的值,但没有成功。由于某种原因,我得到了-9981错误,但打印错误需要很长时间。不显示任何绘图。我甚至试过超频我的覆盆子圆周率,看看是否会工作,但它仍然不工作 我想知道是否有人在他们的Pi上尝试过类似的东西,这是否可能,或者我是否必须使用pyaudio以外的其他软件
import pyaudio
import struct
import numpy as np
import matplotlib.pyplot as plt
CHUNK = 100000
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
p = pyaudio.PyAudio()
stream = p.open(
format = FORMAT,
channels = CHANNELS,
rate = RATE,
input = True,
output = True,
frames_per_buffer = CHUNK,
start = True
)
fig, ax = plt.subplots()
x = np.arange(0, 2 * CHUNK, 2)
line, = ax.plot(x, np.random.rand(CHUNK))
ax.set_ylim(0, 255)
ax.set_xlim(0, CHUNK)
while True:
data = stream.read(CHUNK)
data_int = np.array(struct.unpack(str(CHUNK*2) + 'B', data), dtype='b')[::2] + 127
line.set_ydata(data_int)
fig.canvas.draw()
fig.canvas.flush_events()
要显示添加:plt.show(block=False)
在
ax.set\u xlim(0,块)
但是,使用rpi,您必须将usb声卡配置为默认卡在Mac上使用python 2.7.11运行此操作时,我会遇到相同的错误。值得一提的是,如果我执行以下操作:(1)设置
CHUNK=1024
,(2)在调用p.open()
时使用output=False
,以及(3)删除所有matplotlib代码,程序运行时不会出现错误。不过,我该如何显示它呢?此外,错误仍然会出现我没有RPi,因此我无法提供更多帮助。这就是为什么我只是评论,而不是回答。我不知道你的方法有什么问题,但作为一种替代方法,你可以看看我的例子:和。