Оптимальный Спектрально-Временной анализ сигналов

INFERION
Сообщения: 34
Зарегистрирован: 20 окт 2015, 13:06
Откуда: Украина

Оптимальный Спектрально-Временной анализ сигналов

Сообщение INFERION »

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

Теоретически, анализатор должен мгновенно реагировать на изменения в сигнале, постепенно уточняя частоту, если гармоника продолжает "звенеть". Т.е. на длинных сигналах получается высокое разрешение по частоте, а на коротких - по времени. При этом шаг сетки частот должен быть логарифмический, равномерно темперированный. Соответственно, разрешение по времени будет расти с частотой (переходной процесс постоянен относительно количества периодов колебаний на данной частоте), а разрешение по частоте будет постоянно относительно текущей полосы. Каждая полоса должна иметь АЧХ формы sin^2(0...180°) и на 50% перекрывать смежные полосы. Тогда сумма амплитуд всегда будет стабильна, на любой промежуточной частоте, что позволит легко синтезировать сигнал обратно. Существуют ли готовые реализации подобных фильтров? Сколько искал - везде попса вроде оконного ДПФ, которая имеет целый ряд недостатков, не позволяющих нормально обрабатывать сигнал.

Теперь о моём велосипеде:
Существуют ли готовые полосовые фильтры с АЧХ, которую можно описать функцией sin^2(0...180°)? Похожа на функцию Гаусса, но только похожа. Если использовать набор колебательных контуров, то как ни крути - АЧХ такого анализатора будет с пульсациями. Поэтому остаётся только построить КИХ фильтр с нужной АЧХ и ФЧХ. Т.к. ГВЗ должно быть минимальным - фазолинейный фильтр не годится, а как с помощью БПФ рассчитать импульсную характеристику фильтра с минимальным ГВЗ - я не знаю.

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

Мне необходимо локализовать источники звука в пространстве, и кодировать моно дорожку в сферической системе координат, используя модель специального микрофонного массива, с которого была произведена запись. Для этого необходим хороший спектрально-временной анализатор...
Мне нужно 120 полос, по 12 на октаву, всего 10 октав (20...20000Гц). Для ускорения алгоритма я собираюсь после каждой октавы производить децимацию сигнала, поэтому мне необходимо семейство только из 12-ти импульсных характеристик, перекрывающих одну октаву. Если я реализую такой анализ "в лоб", с помощью какого-нибудь БПФ - разрешение по времени будет просто катастрофически низким на СЧ-ВЧ, а разрешение по частоте - низким на СЧ-НЧ. Более того - я не могу разбивать сигнал на фреймы из-за оконной функции. Окно должно скользить вдоль сигнала, а это не мало вычислительных ресурсов, с которыми БПФ становится не таким уж и быстрым...

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 1114
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: Оптимальный Спектрально-Временной анализ сигналов

Сообщение Бахурин Сергей »

Вейвлет анализ не пробовали?

INFERION
Сообщения: 34
Зарегистрирован: 20 окт 2015, 13:06
Откуда: Украина

Re: Оптимальный Спектрально-Временной анализ сигналов

Сообщение INFERION »

Изучал, решил что не подходит. Вейвлет-преобразование, по-сути, то же ПФ, только корреляция производится не с тригонометрическими функциями, а с неким набором кривулек, похожих на импульсную характеристику нужных фильтров, верно? Это похоже на набор полосовых фильтров. Чуть лучше БПФ, но не панацея. Всё так же жестко привязан к разрешениям по времени и частоте. Это как сравнивать ШИМ с Плотностно-Импульсной Модуляцией. Вот мне нужна одновременно высокая частота квантования и глубина (разрядность) при низкой тактовой частоте модулятора. ШИМ в принципе на такое не способен, хотя физически это очень даже возможно и используется на практике во всяких Сигма-Дельта АЦП, ЦАП, при дизеринге и т.п. Мне нужен фильтр со схожими свойствами - одновременно огромное разрешение по времени, и по частоте. Не фиксированные сетки, а плавающие, в зависимости от характера сигнала. Я так понимаю, мне необходимо дополнительно фильтровать сигналы уже после вычислений амплитуды и фазы, чтоб скомпенсировать линейные искажения фильтров. Тогда на короткие сигналы будет реагировать пачка полос, но зато реагировать сразу. На длинных сигналах быстрая реакция будет постепенно переходить в высокую точность.

Велосипед то я могу изобрести, но нужно ли? Да и как мне рассчитать тот же материнский вейвлет под свои условия?

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 1114
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: Оптимальный Спектрально-Временной анализ сигналов

