1

我现在试图解决这个问题几个星期,但似乎我无法解决这个问题。任务非常简单:我从微型麦克风获取电压信号,最后我想知道它的 dB(A) 有多大。有很多问题我什至不知道从哪里开始。让我们从我的想法开始。

  1. 我将伏特信号转换为帕斯卡 [Pa] 的信号。
  2. 在该信号上使用 FFT,这样我就知道我在处理哪些频率。
  3. 然后我应该以某种方式实现 A 加权,但由于我在 [Pa] 中处理我的值,我不能只是乘以或添加我的 A 加权。
  4. 使用 iFFT 并回到我的时间信号。
  5. 从 Pa 到 dB。
  6. 计算 RMS 并完成。(希望)

主要问题是A加权。我真的不明白如何在实时信号上实现它?而且由于 FFT 会导致复杂的值,我也对此感到有些困惑。

也许你明白了想法/问题/工作流程,并帮助我至少离目标更近了一点。

一点免责声明,我对声学世界是 100% 的新手,所以请确保解释它就像你会解释它的小孩:D 和我用 python 编程。

在此先感谢您的时间!

4

1 回答 1

0

您好 Christian Fichtelberg,欢迎来到 StackOveflow。我相信在 DSP StackExchange 中可以更轻松地回答您的问题,但我会尝试提供一些快速而肮脏的答案。

为了避免将信号带到频域,请在那里进行乘法(我敦促您注意时域中的卷积 - 您发出信号“驻留”的地方 - 相当于频域中的乘法。如果不熟悉这个请快速查看维基百科的卷积页面)您可以在时域中实现 A 加权滤波器并在那里执行某种卷积。

我不会详细介绍每种方法可能的优缺点(时域卷积与频域乘法)。您可以搜索 DSP SE 或查看一些关于 DSP 的教科书(例如Oppenheim 的 Digital Signal ProcessingProakis 和 Manolakis 的同等书籍)。

根据IEC 61672-1:2013,数字滤波器应从模拟滤波器“转换”(一个很好的方法是使用双线性变换)。建议的滤波器是一个非常“简单”的 IIR(无限脉冲响应)滤波器。

我将跳过这里的实现,因为它是由其他人提供的。请在 DSP SE 上找到一个MATLAB 实现、一个Python 实现(很可能是您正在寻找的应用程序)、一个相当“高级”的答案,其中包含一些关于在 DSP SE上为任意采样率设计滤波器的链接和信息。

最后,我想提一下,如果您设法为 A 加权滤波器的曲线创建一个(“足够平滑”)多项式近似,您可以执行频率响应和多项式的频域乘法以改变幅度仅频谱,然后执行 iFFT 以返回时域。这很可能会提供 A 加权信号的近似值。请注意,这不是进行过滤的正确方法,因此请谨慎对待(如果您决定尝试它),并且仅作为执行某些检查的快速解决方案。

于 2021-02-22T12:21:39.893 回答