我有
形式的原始音频数据vector<short> m_shorts;
音频数据为22050 kHz单声道。
有没有人知道我怎么能(没有任何第三方库)快速将短矢量转换为48000 Hz单声道?
我知道它不会改善声音。这仅用于将音频数据传递到效果(在采样率较高时听起来更好)。
感谢您的帮助。
答案 0 :(得分:3)
如果您想将采样频率从22050Hz
加倍到44100Hz
(这是22050的两倍),您可以执行一些linear interpolation:
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;
}
但我不是音频或信号处理专家。可能有更聪明的方法......(也许是Fourier transform然后是反傅立叶)。
我不确定“听起来会更好”。