Windows — C ++ Повышение частоты дискретизации звука от 22050 до 48000 Гц

У меня есть необработанные аудио данные в виде

vector<short> m_shorts;

Аудиоданные 22050 кГц моно.

Кто-нибудь знает, как я могу (без какой-либо сторонней библиотеки) быстро преобразовать короткий вектор в моно 48000 Гц?

Я знаю, что это не улучшит звук. Это только для передачи аудиоданных на эффект (который звучит лучше при более высокой частоте дискретизации).

Спасибо вам за помощь.

2

Решение

Если вы хотите удвоить частоту дискретизации от 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;
}

Но я не эксперт по обработке звука или сигналов. Там могут быть более умные способы … (возможно, преобразование Фурье затем обратный Фурье).

И я не уверен, что «звучит лучше».

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]