Что ж, я ожидаю, что для устранения шума понадобится некоторая FIR-фильтрация (IIR, если вам действительно нужны циклы обработки, но FIR может дать лучшие результаты без неустойчивости). Вам придется поиграть с ним, чтобы получить желаемый эффект, но основная проблема заключается в сглаживании резких краев звука, созданного путем сэмплирования в 8-битных разрешениях. Я бы широко использовал центральную частоту звука и выполнял фильтр низких частот, а затем слушал, чтобы убедиться, что он не звучит "ровно" с выбранным фильтром.
Хотя это сложно, вы можете сделать только так много, младшие 8 бит потеряны, лучшее, что вы можете сделать, - это приблизительное значение.
Почти невозможно избавиться от шума, похожего на ваш сигнал. Если вы начнете настраивать материал в своей полосе частот, он уберет интересующий вас сигнал.
Для повышения частоты дискретизации, поскольку вы уже используете FFT, вы можете добавить нули к концу сигнала в частотной области и выполнить обратное FFT. Это полностью сохраняет информацию о частоте и фазе исходного сигнала, хотя она распространяет ту же энергию по большему количеству выборок. Если вы сначала сдвинете его на 8 бит, чтобы получить 16-битные сэмплы, это не станет большой проблемой. Но я обычно поднимаю его с помощью целочисленного коэффициента усиления перед выполнением преобразования.
Пит
Edit:
Комментарии становятся немного длиннее, поэтому я перейду к ответу.
Пики на выходе БПФ представляют собой пики гармоник, вызванные квантованием. Я склонен думать о них иначе, чем уровень шума. Вы можете помешать, как кто-то упомянул, устранить амплитуду пиков гармоник и сгладить минимальный уровень шума, но вы потеряете весь сигнал-шум на плоской части минимального уровня шума. Что касается БПФ. Когда вы интерполируете с использованием этого метода, он сохраняет ту же энергию и распространяется на большее количество выборок, что уменьшает амплитуду. Поэтому, прежде чем делать обратное, дайте вашему сигналу больше энергии, умножив на коэффициент усиления.
Являются ли сигналы простыми / сложными синусоидами или имеют жесткие края? то есть треугольник, прямоугольные волны и т. д. Я предполагаю, что они имеют непрерывность от цикла к циклу, это верно? Если это так, вы также можете увеличить разрешение БПФ до более точного определения частоты, увеличив число циклов сигнала, подаваемых на БПФ. Если вы можете точно определить используемые частоты, предполагая, что они несколько дискретны, вы сможете полностью воссоздать предполагаемый сигнал.
От 16-битного до 8-битного требования обрезания приведет к результатам, которые не соответствуют исходному источнику. (Таким образом, затрудняется поиск оптимального ответа.) Как правило, вы можете получить сигнал с фиксированной запятой, пытаясь «получить самое близкое соответствие», что означает округление до ближайшего числа (транкинг - операция на полу). Это наиболее вероятно, как они были изначально созданы. Добавление 0,5 (в данном случае 0,5 - 128) и последующее объединение результатов позволит вам получить более точные результаты. Если это не беспокоит, тогда все в порядке, но это определенно отрицательно скажется на точности.
ОБНОВЛЕНИЕ:
Зачем? Потому что цель выборки сигнала состоит в том, чтобы иметь возможность максимально близко воспроизвести сигнал. Если порог преобразования плохо установлен на выборке, все, что вы делаете, это ошибка на одной стороне сигнала, и она плохо распределена и центрирована около нуля. В таких системах вы обычно стараетесь максимально использовать доступный динамический диапазон, особенно если у вас низкое разрешение, такое как 8-разрядный АЦП.
Band ограниченные версии? Если бы они были отфильтрованы на разных частотах, я подозреваю, что это позволило вам воспроизводить один и тот же звук без искажений, когда вы слишком далеко отошли от другого варианта. Вроде как mipmapping в графике.
Я подозреваю, что это один и тот же сигнал с разными фильтрами наложения, это может быть полезно при воспроизведении оригинала. Это должен быть один и тот же базовый сигнал с применением разных сверток.