7

我有一段代码可以为我提供来自麦克风的音频的 getMaxAmplitude()。它有效,但价值肯定很奇怪。我需要将其转换为分贝。我怎样才能?我找到了这个公式:double db = 20 * Math.log10(recorder.getMaxAmplitude() / 2700.0); 但我不知道它是否正确。谢谢。

4

1 回答 1

1

公式是正确的,但我不知道 2700.0,因为:假设这种情况:我们有一个 16 位深度的声音。这意味着我们将有 2^16(“2 的 16 次方”)不同的幅度值可供我们使用,即 65,536 步。由于步数分为正值和负值(我们之前的波峰和波谷),这意味着它分为 32,767 个正值(加零)和 32,768 个负值。然后:

db = 20 * log10(peaks/ 32767);

“2700.0”表示信号的最大幅度值,但我不知道位深度。问候。

于 2014-07-30T10:41:21.913 回答