Шумоподавление.Спектральные вычитания

Predlegion
Сообщения: 34
Зарегистрирован: 15 апр 2011, 18:02

Шумоподавление.Спектральные вычитания

Сообщение Predlegion »

Всем привет.
Существует известная проблема - подавление стационарного шума в аудиосигнале.

Реализовал алгоритм спектрального вычитания,который состоит из 4 этапов:
1) Усредненное оценивание спектра фонового шума.
2) Разложение каждого поступающего фрейма в спектр.
3) Вычитание спектра шума из спектра сигнала
4)Обратное преобразование Фурье для возврата во временную область.

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

В связи с этим 2 вопроса:
1) Правильно ли я понимаю механизм возникновения щелчков?
2) Каким образом можно в данной ситуации сделать линейную свертку вместо циклической, если импульсная характеристика во временной области неизвестна? Сгенерировать ее методом частотной выборки по заданному спектру амлитуд и фаз, наложить весовое окно во временной области и затем уже добивать нулями до размера линейной свертки и фильтровать через FFT?

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

Re: Шумоподавление.Спектральные вычитания

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

1 да правильно понимаете природу щелчков.
2 Сгенерировать ее методом частотной выборки по заданному спектру амлитуд и фаз, наложить весовое окно во временной области и использовать полученный фильтр во временной области. Зачем вам опять fft?

Predlegion
Сообщения: 34
Зарегистрирован: 15 апр 2011, 18:02

Re: Шумоподавление.Спектральные вычитания

Сообщение Predlegion »

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

petrov
Сообщения: 30
Зарегистрирован: 31 янв 2011, 13:02

Re: Шумоподавление.Спектральные вычитания

Сообщение petrov »

Predlegion писал(а):Я хотел снова использовать fft для уменьшения вычислительной сложности фильтрации, поскольку порядок фильтра довольно высокий.
Кстати, видимо общая вычислительная сложность будет значительной, с учетом того, что придется периодический (на каждом фрейме данных) пересчитывать ядро фильтра в соответствии с уточненными оценками спектра шума.
Всегда держите в голове что FFT-IFFT это не магия, а полосовые фильтры с децимацией-интерполяцией:
https://ccrma.stanford.edu/~jos/sasp/Do ... _Bank.html
https://ccrma.stanford.edu/~jos/sasp/Fi ... ction.html
Щелчки это не что иное как проявление алиасинга, правильно выбирайте фильтры прототипы(окна) и коэффициенты децимации-интерполяции(перекрытие блоков), и тогда можно фильтровать в частотной области без щелчков. Окно не обязательно должно быть равно размеру блока FFT, оно может быть в разы длиннее, представлять собой хороший фильтр.

Ответить