Так-ли плоха FFT-свёртка? - Страница 6 - Цифровые кроссоверы и румкоррекция - SoundEX - Клуб любителей хорошего звука Перейти к публикации

Так-ли плоха FFT-свёртка?


Рекомендованные сообщения

Это уже частности.
А главное в  том что FFT свёртка не только не плоха, а даже лучше чем прямая свёртка (при длине фильтра больше 64-х точек). 
Это не частности в случае музыкальных фильтров. Например, хай-пас фильтр на 3000 тапсов это 1 тапс со значением 0.95 и 2999 тапсов со значениями меньше 0.001. То есть амплитуда фильтра увеличивается в 950 раз между соседними тапсами. Это как раз те чрезвычайно крутые фильтры, с которыми fir может работать не очень хорошо.
Проблема в том, что такие крутые фильтры после преобразования Фурье (FFT= fast Fourier transform) становятся очень большим (и даже бесконечным) количеством частотных компонентов. Проблема в том, что компьютер не может работать с бесконечным количеством чисел. Часть из них будет откинута. То есть свертка с помощью преобразования Фурье может быть менее точной, чем прямая свертка.
Насколько это большая проблема я ещё не проверил. На форумах математиков есть обсуждения этой проблемы. Сам в свободное время пишу тест-сравнение. Отпишусь по результатам.

Ошибки округления при прямой свёртке точно не являются проблемой. При правильном алгоритме суммирования ошибка не превышает точность переменной, в которой записано значение.
Ссылка на комментарий
Поделиться на других сайтах

  • Ответы 147
  • Создано
  • Последний ответ

Лучшие авторы в этой теме

Лучшие авторы в этой теме

Опубликованные изображения

" userid="57"] Как разница (при сложении в противофазе) определяется на слух? Что она из себя представляет?
Звук трудно описать словами. Там выше есть две ссылки на файлы. Можно самому сравнить.
Ссылка на комментарий
Поделиться на других сайтах

15 часов назад, chebum сказал:

Насколько это большая проблема я ещё не проверил. На форумах математиков есть обсуждения этой проблемы. Сам в свободное время пишу тест-сравнение. Отпишусь по результатам.

Да, интересно будет ознакомиться с результатами.

Я тоже планирую написать простую программку осуществляющую прямую свертку двух wav файлов (оффлайн, с точностью 64 бит) и сравнить результат с тем что дают доступные конволверы (например  Foobar-овский). Сравнить, естественно, математически побитово, а не на слух. 

15 часов назад, chebum сказал:

Ошибки округления при прямой свёртке точно не являются проблемой. При правильном алгоритме суммирования ошибка не превышает точность переменной, в которой записано значение.

Да, это понятно. Проблема там только с производительностью. Насколько помню, ещё лет 5-7 назад у самого современного (на тот момент) компьютерного железа едва хватало производительности что бы выполнять прямую свертку в реалтайм. Сейчас производительность выше, но если свертка через FFT будет давать тот же результат, лишние вычисления ни к чему. 

Ссылка на комментарий
Поделиться на других сайтах

15 hours ago, chebum said:

Например, хай-пас фильтр на 3000 тапсов это 1 тапс со значением 0.95 и 2999 тапсов со значениями меньше 0.001.

Это не high-pass, это почти identity фильтр, очень слабо влияющий на АЧХ. Реальные фильтры затухают ГОРАЗДО медленнее. Однако качественная необходимость фильтра - как раз таки высокое затухание на краях без мгновенного обрезания отклика, именно поэтому надо много taps.

Проблема в том, что такие крутые фильтры после преобразования Фурье (FFT= fast Fourier transform) становятся очень большим (и даже бесконечным) количеством частотных компонентов. Проблема в том, что компьютер не может работать с бесконечным количеством чисел. Часть из них будет откинута. То есть свертка с помощью преобразования Фурье может быть менее точной, чем прямая свертка.
Насколько это большая проблема я ещё не проверил. На форумах математиков есть обсуждения этой проблемы. Сам в свободное время пишу тест-сравнение. Отпишусь по результатам.

Это вообще не проблема, это неверная информация. Уже обсуждалось - свёртка при помощи DFT (==FFT) - полностью эквивалентна прямой свёртке, на курсе матана это формально доказывают. Разница - исключительно числовые ошибки (накопленные ошибки округления).

