У меня есть необработанные аудио данные в виде
vector<short> m_shorts;
Аудиоданные 22050 кГц моно.
Кто-нибудь знает, как я могу (без какой-либо сторонней библиотеки) быстро преобразовать короткий вектор в моно 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-1; ix++) {
output[2*ix] = m_shorts[ix];
output[2*ix+1] = (m_shorts[ix] + m_shorts[ix+1])/2;
}
Но я не эксперт по обработке звука или сигналов. Там могут быть более умные способы … (возможно, преобразование Фурье затем обратный Фурье).
И я не уверен, что «звучит лучше».
Других решений пока нет …