如何在C中对.wav文件进行下采样并应用带通滤波器?

时间:2015-03-11 15:53:30

标签: c audio wav

我需要使用44.1k的.wav文件并将其下采样到11.25k(将样本除以4)。

我还需要将带通滤波器应用到300 Hz - > 3,200 Hz到.wav文件。

我是音频编程的新手,我一直在努力研究如何专门处理这项任务,但每次搜索都指向了一个只为我转换的库或工具。这是我获得的新职位的培训练习(熟悉C编程和音频编程),所以我必须手动完成。

由于

2 个答案:

答案 0 :(得分:1)

  1. 将处理.wav文件细节的代码与处理音频样本的细节分开。网上有很多关于读写的文件.WAV文件,尤其是PCM样本。

  2. 一旦你的样本在内存中,下采样是微不足道的。你真的拿每个_n_th样本扔掉其余的。还有其他方法可以更好地保持保真度。例如,您可以先使用低通滤波器,然后重新采样滤波后的波形。可以使用最近样本的加权平均来实现低通滤波器。

  3. 带通滤波可以通过几种方式完成。最直接的是将样本从时域变换到频域,在频率空间中操纵信号,然后将其转换回来。用于此的变换称为傅里叶变换。在软件中执行此操作的最常用方法是使用称为快速傅立叶变换(FFT)的算法。它"快速"因为它消除了大量的冗余计算。

答案 1 :(得分:0)

了解如何实施数字滤波器可能是第一步。我建议查找FIR和IIR滤波器。

或者如果你很懒,可能会有几个你可以使用的第三方库。