Ошибки округления при прямой свёртке точно не являются проблемой. При правильном алгоритме суммирования ошибка не превышает точность переменной, в которой записано значение.

Так называемый "правильный" алгоритм займёт еще куда больше ресурсов, так как для "обычного" multiply&add есть специальная инструкция, выполняющая это в один такт. Уж куда лучше её делать "в лоб" на специализированном железе, банально, с большим аккумулятором (например FIR ускоритель на SHARC - 80 бит fixed point) - более чем достаточно, чтоб считать вообще БЕЗ числовой ошибки (подразумевая вход в 24 бит и коэффициенты FIR 32 бит... хватит на десятки мегатапсов, а то и больше, учитывая затухание)

Ссылка на комментарий
Поделиться на других сайтах



Это не high-pass, это почти identity фильтр, очень слабо влияющий на АЧХ


Это фазолинейный high-pass сгенерированный в rephase. Сверка даёт как раз обрезание низких частот. Я по спектрограмме обработанного сигнала проверял.
Ссылка на комментарий
Поделиться на других сайтах

26 минут назад, chebum сказал:

Это фазолинейный high-pass

Привет Иван. Давненько тему не трогали..:D 

Ахтунг, влияние на фазу при использовании -pass-ов в rephase. Линеиныи (зеленыи) дает предзвон, миним ( красныи) его не дает.

 

Sans titre-1.jpg

Ссылка на комментарий
Поделиться на других сайтах

1 hour ago, chebum said:

Это фазолинейный high-pass сгенерированный в rephase. Сверка даёт как раз обрезание низких частот. Я по спектрограмме обработанного сигнала проверял.

Вот фрагмент linear-phase high-pass, с параметрами по умолчанию из Rephase.

     0.000209073002471943,   0.000359884493487995,   0.000502389776342962,   0.000633771710820229,
     0.00075145656929852,    0.000853164165475838,   0.000936951742212389,   0.00100125077945039,
     0.00104489603078712,    0.00106714625776784,    0.00106769630103061,    0.00104668030360852,
     0.00100466608041072,    0.000942640805566421,   0.00086198836237749,    0.000764458865648636,
     0.000652131019898334,   0.000527368116392313,   0.000392768594384183,   0.000251112195051268,
 

Жирным центральные значения... Где тут затухание в 950 раз за сэмпл?

Ссылка на комментарий
Поделиться на других сайтах

1 hour ago, MikhailM said:

Ахтунг

В каком месте ахтунг? Вполне ожидаемые картинки! :)

Ссылка на комментарий
Поделиться на других сайтах

Привет Иван. Давненько тему не трогали..[emoji3] 
Ахтунг, влияние на фазу при использовании -pass-ов в rephase. Линеиныи (зеленыи) дает предзвон, миним ( красныи) его не дает.
 
1193083469_Sanstitre-1.jpg.7aedb5b00447ba84fb1abf32c8354bf1.jpg

А почему на зеленом графике фаза поломана?
Ссылка на комментарий
Поделиться на других сайтах

27 minutes ago, Oll740 said:

А почему на зеленом графике фаза поломана?

Это не фаза поломана, а труба, на которой она нарисована разрезана )

Ссылка на комментарий
Поделиться на других сайтах

Но почему? Фаза должна быть линией или нет?

Ссылка на комментарий
Поделиться на других сайтах

Just now, Oll740 said:

Но почему? Фаза должна быть линией или нет?

Она и есть линия, но на трубе, а не на плоскости. Поэтому чтобы показать её на плоскости - трубу режут вдоль, и разворачивают. Две точки разрыва - это на самом деле одна точка на трубе в месте её (трубы, а не фазы) разреза. Линия, соединяющая эти две точки - артефакт отрисовки программы. Её быть не должно.

Ссылка на комментарий
Поделиться на других сайтах

Т е кручение фаз на линейном FIR фильтре это нормально? Линейный это такая фигура речи ;) Может просто надписи поменяли? 

75C21A1B-ECAE-49C5-AEB4-ED3B8B97FF03.png

0683BE20-6DDE-42BE-907B-A38C7D0049B1.png

Ссылка на комментарий
Поделиться на других сайтах

igorzep Интересное вИдение в 3д. Получается спираль...на трубе.

Ссылка на комментарий
Поделиться на других сайтах

Just now, Oll740 said:

