确定线性预测编码的最佳滤波器顺序

时间:2014-10-30 22:31:43

标签: audio compression signal-processing flac

我想知道是否有一种既定方法可以选择在执行线性预测编码时使用的最佳滤波器顺序(例如在FLAC等音频文件格式中使用的那种)。

我目前的做法是:

  1. 取一大块信号
  2. 使用0.5 tukey窗口显示信号
  3. 获取自相关系数
  4. 使用自相关系数计算LPC系数
  5. 使用具有LPC系数
  6. 的标准FIR滤波器生成预测信号
  7. 测量原始信号和预测信号之间的误差
  8. 转到步骤1并继续使用不同的过滤顺序重复 ...
  9. 根据最低错误选择最佳订单
  10. 是否可以通过查看从流程第4步创建的错误来估算最佳筛选顺序?如果可能的话,我想从第4步快捷到第8步。

1 个答案:

答案 0 :(得分:1)

既然你提到了FLAC,我就看看他们是如何做到的。看起来在计算LPC系数的过程中,他们估计所有订单的误差直到最大值。整体计算开始here,他们使用FLAC__lpc_compute_lp_coefficients来计算系数并估计误差。然后在FLAC__lpc_compute_best_order中使用它来决定使用什么系数(在非穷举的情况下)。

要查看的另一个实现是libflake,它选择具有 n-1 的反射系数&gt;的最高阶 n 。 0.10。这似乎与here (PDF)描述的方法相关,当 n + 1 n + 2 &#39时,它选择最低顺序 n ; s反射系数< 0.15。两者都在寻找反射系数爆炸的点,但是在前面提到的PDF中看图1看起来像是从上面进行搜索,因为Flake确实更有意义。只是另一种启发式但可能很有趣。