从44100到96000 Hz采样音频和线性插值

时间:2013-11-06 20:51:45

标签: c++ audio linear-interpolation sample-rate

我正在尝试将44100 Hz上采样到96000 Hz,我试过了。

sum1 = mPastWavBuffer[(int)mOffset];
sum2 = mPastWavBuffer[(int)mOffset+1];
double sum = (sum1 + (sum2-sum1)) * (mOffset-(int)mOffset);

mOffset是一个double值,包含递增的步长因子,以便在44100 Hz样本文件中移动并使其为96000 Hz。这个线性插值来自Wiki Linear Interpolation from two known points但是这并没有给我我想要的结果,听起来很糟糕。

如果这不是使用它的方法,我在这里使用它错了或我应该怎么做这个公式?

问候,摩根

1 个答案:

答案 0 :(得分:3)

这可能是因为线性插值并不是你想要的。如果你只是将采样率提高一倍,它可能会运行得相当好,但是如果你得到了很好的结果,我会感到很惊讶。

我建议尝试更高阶的多项式插值,或者在频率空间中做一些事情(第一个比第二个更容易)。

编辑:从评论中我还注意到你的总和计算已经关闭:

double sum = sum1 + (sum2-sum1) * (mOffset-(int)mOffset);

是你想要的。