Всем привет.
Существует известная проблема - подавление стационарного шума в аудиосигнале.
Реализовал алгоритм спектрального вычитания,который состоит из 4 этапов:
1) Усредненное оценивание спектра фонового шума.
2) Разложение каждого поступающего фрейма в спектр.
3) Вычитание спектра шума из спектра сигнала
4)Обратное преобразование Фурье для возврата во временную область.
После описанных выше действий шум подавляется, однако становятся слышны какие-то щелчки, причем в основном в периоды речи .
Эти щелчки я связываю с блочностью обработки данных. Т.е фактически при спектральном вычитании мы выполняем циклическую свертку вместо линейной.
В связи с этим 2 вопроса:
1) Правильно ли я понимаю механизм возникновения щелчков?
2) Каким образом можно в данной ситуации сделать линейную свертку вместо циклической, если импульсная характеристика во временной области неизвестна? Сгенерировать ее методом частотной выборки по заданному спектру амлитуд и фаз, наложить весовое окно во временной области и затем уже добивать нулями до размера линейной свертки и фильтровать через FFT?
Шумоподавление.Спектральные вычитания
-
- Сообщения: 34
- Зарегистрирован: 15 апр 2011, 18:02
- Бахурин Сергей
- Администратор
- Сообщения: 1116
- Зарегистрирован: 05 окт 2010, 19:55
- Контактная информация:
Re: Шумоподавление.Спектральные вычитания
1 да правильно понимаете природу щелчков.
2 Сгенерировать ее методом частотной выборки по заданному спектру амлитуд и фаз, наложить весовое окно во временной области и использовать полученный фильтр во временной области. Зачем вам опять fft?
2 Сгенерировать ее методом частотной выборки по заданному спектру амлитуд и фаз, наложить весовое окно во временной области и использовать полученный фильтр во временной области. Зачем вам опять fft?
-
- Сообщения: 34
- Зарегистрирован: 15 апр 2011, 18:02
Re: Шумоподавление.Спектральные вычитания
Я хотел снова использовать fft для уменьшения вычислительной сложности фильтрации, поскольку порядок фильтра довольно высокий.
Кстати, видимо общая вычислительная сложность будет значительной, с учетом того, что придется периодический (на каждом фрейме данных) пересчитывать ядро фильтра в соответствии с уточненными оценками спектра шума.
Кстати, видимо общая вычислительная сложность будет значительной, с учетом того, что придется периодический (на каждом фрейме данных) пересчитывать ядро фильтра в соответствии с уточненными оценками спектра шума.
Re: Шумоподавление.Спектральные вычитания
Всегда держите в голове что FFT-IFFT это не магия, а полосовые фильтры с децимацией-интерполяцией:Predlegion писал(а):Я хотел снова использовать fft для уменьшения вычислительной сложности фильтрации, поскольку порядок фильтра довольно высокий.
Кстати, видимо общая вычислительная сложность будет значительной, с учетом того, что придется периодический (на каждом фрейме данных) пересчитывать ядро фильтра в соответствии с уточненными оценками спектра шума.
https://ccrma.stanford.edu/~jos/sasp/Do ... _Bank.html
https://ccrma.stanford.edu/~jos/sasp/Fi ... ction.html
Щелчки это не что иное как проявление алиасинга, правильно выбирайте фильтры прототипы(окна) и коэффициенты децимации-интерполяции(перекрытие блоков), и тогда можно фильтровать в частотной области без щелчков. Окно не обязательно должно быть равно размеру блока FFT, оно может быть в разы длиннее, представлять собой хороший фильтр.