1

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

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

mOffset 是一个双精度值,包含递增的步进因子以在 44100 Hz 样本文件中移动并使其变为 96000 Hz。这个线性插值取自两个已知点的 Wiki Linear Interpolation但这并没有给我想要的结果,这听起来很糟糕。

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

问候,摩根

4

1 回答 1

3

这可能是因为线性插值并不是您真正想要的。如果您只是将采样率加倍,它可能会工作得相当好,但是如果您得到好的结果,我会感到惊讶。

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

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

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

是你想要的。

于 2013-11-06T20:56:02.887 回答