从振幅计算分贝值 - Android 媒体录制器

5

如何从最大振幅计算分贝,我编写了一款Android应用程序以在定期间隔获取最大振幅,我需要以分贝的形式向用户显示输出。

2个回答

11

分贝是一个相对单位,它表示你的信号功率与某个参考功率之间的关系。

如果你在处理幅度,那么公式为:

power_db = 20 * log10(amp / amp_ref);

(参见http://en.wikipedia.org/wiki/Decibel#Field_quantities)。

还要注意的是,最大振幅通常不是响度(甚至不是功率)的很好指标。更典型的做法是测量信号的有效功率RMS 功率,然后将其转换为 dB。


3
这个公式中的amp_ref是什么意思? - Sharjeel
2
@Sharj:你的参考振幅。分贝是一个相对单位,而不是绝对单位。它们表示相对于某个参考电平的比率。选择参考电平取决于你自己。 - Oliver Charlesworth
1
如果单位是振幅,则乘数为20。如果单位是功率,则乘数为10。 - user207421
1
@Sharj:参考电平的一个例子是消费电子中使用的0.447V的峰值信号幅度,请参见https://en.wikipedia.org/wiki/Line_level。因此,-6dB的降低相当于信号幅度减小2倍。 - Alexander
@Alexander:我正在尝试通过给移动MediaPlayer音量或振幅来生成分贝的音调,这是否可能? - rashmi sm
这里我正在计算db =(int)(20 * Math.log(((double)maxAmplitude)/ 32767d)) - Sumit

7

普通手机麦克风没有进行绝对响度校准的功能,因此如果没有同时使用声音仪器来进行初始校准,就不可能测量绝对响度。正如Oli所提到的,您可能能够计算相对于原始响度的变化,但我想您希望复制一个真实的声级计。


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