我有一段代码可以从麦克风中获取音频的getMaxAmplitude()。 它有效,但价值肯定很奇怪。 我需要将其转换为分贝。 我怎么能够? 我发现了这个公式:double db = 20 * Math.log10(recorder.getMaxAmplitude()/ 2700.0);但我不知道这是否正确。 感谢。
答案 0 :(得分:0)
公式是正确的,但2700.0我不知道,因为: 假设这种情况: 我们有16位深度的声音。这意味着我们可以使用2 ^ 16(" 2到16次幂")不同的振幅值,或65,536步。由于步数分为正值和负值(我们的波峰和波谷),这意味着它分为32,767个正(加零)和32,768个负值。 然后:
db = 20 * log10(peaks/ 32767);
" 2700.0" rappresents信号的最大振幅值,但我不知道位深度。 问候。