Страница 1 из 1

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

Добавлено: 03 мар 2013, 19:47
Predlegion
Всем привет.
Существует известная проблема - подавление стационарного шума в аудиосигнале.

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

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

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

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

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

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

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

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

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