Numpy 基于Raspi的python实时频谱分析仪

Numpy 基于Raspi的python实时频谱分析仪,numpy,matplotlib,raspberry-pi,pyaudio,Numpy,Matplotlib,Raspberry Pi,Pyaudio,我正在尝试使用插入raspi的USB麦克风获取实时音频的fft图。当通过fft图检测到特定频率时,我希望能够激活LED。到目前为止,我一直试图只绘制一个现场声波,但我遇到了麻烦。我看了这个视频: 我曾尝试将区块大小更改为更大的值和更低的值,但没有成功。由于某种原因,我得到了-9981错误,但打印错误需要很长时间。不显示任何绘图。我甚至试过超频我的覆盆子圆周率,看看是否会工作,但它仍然不工作 我想知道是否有人在他们的Pi上尝试过类似的东西,这是否可能,或者我是否必须使用pyaudio以外的其他软件

我正在尝试使用插入raspi的USB麦克风获取实时音频的fft图。当通过fft图检测到特定频率时,我希望能够激活LED。到目前为止,我一直试图只绘制一个现场声波,但我遇到了麻烦。我看了这个视频:

我曾尝试将区块大小更改为更大的值和更低的值,但没有成功。由于某种原因,我得到了-9981错误,但打印错误需要很长时间。不显示任何绘图。我甚至试过超频我的覆盆子圆周率,看看是否会工作,但它仍然不工作

我想知道是否有人在他们的Pi上尝试过类似的东西,这是否可能,或者我是否必须使用pyaudio以外的其他软件包

以下是我的python代码:

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,因此我无法提供更多帮助。这就是为什么我只是评论,而不是回答。我不知道你的方法有什么问题,但作为一种替代方法,你可以看看我的例子:和。