c++ - 将音频从 44100 上采样到 96000 Hz 和线性插值

标签 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但这并没有给我想要的结果,这听起来很糟糕。

我在这里用错了吗?或者如果这不是使用它的方式,我应该如何处理这个公式??

问候,摩根

最佳答案

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

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

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

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

就是你想要的。

关于c++ - 将音频从 44100 上采样到 96000 Hz 和线性插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19822575/

相关文章:

c++ - 为什么属性不能在密封的引用类中公开

c++ - 我可以在不使用 "new"(和隐式指针)的情况下创建在 C++ 堆上分配的对象吗?

c++ - 在 C++ 代码中出现歧义错误

c++ - 通过隐式转换为字符串流式传输对象时重载解析失败

ios - 在 iOS 上向 map 添加音频

r - 插值时间序列

javascript - 关于 d3.interpolate 对象的困惑

audio - 使用 Sox/FFMPEG 使声音高到听不见或无法察觉

c# - 在后台播放提示音

python - 如何对颜色进行线性插值?