Сообщение Бахурин Сергей »

Я не совсем понимаю вашу задачу, но одно могу сказать точно: не бывает одновременно высокого разрешения по частоте и времени. И не могут узкополосные фильтры реагировать "сразу".

INFERION
Сообщения: 34
Зарегистрирован: 20 окт 2015, 13:06
Откуда: Украина

Re: Оптимальный Спектрально-Временной анализ сигналов

Сообщение INFERION »

Теоретически, можно форсировать переходной процесс. Если, скажем, известно, что у фильтра с Q=1000 и Fs=1кГц T=318.3 периодам колебаний (318.3мс), то мы можем построить фильтр с обратной RC-фильтру передаточной характеристикой, постоянная времени которого будет в эти же 318.3мс. И пропускать через него огибающую нашего полосового фильтра. Этот "антифильтр" просто скомпенсирует переходной процесс фильтра, но по его завершению он никак не будет влиять на амплитуду фильтра, поскольку является ВЧ фильтром. В результате получим мгновенный отклик, но в широком диапазоне частот, и чем ближе частота к резонансной - тем дольше и выраженнее он будет происходить, а на резонансной и вовсе останется с максимальной амплитудой.
Если собрать массив таких фильтров и рассчитать частичную компенсацию - площадь лепестка на АЧХ, в течении всего переходного процесса, будет неизменной, но постепенно будет собираться во всё более узкую и высокую "шпильку". В таком случае сигнал можно попробовать повторно синтезировать, без существенных искажений, т.к. фазы во всех соседних фильтрах в первый момент времени будут совпадать, а суммарная амплитуда будет равна амплитуде исходного сигнала. По крайней мере, это в моей теории...
Далее я хочу перенести всё это на КИХ реализацию, с подходящими АЧХ и ФЧХ полос, чтоб плавно друг друга перекрывали. На полосу по два фильтра с одинаковыми АЧХ, но разнесёнными на 90 градусов ФЧХ, а за ними корректирующий КИХ фильтр на амплитуду, и возможно на фазу.

Весь вопрос упирается только в расчёт подходящей импульсной характеристики для использования в таком фильтре. Вот существуют ли задачи, в которых используется фильтр с АЧХ, которую можно описать функцией sin^2(0...180°)? С такой АЧХ, которая идеально перекроет смежные полосы. Неужели нет задач, где требуется построить многополосный эквалайзер, дающий ровную суммарную АЧХ?

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 1114
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: Оптимальный Спектрально-Временной анализ сигналов

Сообщение Бахурин Сергей »

Сделать фильтр с ачх синус в квадрате нетрудно. Проблема в том, что если вы начнете сужать эту ачх по частоте, то его импульсная характеристика начнет удлиняться. Соответсвенно его реакция будет все с большей задержкой. Т.о. увеличение разрешения по частоте приведет к ухудшению разрешения по времени. :roll:

INFERION
Сообщения: 34
Зарегистрирован: 20 окт 2015, 13:06
Откуда: Украина

Re: Оптимальный Спектрально-Временной анализ сигналов

Сообщение INFERION »

Это я понимаю прекрасно. Поэтому спектроанализаторы все такие эстонские и мне не подходят. Именно потому, что наш мозг имеет куда бОльшее разрешение как по частоте, так и по времени (и как же это у него получается то, если это невозможно?). А мне именно с ним и тягаться...

Пускай удлиняется эта характеристика - задержки у фильтра, как таковой, нет. Я последующей фильтрацией всё причешу.

Сделать "фильтр с АЧХ синус в квадрате" можно тем же преобразованием Фурье, но мне ведь нужно ещё и ФЧХ согласовать, а тут я уже пасс. Насколько я понимаю - от балды я не могу задать удобную мне ФЧХ - на выходе получу импульсную характеристику с мнимой частью, и куда я её потом приткну? Фазолинейный фильтр (с симметричной импульсной характеристикой), по моим прикидкам, будет иметь пинг в секунды, что для применений в задачах реального времени не очень подходит. Мне нужен минимальнофазовый вариант, чтоб на всех частотах фазовый сдвиг был фиксирован. К примеру, 90 и 180 градусов.

И так, ещё раз - готовых реализаций таких фильтров не существует? В задачах каких-нибудь специфических и т.п. Чтоб я не изобретал велосипед, а взял готовую импульсную характеристику, или хотя бы посмотрел с какими проблемами люди уже столкнулись и как они их решали. Как они согласовали АЧХ, ФЧХ, почему именно так и т.п.

Ответить