Т е кручение фаз на линейном FIR фильтре это нормально? Линейный это такая фигура речи ;) Может просто надписи поменяли? 

А... нет ничего не поменяли. Просто легенды не видно и это не просто фаза, а избыточная фаза, т.е. разница актуальной и минимальной.

Ссылка на комментарий
Поделиться на других сайтах

Ну тады все ОК

Народ поделитесь теорией создания в рефейзе apodizing фильтров, pls

Ссылка на комментарий
Поделиться на других сайтах

В 02.01.2019 в 16:25, igorzep сказал:

Жирным центральные значения... Где тут затухание в 950 раз за сэмпл?

У меня rePhase 1.3.0 по-другому генерирует. Для проверки сделал новый файзолинейный high-pass LR48 на 1000Гц, 3000 тапсов. Центральное значение на два порядка больше соседних:

image.png.d0d4c2ebc12bfcc8dc26005d9406a32c.png

У вас какая версия rephase?

Ссылка на комментарий
Поделиться на других сайтах

Доделал тест. На тестовых данных FFT одинаково корректно работает что с пологим затуханием, что с крутым фильтром. Результат эквивалентен прямой свёртке с точностью не хуже 0.00000001.

Ссылка на комментарий
Поделиться на других сайтах

17 часов назад, chebum сказал:

Доделал тест. На тестовых данных FFT одинаково корректно работает что с пологим затуханием, что с крутым фильтром. Результат эквивалентен прямой свёртке с точностью не хуже 0.00000001.

Что и требовалось доказать. Спасибо.

А чем делалась FFT свертка? (какая программа или плагин).

Ссылка на комментарий
Поделиться на других сайтах

Что и требовалось доказать. Спасибо.
А чем делалась FFT свертка? (какая программа или плагин).
Для equalizer Apo тест дописал. FFT через FFTW3. Overlap-add от автора equalizer apo. Прямую свертку сделал я.
Тест ещё не запушил в репо. Доберусь до дома запушу сюда:
https://github.com/chebum/equalizer-apo-64
Ссылка на комментарий
Поделиться на других сайтах

  • 2 года спустя...

Народ потихоньку качает мой патч для EqualizerAPO, переводящий обработку в 64 бита. Изредка пишут комменты.

Цитата

I was using equalizer APO for years but stumbled recently across this! After replacing the DLL, I get a massive boost in clean signal quality/maximum volume/max amplitude without distortion and also the bass-heavy configurations of equalizer APO sound so clean, distortion-free and amazing! I was almost about to buy a hardware amp because I wasn't happy with the quality of equalizer APO's defaults but your patch helped me!

Радует, что разницу между 32-битным процессингом и 64-битным не только я слышу.:)

Ссылка на комментарий
Поделиться на других сайтах

Только что, Stump сказал:

 что за  патч? Можно ссылку? Интересует, пользуюсь АРО  непрерывно

 

Ссылка на комментарий
Поделиться на других сайтах

  • 6 месяцев спустя...
Вчера и сегодня экспериментировал c FFT. Это позволило выкрутить длину свёртки в Дефонике(число таппс) на максимальное значение 128000, т.е. около 3 секунд на 44100. На вав 192000-24 загрузка процессора 17%.
В режиме прямой свёртки загрузка проца раньше была 70 %, а таппс можно было поставить 48000 на 44100-16 (чуть больше 1 секунды), 31000 на 96000-24 и 21000 на 192000-24.
Начал с т.н. тестовых треков. Впечатления очень неоднозначные.
1. На некоторых треках или фрагментах есть ощущение "стало тише". Посмотрел уровни, перепроверил, всё норм.
2. Везде есть ощущение "стало по-другому", но в своих привычных терминах я описать не могу. Что было чистым - чистым и осталось, что сибилянтило на записи- сибилянтит по-прежнему.
3. На сложных полифонических фрагментах ГМ неожиданно для меня перебрасывает внимание на какие то "побочные" партии - Вторые скрипки, второй кларнет и т.т.. Интегрально есть ощущение "Возникшей подозрительной активности")))) даже в самом тупом аккомпанементе.
4. Есть ощущение "постоянного сарказма". Именно второстепенные партии, акценты, синкопы стали "показывать фигу в кармане". Скерцность (в копилку к вхарьности).
Нужны явно другие уши, для расслушивания разницы.
Ссылка на комментарий
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в теме...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...