Android:如何将getMaxAmplitude转换为分贝(db)?

7

我有一段代码,可以从麦克风获取音频的最大振幅(getMaxAmplitude()),它能够正常工作,但返回的值看起来很奇怪。我需要将其转换为分贝。如何实现呢?我找到了以下公式:double db = 20 * Math.log10(recorder.getMaxAmplitude() / 2700.0); 但我不确定是否正确。谢谢。


已解决:double db = 20 * Math.log(recorder.getMaxAmplitude() / 2700.0); - Zak
1个回答

1
公式是正确的,但我不知道2700.0是什么意思,因为: 假设这种情况: 我们有一个深度为16位的声音。这意味着我们将有2^16(“二的16次方”)个不同的振幅值可用,或者65,536个步骤。由于步骤数分为正和负值(我们之前的峰顶和波谷),这意味着它被分为32,767个正(加零)和32,768个负值。 然后:
db = 20 * log10(peaks/ 32767);

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接