5

如果我在 iPhone(即真实)数据上获取音频数据,请执行 FFT,然后获取幅度(Re^2 + Im^2)。

这些从 >0 到一些大数字不等,所以我确实10log(n)以 dB 为单位。

这使我的输出为负(对于 < 1 的输入)为正。

但是我看到的示例(以及在 Sonic Visualiser 中绘制频谱)在以 dB 为单位测量时总是具有正频谱。

那我错过了什么?!

更广泛地说,据我所知,分贝是一个比率,所以在这种情况下,当将 FFT 幅度转换为 dB 时,它们与什么比率?

4

2 回答 2

4

简单的答案是,在大多数情况下,您可以将任意数字添加到 dB 值,以使这些值全部为正,或全部为负,或您喜欢的任何值。使用未经校准的麦克风,例如在 iPhone 上,无论如何这都是有意义的,因为您所知道的只是相对值。

对于更高级的技术方法,使用校准的麦克风,您可以使用 dB (SPL) 作为合理的标准来引用所有内容,但这很麻烦,而且无论如何在您的用例中没有意义。

理由:
移动任意数量的主要原因是日志没有报告测量单位。例如,即使您知道输入幅度为 0.1 帕斯卡,也完全可以说这是 100 毫帕斯卡,此时您将采用 100 而不是 0.1 的对数(因此对数值为 2 或 -1)。两者都是完全有效的,选择完全是任意的。与标准参考值(如 dB SPL)进行比较时,请注意它是以比率 log(P/P ref ) 的形式完成的,从而消除了更改单位的影响。

于 2013-02-14T19:52:07.350 回答
0

由于 FFT 是线性算子,因此 FFT 的输出比例与输入到 FFT 的数据比例有关。iPhone 上 FFT 的输入比例取决于麦克风、音频滤波器的增益,可能还有 AGC 和 DAC 参考。由于后者都没有记录并且可能会有所不同(根据麦克风的位置、设备型号、可能取决于音频会话配置的输入增益等),除非您执行某种校准,否则您不会知道该比率一个已知的参考。

于 2013-02-15T03:53:56.190 回答