如何制作这个酷炫的音频频谱可视化器

信息处理 fft 声音的 可视化
2022-02-07 22:07:06

酷音频可视化

我想在物理Led_Bar_Panel(s)上制作/创建此频谱可视化。这是我认为我应该做的:

  1. 实时采样(采样频率= Fs KHz,仅语音)
  2. 做一个 FFT(据我所知,我们一次取 (2 ^ n ) 个样本。nFs之间是否存在数学关系?)
  3. 取平均幅度(例如,1-10 Hz 将构成 LED 的一个波段/条)幅度。
  4. 将幅度信息传递给 Arduino。
  5. Arduino 根据来自 PC 的传入数据控制条形灯。

这种方法对吗?

我想知道的另一件事是“Arduino 可以在 8Khz 采样时实时执行此 fft”吗?

请向我提供信息/建议。提前致谢!

1个回答

n 和 Fs 之间是否存在数学关系?)

n将决定您的频率分辨率。例如,如果fs=16kHz2n=8192,FFT 中的每个 bin 的宽度约为16000/81922赫兹。从您的图像来看,您想要的最小 FFT bin 宽度似乎是 10 Hz 宽。这意味着如果fs=16kHz,您可以使用低至2n=2048,但不会更小。

我想知道的另一件事是“Arduino 可以在 8Khz 采样时实时执行此 fft”吗?

Arduino板有很多种。这对于具有 32 位 ARM 处理器的最新主板是绝对可行的。在旧的 8 位基于 AVR 的 Arduino 板上,我发现的数据点是256 大小的 FFT 在 7ms 内运行因此,仍然可以进行一些切角,例如:

  • 按照您的建议将采样率降低到 8kHz,并在上限范围内少一些小节(或伪造数据 - 这里没有发生太多事情,这与之前的几小节无关......)
  • 减小 FFT 大小并在较低范围内减少一些条形
  • 降低进行分析的帧速率,并在必要时在帧之间使用一些插值。

我很确定我已经看到很多项目这样做了。如果您只需要几条,另一种方法是使用滤波器组。