音量用浮点数(float)和对数(logarithmic scale)表示各有特点和应用场景
浮点数:直接使用线性刻度表示音量,例如在0.0(最小音量)到1.0(最大音量)的范围内。
对数刻度:使用对数刻度表示音量,常用分贝(dB)表示。这是因为人耳对音量的感知是对数的
常见公式是:。其中 V0是当前音量,V1是参考音量。
对于人耳的感知来说,直接变化的浮点数音量在感知上可能不够线性。例如,从0.5到1.0的变化和从0.0到0.5的变化在人耳感知上不一样。从浮点数字来看数字增大了一倍,但不代表声音大小在感知上大了一倍,相比之下,分贝刻度更符合人耳对音量的感知。例如,增加10dB大约被认为是音量增加了一倍。
也就是说,增加音量:如果声音强度增加一倍,人耳感受到的响度并不会增加一倍,而是增加一个常数值(大约10dB)。
音量减半:同理,如果声音强度减小一半,人耳感受到的响度减少一个常数值(大约6dB)。
所以一般在编程和数字音频处理中直接用浮点数表示音量,更直观。音量运算的时候都是按照浮点数来运算
在专业音频工程中,使用dB更符合实际感知和标准,在电气指标测试中一般使用dB单位来描述
在数字音频中,0dB代表最大音量,0dB意味着不对数据进行任何的变换处理,对应的浮点音量即为1.0
假设有一个音量调节器,音量范围从0.0到1.0,对应的分贝范围是从-∞到0dB。
-
如果当前音量是0.5(浮点数),转换为dB: dB=20log10(0.5)≈−6.02dB
-
如果当前音量是-10dB,转换为浮点数: volume_float=≈0.316
在电声测量中通常以输入2V 为0db信号参考,那么可知-12db
衰减6个db,电压降一半,衰减12个db,那么2V信号降将为500mv信号