繁体   English   中英

如何避免均衡后的音频样本16位削波?

[英]How to avoid audio sample 16bit clipping after equalization?

我有来自FFMPEG的样品,非常常见的是16个的样本(短型),我已经使用与dbGain IIR带通滤波器作为所描述这里 ,过滤我有时得到了短型溢出和它的结果之后是一些噪音时计算出的样本值从32767 / -32767发出,是逃避音频pcm样本剪辑的任何方法。 可能存在任何方法吗?

我已经用谷歌搜索,但没有找到任何可行的例子?

更新

当我将传递函数的计算结果转换为整数并检查溢出时,仍然会出现噪声:

int result = A1 * ((int) Rx) + A2 * ((int) Rxx) + A3 * ((int) Rxxx)
                    - B1 * ((int) Ryy) - B2 * ((int) Ryyy);
if (result > 32767)
    result = 32767;
if (result < -32700)
    result = -32700;
y = (short) result;

16位PCM样本必须在[-32768 .. + 32767]范围内。 如果在输入信号上应用数学运算(在您的情况下为双二阶滤波器),则不能保证输出保持在该范围内,这是在您施加正增益的情况下不可避免的结果。

由于触碰范围边界是这种处理的自然副作用,因此您应该使用以下一种方法来解决此问题(列表不完整):

  • 确保您的输入信号足够安静和/或将值右移几位,以便为输出中的大值提供余量
  • 对输出信号使用更高的位,例如24位PCM
  • 使用浮点PCM输出信号以在PCM采样范围之外时精确损失

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM