Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Программирование звука > Фильтрация по Винеру при шумоподавлении и известном слепке шума


Автор: SergeiSX 05.06.17, 15:04
Здравствуйте! Вопрос, который мне необходимо решить, уже поднимался наверное не раз и не два, но я нигде не нашел некоторых нюансов, которые и хотел бы выяснить. Решаю задачу шумоподавления для речевого сигнала при известном слепке шума. На данный момент применил метод спектрального вычитания.
1. Разбиваю сигнал на перекрывающиеся кадры. (Перекрытие 50%)
2. Для очередного кадра применяю оконное преобразование с окном Ханна.
3. Оставляю только речевую полосу частот (300 - 3400 Гц.)
4. Произвожу сглаживание полученного спектра (S(f, t) = S(f, t-1) + a*(X(f, t) - S(f, t -1)) для подавления "музыкальных" искажений.
где S(f, t) - результирующий сглаженный спектр, S(f, t - 1) - сглаженный спектр при обработке предыдущего кадра, X(f, t) - спектр текущего кадра.
5. Вычитаю из получившегося спектра очередного кадра сигнала спектр слепка шума, усредненный по количеству полных кадров шума в слепке.
6. Произвожу обратное преобразование Фурье для полученного спектра кадра.
7. Накладываю полученный временной кадр сигнала на конечный буфер методом сложения с перекрытием.
Помимо спектрального вычитания при шумоподавлении можно применять фильтрацию по Винеру. И я встречал упоминания подобного алгоритма покадровой обработки но с применением фильтра Винера. Насколько я понимаю в пределах кадра сигнал и шум можно считать стационарными случайными процессами (шум в принципе в моей постановке задачи стационарный случайный процесс). Тогда передаточная характеристика фильтра Винера HW(f)= (Psn(f) - Pn(f)) / Psn(f), где Psn(f) спектр мощности смеси сигнала и шума, Pn(f) - спектр мощности шума. А дальше я не понимаю точно как применять построенную передаточную характеристику фильтра Винера. Если прямо умножать компоненты спектра зашумленного сигнала на передаточную характеристику на данной частоте, то это будет полной аналогией спектральному вычитанию в то время как в статье английской прямо говорится что фильтрация по Винеру отличается от спектрального вычитания. Сталкивался ли кто-нибудь с применением фильтрации по Винеру в принципе? Именно с применением на практике.

Автор: Pavia 10.06.17, 06:41
SergeiSX
Да почти тоже самое. Умножение оно лучше чем вычитание. Во-вторых спроектированный фильтр по Винеру может быть закодирован как БИХ или КИХ фильтр это позволит избавиться от перекрывающихся окон.

Автор: SergeiSX 11.06.17, 22:06
Pavia, спаибо за ответ! Но в английской статье фильтрация по Винеру рассматривается отдельно от спектрального вычитания. И более того, в другой статье показывается на графиках что фильтрация по Винеру дает выигрыш в конечном отношении сигнал/шум по сравнению со спектральным вычитанием. То есть оценки спектров сигнала и шума для фильтра Винера берутся отличными от мгновенного спектра в текущем кадре. Я пока не понимаю как именно построение передаточной характеристики фильтра Винера отличается от построения характеристик для спектрального вычитания( Могу в принципе выложить статью на форум.

Автор: Pavia 12.06.17, 16:47
SergeiSX
Давно бы могли выложить статью.
Всё никак не доберусь до книгохранилища. Где-то у меня была отличная книга для вас, но пока. Обязательно к изучению: Лем Г.-Аналоговые и цифровые фильтры-Мир (1982)

Цитата SergeiSX @
Я пока не понимаю как именно построение передаточной характеристики фильтра Винера отличается от построения характеристик для спектрального вычитания( Могу в принципе выложить статью на форум.

Вообще-то это разные пространства Фурье и S.
S пространство переводиться в Z через обратное билинейное преобразование. А Z в Фурье через преобразование на круге.
А затем переход от бесконечного преобразования Фурье к конечному.

Так вот последнее не является математически строгой операцией.

И тут возникают всякие спекуляции.

И тут можно выделить два лагеря. Старая школа и новая школа.
Старики не хотят понимать молодёжь, а молодёжь не хочет понимать стариков.
Молодёжь говорит что это одно и тоже и нет разницы. Старики говорят, разница есть и то что это разные Фильтры.
Цитата SergeiSX @
Но в английской статье фильтрация по Винеру рассматривается отдельно от спектрального вычитания.

Это старая школа.
На что молодеешь приводит математические выкладки.
Тогда старики отвечают.
Цитата SergeiSX @
И более того, в другой статье показывается на графиках что фильтрация по Винеру дает выигрыш в конечном отношении сигнал/шум

Скорее всего это надутые децибелы, то бишь не корректно проведённое сравнение.


Но сама по себе оконные функции вызывают большие искажения и перекрытия в 50% как правило недостаточно и для их устранения приходиться увеличивать перекрытие. Рекомендуют до 90%!
И вот тут уже не поспоришь.

Автор: SergeiSX 12.06.17, 19:56
Спасибо ! Если я правильно понимаю при винеровской фильтрации речь идет о достаточно достоверной оценке СПМ сигнала и шума. Впрочем не буду дальше строить догадки и предположения выложу две статьи лучше. В одной предлагается фильтрация по Винеру при некоторой рекурсивной оценке спектра мощности шума. В другой, как раз где производятся сравнения винеровской фильтрации и спектрального вычитания с графиками, предлагается адаптивный фильтр Винера во временной области. К сожалению мне не позволяет форум прикреплять файлы размером более 100 к, поэтому выложу на файлообменник и приведу ссылки на скачивание.
http://dropmefiles.com/nFzBm это ссылка на две статьи.
Насчет S и Z пространств я правильно понимаю что это по сути результирующие пространства двух разных интегральных преобразований, преобразования Лапласа и Z преобразования?

Автор: SergeiSX 13.06.17, 07:15
Цитата
Но сама по себе оконные функции вызывают большие искажения и перекрытия в 50% как правило недостаточно и для их устранения приходиться увеличивать перекрытие. Рекомендуют до 90%!

Я встречал мнения, что сумма оконных функций с заданным перекрытием должна давать константу на всем интервале их наложения на сигнал, а иначе восстановление сигнала при сложении с перекрытием приводит к искажениям в виде паразитной амплитудной модуляции. Я провел эксперимент в Matlab с сигналом из синусоиды и шума, методом спектрального вычитания убирал шум и брал окно Ханна с перекрытием 50%. Восстановление проходило корректно. При большем перекрытии появлялась паразитная амплитудная модуляция. Подскажите пожалуйста, может быть при большем перекрытии необходима дополнительная работа по выравниванию суммы окон? Или здесь уже компромисс между паразитной модуляцией и степенью искажений из - за самой оконной функции?

Автор: Pavia 13.06.17, 15:12
Не понял какой такой компромис? Они же в союзе работают!
Я в своих эксперементах делал сумму окон взвешенной, что-бы выровнить её.

Автор: SergeiSX 13.06.17, 19:50
Цитата Pavia @
Я в своих эксперементах делал сумму окон взвешенной, что-бы выровнить её.

То есть Вам удавалось сделать сумму окон константой при любом перекрытии? Немножко не улавливаю как правильно рассчитать взвешивание в этом случае( Просто при 50 % с окном Ханна у меня автоматически получалась константа и я поэтому решил что нужно всегда подбирать только определенное перекрытие. Но видимо слишком упростил ситуацию.
Скажите, Вам удалось скачать статьи по ссылке ? Очень интересно Ваше мнение по поводу приводимых там соотношений и результатов. Насколько я успел понять формирование фильтра Винера и его частного случая - вычитания спектров базируется на оценивании СПМ сигнала и шума определенными способами.
Благодарю Вас за рекомендованную книгу - пока что прохватил раздел цифровые фильтры - очень полезно!

Автор: SergeiSX 15.06.17, 17:59
Если я правильно понимаю взвешивание можно реализовать построив на интервале повторения значений суммы окон последовательность коэффициентов, нормирующих сумму окон к 1. Но это пока только предположение...

Автор: SergeiSX 16.06.17, 06:18
Весь вопрос в том как быть в реальном времени когда перекрытие велико и период повторения амплитудных искажений велик. Тогда надо как - то хранить коэффициенты взвешивания и учитывать в пределах какого кадра идет суммирование.

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)