如何增加或减少以浮点数(浮点数)表示的音频信号的音量。
这只是一个乘法吗?
float volume_control(float signal, float gain) {
return signal*gain;
}
你怎么能控制那个功能,让我们说分贝如下:
volume_control(x,28)//应该增加28个数据库。
答案 0 :(得分:2)
是的,增益只是乘以一个因素。增益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);
答案 1 :(得分:2)
是的,jsut倍增。如果输出它,请确保根据您的约定将输出钳位在[0,1]或[-1,1]中。
以分贝为单位,使用:
return signal * pow( 10.0f, db * 0.05f );
请参阅分贝上的wiki。
答案 2 :(得分:1)
音频信号的音量,以浮点数(浮点数)表示
你要做的第一件事是找出浮动实际意味着什么。它可以是以db为单位测量的音量控制,它可以是在特定时间发送给扬声器的电量的样本,它可以是在特定时间点扬声器位置的样本。
如果是特定时间点声波的“幅度”,则上述计算是准确的。但声音表示为浮动的事实并没有告诉你任何浮动意味着什么。