Android:如何将getMaxAmplitude转换为db?

Zak*_*Zak 5 android amplitude decibel

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

Ant*_*nio 1

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

db = 20 * log10(peaks/ 32767);
Run Code Online (Sandbox Code Playgroud)

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