重新采样音频信号

信息处理 低通滤波器 插值 重采样
2022-02-06 13:16:29

我正在尝试在我的应用程序中重新采样音频信号。它将介于 48kHz 和 96kHz 音频之间(上采样和下采样)。

查看Wikipedia page for resampling 我看到有两种方法:

  1. 抽取和上采样
  2. 多项式插值,例如拉格朗日

我的问题是:

  1. 采样维基百科页面状态

    使用替换零点的低通滤波器消除不连续性。

    在原始样本之间插入 L-1 个零点,然后将其通过低通滤波器如何神奇地替换零点成为插值样本?

  2. 如果我决定使用多项式插值(拉格朗日),在下采样时是否需要使用低通滤波器来去除高于奈奎斯特频率的高频信号?在上采样期间呢?为什么或者为什么不?

  3. 我在互联网上看到的所有重采样实现都是“IIR”过滤器。是否有任何“FIR”重采样滤波器?如果是这样,为什么一个看起来比另一个更受欢迎?

  4. 我的应用程序通过随机重采样音频“块”而不是连续流来工作(这就是为什么我想使用 FIR 重采样滤波器,因为没有连续性)。这是一个好主意还是应该更改我的应用程序以在连续的音频流上使用 IIR 重采样滤波器?

谢谢大家

2个回答

我更喜欢带限重建或 Sinc 插值(实际上是加窗 Sinc)以任意采样率创建一组新样本(比率不需要是有理分数)。

见:https ://ccrma.stanford.edu/~jos/pasp/Windowed_Sinc_Interpolation.html

这是我的伪代码实现:http ://www.nicholson.com/rhn/dsp.html#3

某些多项式插值器可以开始看起来像一个窗口 Sinc 插值内核(但我目前找不到参考。有人吗?)

对于许多比率,加窗 Sinc 插值器可以实现为多相 FIR 滤波器。如果该比率在分数中包含非常小的数字,则使用上下采样(或反之亦然)的 IIR 滤波器可能比同等质量的多相 FIR 需要更少的 MAC(在过去,典型的计算机可以不像当今大多数智能手机那样实时计算每个音频样本的数十个超越函数和数百个 MAC)。

分块工作的一个问题是处理边缘效应(滤波器启动和尾部瞬变),这可能需要某种重叠添加/保存方法来掩盖。