上采样 PCM 音频:从 6 kHz 到 8 kHz

信息处理 声音的 爪哇
2022-02-09 06:36:34

将音频有效载荷(PCM 16bit)从 6 kHz 转换为 8 kHz 的直接方法是什么?我知道这是一个插值问题。

我担心线性插值会引入太多噪音。如果是这样,什么是更好的插值?我正在研究Lanczos 重采样,但我看到它仅用于图像缩放,不确定它是否值得用于音频。

我正在使用 Java。我找到了JSSRC 库,但我更喜欢更轻量级的东西。此外,我不确定这对于低频音频(恰好是从 ADPCM 解码)是否真的必要。

顺便说一句,我对创建具有 6 kHz 频率标头的 WAV 不感兴趣,我真的想重新采样。

2个回答

使用加窗 Sinc 插值内核是进行这种采样率更改的一种非常常见的方法。具有预先计算的系数的多相表允许通过一组简单的交错卷积来完成这种有理插值。您可以通过选择 Sinc 函数上窗口的宽度和形状来改变重新采样的质量。

无需在两个操作阶段进行上采样和下采样。

如果处理成本不是问题,您可以使用以下算法将数据从 6 khz 转换为 8 khz 的采样率。

1- 将信号 x[n] 扩展 8,产生 xe[n](在 x[n] 的每个样本后插入 7 个零)
2- 设计一个增益为 8 且截止频率为 pi 的低通滤波器 hlpf[n] /8
3- 使用此低通滤波器处理扩展信号 = xef[n]
4- 通过选择每 6 个样本将滤波器的输出压缩 6:y[n]=xef[6n]
(注意:您也可以使用4:3 上采样和下采样,带有新的过滤器,需要更少的处理成本)

低通滤波器必须足够锐利以确保适当的抗混叠。如果这对于简单的速率转换来说负担过重,请尝试高阶多项式重采样。然而,这也可能代价高昂。