我正在尝试将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,但这没有给我想要的结果,听起来很糟糕。
我在这里使用错了吗?或者,如果这不是使用它的方式,我应该怎么用这个公式呢?
问候,摩根
最佳答案
这可能是因为线性插值并不是您真正想要的。如果您只是将采样率提高一倍,它可能会工作得很好,但是如果使用非整数因素,如果您获得良好的结果,我会感到惊讶。
我建议尝试使用高阶多项式插值法,或者在频率空间中进行一些操作(第一个比第二个要容易)。
编辑:从评论我还注意到您的总和计算已关闭:
double sum = sum1 + (sum2-sum1) * (mOffset-(int)mOffset);
是你想要的。