torchaudio.functional.lfilter¶
- torchaudio.functional.lfilter(waveform: Tensor, a_coeffs: Tensor, b_coeffs: Tensor, clamp: bool = True, batching: bool = True) Tensor [源代码]¶
通过评估差分方程执行 IIR 滤波器,使用了由 Yu et al. [Yu and Fazekas, 2023] 和 Forgione et al. [Forgione and Piga, 2021] 分别开发的、可微分的实现。
a_coeffs
的梯度是基于 Yu et al. [Yu et al., 2024] 的更快速算法计算的。注意
为避免数值问题,优先使用较低的滤波器阶数。使用双精度也可以最大程度地减少数值精度误差。
- 参数
waveform (Tensor) – 音频波形,维度为 (..., time)。必须标准化到 -1 到 1。
a_coeffs (Tensor) – 差分方程的分母系数,维度为 1D,形状为 (num_order + 1),或 2D,形状为 (num_filters, num_order + 1)。低延迟系数在前,例如
[a0, a1, a2, ...]
。必须与 b_coeffs 大小相同(如有必要,用 0 填充)。b_coeffs (Tensor) – 差分方程的分子系数,维度为 1D,形状为 (num_order + 1),或 2D,形状为 (num_filters, num_order + 1)。低延迟系数在前,例如
[b0, b1, b2, ...]
。必须与 a_coeffs 大小相同(如有必要,用 0 填充)。clamp (bool, optional) – 如果为
True
,则将输出信号限制在 [-1, 1] 范围内(默认:True
)。batching (bool, optional) – 仅当系数为 2D 时有效。如果为
True
,则 waveform 至少应为 2D,并且从最后一个开始的第二个轴的大小应等于num_filters
。输出可以表示为output[..., i, :] = lfilter(waveform[..., i, :], a_coeffs[i], b_coeffs[i], clamp=clamp, batching=False)
。(默认:True
)。
- 返回
波形维度为 (..., num_filters, time)(如果
a_coeffs
和b_coeffs
为 2D Tensor)或 (..., time)(否则)。- 返回类型
张量