对 PDM 中表示的音频进行 FFT

信息处理 fft 声音的 数字滤波器
2022-02-22 07:43:51

我有来自 Pynq-Z1 开发板上的 MEMS 麦克风的 PDM 数据输入。我的最终目标是对音频样本进行 FFT 并在某些 LED 上显示频率区间。

我正在努力理解将 PDM 信号转换为 FFT 可接受的输入究竟需要什么。我看过一些视频,通过应用低通 FIR 然后抽取采样率来解释将 PDM 转换为 PCM。

我的爱好项目需要这个吗?我可以在时间块 T 上平均 PDM 样本( 0 到 1 ),以便对当时的幅度有一个非常简单的概念,然后将这些样本馈送到 FFT 吗?

我需要多少才能处理我的 PDM?我在DSP领域很薄弱。

非常感谢任何帮助。

1个回答

在 PDM 麦克风中,sigma-delta 转换器将噪声推到 0-20kHz 频谱以上的频率区域。因此,如果您对直接来自 PDM 麦克风的信号进行 FFT,即直接的 0 和 1,并且只查看落在 0-20kHz 区域内的 bin,您将获得所需的数据。

您可以在此处看到,其中 16kHz 正弦波已转换为 PDM 信号:

sigma-delta 转换正弦波的频谱

绿色 20kHz 线左侧的本底噪声远低于 -70dB,但在其右侧迅速增加。

在上图中,PDM 数据速率为 768kHz。一个常见的 PDM 麦克风数据速率将更多地接近 3MHz。这样做的问题是您将对大量数据进行 FFT,并且您会丢弃大量未使用的数据。

移动平均滤波器确实会迅速减少进入 FFT 的数据样本数量。它会导致通带衰减太高而无法获得良好的音频质量,但对于 LED 显示屏来说应该完全没问题。

我在一系列博客文章中写了关于我自己的 PDM 麦克风学习的文章