上采样原始音频从22050到48000赫兹

C++ Upsampling raw audio from 22050 to 48000 Hz

本文关键字:48000 赫兹 22050 采样 原始 音频      更新时间:2023-10-16

我有原始音频数据的形式

vector<short> m_shorts;

音频数据为22050 kHz单声道。

有没有人知道我怎么能(没有任何第三方库)快速转换短矢量到48000赫兹单声道?

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

谢谢你的帮助

如果您想将采样频率从22050Hz加倍到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;
}

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

我不确定"would sounds better"