iPhone - AVAudioPlayer - 转换分贝值转换成百分比(iPhone - A

2019-08-17 05:05发布

我想更新这是使用AudioQueue用于播放音频文件,现有的iPhone应用程序。 水平(peakPowerForChannel,averagePowerForChannel)是线性的形式0.0F至1.0F。

现在,我喜欢用简单的类AVAudioPlayer它工作得很好,唯一的问题是,现在是在分贝水平,不是线性从-120.0f为0.0f。

有没有人一公式将其转换回为0.0f和1.0F之间的线性值?

谢谢

汤姆

Answer 1:

几个例子苹果使用以下公式将分贝转换为线性范围(从0.0到1.0):

double percentage = pow (10, (0.05 * power));

其中, power是你的各种液位计的方法或功能,如AVAudioPlayer的一赠价值averagePowerForChannel:



Answer 2:

的线性和对数值变换后面数学:

1.线性到分贝(对数):

decibelValue = 20.0f * log10(linearValue)

注:日志基地10

假设在从[0(最小体积)至100(最大体积)],则decibelValue 的体积的一半 (50%)是百分比范围的形式的线性值

decibelValue = 20.0f * log10(50.0f/100.0f) = -6 dB

全卷:

decibelValue = 20.0f * log10(100.0f/100.0f) = 0 dB

完全静音:

decibelValue = 20.0f * log10(0/100.0f) = -infinity 

2.分贝(对数),以线性:

LinearValue = pow(10.0f, decibelValue/20.0f)


Answer 3:

苹果使用查找表他们SpeakHere从分贝转换为一个电平表显示的线性值的样本。

我模塑它们在小程序计算; 看到这里 。



文章来源: iPhone - AVAudioPlayer - convert decibel level into percent