2

我有以下形式的原始音频数据

vector<short> m_shorts;

音频数据为 22050 kHz 单声道。

有谁知道我如何(没有任何第三方库)快速将短向量转换为 48000 Hz 单声道?

我知道它不会改善声音。这仅用于将音频数据传递给效果器(更高的采样率听起来更好)。

感谢您的帮助。

4

1 回答 1

3

如果您想将采样频率从22050Hzto加倍44100Hz(这是 22050 的两倍),您可以进行一些线性插值

vector<short> m_shorts;
vector<short> outputs;
unsigned inplen = m_shorts.length();
output.resize(2*inplen+1);
for (unsigned ix = 0; ix < inplen; ix++) { // not sure of the bounds
  output[2*ix] = m_shorts[ix];
  output[2*ix+1] = (m_shorts[ix] + m_shorts[ix+1])/2;
}

但我不是音频或信号处理专家。可能有更聪明的方法......(也许是傅里叶变换然后是逆傅里叶)。

而且我不确定“听起来会更好”。

于 2013-05-05T07:30:12.600 回答