如何增加或减少以浮点数 (float) 表示的音频信号的音量。
只是乘法吗?
float volume_control(float signal, float gain) {
return signal*gain;
}
你怎么能通过让我们说分贝来控制这个功能:
volume_control(x, 28) //应该增加 28 DB。
如何增加或减少以浮点数 (float) 表示的音频信号的音量。
只是乘法吗?
float volume_control(float signal, float gain) {
return signal*gain;
}
你怎么能通过让我们说分贝来控制这个功能:
volume_control(x, 28) //应该增加 28 DB。
是的,只是相乘。如果您输出它,请确保根据您的约定将输出限制在 [0, 1] 或 [-1, 1] 中。
以分贝为单位,使用:
return signal * pow( 10.0f, db * 0.05f );
请参阅有关分贝的wiki 。
是的,增益只是乘以一个因子。增益 1.0 不会改变音量 (0 dB),0.5 会降低 2 倍 (-6 dB),2.0 会增加 2 倍 (+6 dB)。
要将 dB 增益转换为可应用于样本值的合适因子:
double gain_factor = pow(10.0, gain_dB / 20.0);
以浮点数 (float) 表示的音频信号的音量
您要做的第一件事是找出浮动的实际含义。它可以是一个以 db 为单位测量的音量控制,它可以是一个样本,它是在特定时间发送到扬声器的电量,它可能是一个样本,它是扬声器在特定时间点的位置。
如果是声波在特定时间点的“幅度”,那么上面的计算是准确的。但是声音被表达为浮动的事实并不能告诉您浮动的含义。