首先,那里似乎很少有低级音频编程教程,所以如果有人知道一些好的资源,我将非常感激。现在进入手头的主题!
我正在将 WASAPI 用于我正在尝试开发的音频引擎,并且在将读取的音频文件数据重新格式化为音频设备准备接收的格式时遇到了困难。具体来说,我想知道如何将读取的音频文件的采样率和位深度即时转换为设备的请求格式。我看到了一个使用线性插值的例子,但在其他地方读到这样的过滤器引入了太多的伪影,例如混叠,所以我再次想知道在实时应用程序中重新格式化音频数据的实用算法是什么。
首先,那里似乎很少有低级音频编程教程,所以如果有人知道一些好的资源,我将非常感激。现在进入手头的主题!
我正在将 WASAPI 用于我正在尝试开发的音频引擎,并且在将读取的音频文件数据重新格式化为音频设备准备接收的格式时遇到了困难。具体来说,我想知道如何将读取的音频文件的采样率和位深度即时转换为设备的请求格式。我看到了一个使用线性插值的例子,但在其他地方读到这样的过滤器引入了太多的伪影,例如混叠,所以我再次想知道在实时应用程序中重新格式化音频数据的实用算法是什么。
Sinc 插值不会将混叠伪影引入采样前最初被适当带宽限制的数据。(但需要稍作修改,因为 Sinc 或 Dirichlet 核的持续时间是无限的。)
关于重建工作原理以及如何进行插值的一个规范参考在这里:https ://ccrma.stanford.edu/~jos/resample/
我在这里有一个基本的简单实现:http: //www.nicholson.com/rhn/dsp.html#3
另一种常见的方法是低通滤波整数比上采样,然后是低通滤波整数比下采样,采用适当的两个比率。另一种常用方法是生成一个多相 FIR 滤波器组(具有多个窗口的 Sinc 相位(或其他优化的 FIR 滤波器)插值内核。另一种常用方法是使用每个 Sinc 内核驼峰的多项式插值器,从而产生 Farrow 滤波器组.
您需要携带足够多的算术中间值位,以使您的量化本底噪声低于您的规格。