Повышение частоты звука от 44100 до 96000 Гц и линейная интерполяция

Я пытаюсь увеличить частоту 44100 Гц до 96000 Гц, и я попробовал это.

sum1 = mPastWavBuffer[(int)mOffset];
sum2 = mPastWavBuffer[(int)mOffset+1];
double sum = (sum1 + (sum2-sum1)) * (mOffset-(int)mOffset);

mOffset представляет собой двойное значение и содержит шаговый коэффициент, увеличиваемый для перемещения по файлу сэмплов 44100 Гц и его 96000 Гц. Эта линейная интерполяция была взята из Wiki Линейная интерполяция из двух известных точек Но это не дает мне желаемого результата, это звучит ужасно.

Я использую это неправильно здесь или что я должен делать с этой формулой, если это не способ ее использовать?

С уважением, Морган

1

Решение

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

Я бы предложил либо попробовать полиномиальную интерполяцию высшего порядка, либо сделать что-то в частотном пространстве (первое будет легче, чем второе).

РЕДАКТИРОВАТЬ: Из комментариев я также заметил, что ваш расчет суммы отключен:

double sum = sum1 + (sum2-sum1) * (mOffset-(int)mOffset);

это то, что вы хотите.

3

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

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

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