gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 15:39:00 26 4
gpt4 key购买 nike

我有来自 ffmpeg 的样本,通常是 16 位样本(短类型),我已经使用带 dbGain 的 iir 带通滤波器,如所述 here ,过滤后我有时会遇到短类型溢出,当计算的样本值从 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 采样范围时的精度损失

关于c - 均衡后如何避免音频样本16位削波?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13947498/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com