Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Программирование звука > Передескритизация.


Автор: rodion 11.04.20, 15:40
Требуется провести передесктизацию сигнала в диапазон звуковых частот для воспроизведения. Исходная частота может произвольной, как ниже и выше.
Алгоритм в принципе известен.
При повышение частоты сигнала требуется КИХ фильтр. Но так как требуется большое подавление, большая полоса пропускания и крутизна то порядок такого фильтра получается очень большим, что меня настораживает. Подскажи пути решения данной проблемы.

Автор: Pavia 11.04.20, 17:01
1. Линейная или нелинейная интерполяция
2. Интерполяция сплайнами(Фильтрация сплайнами)
3. БИХ
4. Рекурсивный КИХ фильтр.(По этапное повышение частоты).

Автор: rodion 11.04.20, 17:36
1-5 я это всё знаю
1. Линейная или нелинейная интерполяция. Можно использовать только для сигналов с низкой частотой, иначе искажения слышно

Автор: Pavia 11.04.20, 20:07
rodion
А что вы ещё хотите услышать?
Можете использовать глубокое обучение там за счёт правильно подобранного датасета можно получить более качественные результаты чем sinc.

Автор: amk 11.04.20, 22:14
Цитата Pavia @
Можете использовать глубокое обучение там за счёт правильно подобранного датасета можно получить более качественные результаты чем sinc.
по крайней мере на сигналах, сходных с сигналами из этого
датасета.
Цитата rodion @
порядок такого фильтра получается очень большим, что меня настораживает.
Насколько сильно надо менять частоту дискретизации? Не забывай, на большинстве входов сумматора передискретизирующего КИХ-фильтра оказываются нули. А если частоты не кратные, а просто в рациональном соотношении, то ещё и не все выходные отсчёты этого фильтра нужно вычислять.
КИХ-фильтр, кстати, просто выполняет интерполирование сигнала.

Автор: rodion 12.04.20, 09:31
А что вы ещё хотите услышать?
Ну явно же я тут велосипед изобретаю, и хотелось бы услышать советы, что бы он был как можно менее костыльным

Автор: amk 12.04.20, 18:02
Цитата rodion @
хотелось бы услышать советы, что бы он был как можно менее костыльным
Так ты проблему не написал. Написал только, что тебе передискретизация нужна. Тебе несколько вариантов, первых пришедших на ум назвали.

Что я понял из первого поста. У тебя есть сигнал - не звуковой. Может ультразвук, может механические колебания. Ты хочешь по нему сгенерировать сигнал в слышимой области. Возможно в реальном масштабе времени.
Обычно для этого производят сдвиг частоты. При этом может потребоваться ещё и изменение частоты дискретизации.
Иногда исходная полоса частот слишком узкая или наоборот слишком широкая. В таком случае понадобится ещё и масштабирование частот - это уже нелинейное преобразование, с этим сложнее (я вообще не знаю, как это сделать, кроме как гребёнкой фильтров, да и то не уверен, что так работает).

Автор: rodion 13.04.20, 17:36
Сдвиг частоты мне не нужен. Только изменение частоты дискретизации, но так что бы искажения не были заметны на слух. А это оказалось жёсткие требования. Что бы их выполнить нужно ли городить большой интерполиующий фильтр или дополнительно фильтровать. И если фильтровать то чем.
P.S.
масштабирование частот - можно выполнить возведение в степень.

Автор: amk 13.04.20, 17:55
Цитата rodion @
масштабирование частот - можно выполнить возведение в степень.
Это работает только для чистых гармоник. Для сложных сигналов, на выходе появляются сигналы с разностной и суммарной частотой.

У тебя в исходном сигнале с редкой дискретизацией уже искажения. Передискретизация ничего не изменит. Если сигнал допускает задержку, то меньше всего искажений вносит фильтр Ланцоша (из относительно простых фильтров). Чем шире окно, тем лучше. Если соотношение исходной частоты дискретизации и конечной рациональное, лучше предвычислить веса.

Вместо Ланцоша в качестве весовой функции можно попробовать произведение окна Блэкмана (или другого) на sinc-функцию, искажений должно стать ещё меньше.

Автор: rodion 15.04.20, 15:25
фильтр Ланцоша вполне ничего получилось. Эквалайзером подравнять только

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)