3

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

我目前的做法是:

  1. 取一大块信号
  2. 使用 0.5 tukey 窗口对信号进行窗口化
  3. 获取自相关系数
  4. 使用自相关系数计算 LPC 系数
  5. 使用具有 LPC 系数的标准 FIR 滤波器生成预测信号
  6. 测量原始信号和预测信号之间的误差
  7. 转到第 1 步并继续使用不同的过滤器顺序重复...
  8. 根据最低错误选择最佳顺序

是否可以通过查看流程第 4 步产生的错误来估计最佳过滤器顺序?如果可能,我想从第 4 步到第 8 步的捷径。

4

1 回答 1

1

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

要查看的另一个实现是libflake,它选择n-1的反射系数 > .10的最高阶n 。这似乎与此处描述的方法(PDF)有关,该方法在n+1n+2的反射系数 < .15时选择最低阶n 。两者都在寻找反射系数爆炸的点,但查看上述 PDF 中的图 1,看起来像 Flake 那样从上方进行搜索更有意义。只是另一种启发式方法,但可能很有趣。

于 2014-10-31T03:54:02.653 回答