信号处理中数字增益的局限性

在信号处理领域,增益分为数字增益和模拟增益,数字增益用于操作离散的数字化的采样值,模拟增益直接操作连续的模拟的信号波形。对于目前大多数高端音响,都是采用模拟增益调整音量的,原因就在于数字增益有一些局限性。

数字30, 003在16bit DAC中是这么表达的:

0111010100110011 = 30,003

对数字增益来说,调低音量是直接减少这个数字:比如调低-10db,

而若20log(x)=-10,则x=0.3162,则降低10db就是把原音量值乘以0.3162。

于是,结果就是30003*0.3162=9488

0010010100010000 = 9,488

但是。。注意,其实不是应该是这样的吗?

30,003 * 0.3162 = 9487.7817

这个四舍五入造成的误差,虽然很小,但确实存在。

如果我们想更大幅度的降低音量,比如-35db,那么

扫描二维码关注公众号,回复: 614939 查看本文章

-35db是0.0177828 ,最终得到结果:

0000001000010110 = 534

但实际上精确的结果是

30,003 * 0.3162 = 533.5372

这样的误差就是866PPM(parts per million),略有点大了。

所以,这样的误差,看上去不起眼,但是音量越低,就越难以忽视。

由此得到结论:数字增益无法处理分数会产生精度误差。

那么,怎么处理这个问题呢?

如果我们用32位定点小数表示一个16位的采样的话,30,003在32 bit DAC里是这么表示的:

0111010100110011.0000000000000000 = 30,003

当-35db音量时:

-35db is 0.0177828,因此结果是:

0000001000010110.1000100110000100 =533.5372

所以拓宽处理通路可以很有效得降低精度的丧失。

目前音频处理领域很多采用32位float采样来进行信号处理,其实原理是一样的。

猜你喜欢

转载自blog.csdn.net/dp323/article/details/80157710
今日推荐