SergeiSX 0 5 июня, 2017 Опубликовано 5 июня, 2017 · Жалоба Здравствуйте! Вопрос, который мне необходимо решить, уже поднимался наверное не раз и не два, но я нигде не нашел некоторых нюансов, которые и хотел бы выяснить. Решаю задачу шумоподавления для речевого сигнала при известном слепке шума. На данный момент применил метод спектрального вычитания. 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) - спектр мощности шума. А дальше я не понимаю точно как применять построенную передаточную характеристику фильтра Винера. Если прямо умножать компоненты спектра зашумленного сигнала на передаточную характеристику на данной частоте, то это будет полной аналогией спектральному вычитанию в то время как в статье английской прямо говорится что фильтрация по Винеру отличается от спектрального вычитания. Сталкивался ли кто-нибудь с применением фильтрации по Винеру в принципе? Именно с применением на практике. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andyp 9 6 июня, 2017 Опубликовано 6 июня, 2017 · Жалоба ... А дальше я не понимаю точно как применять построенную передаточную характеристику фильтра Винера. Если прямо умножать компоненты спектра зашумленного сигнала на передаточную характеристику на данной частоте, то это будет полной аналогией спектральному вычитанию в то время как в статье английской прямо говорится что фильтрация по Винеру отличается от спектрального вычитания. Сталкивался ли кто-нибудь с применением фильтрации по Винеру в принципе? Именно с применением на практике. С винеровской фильтарцией на практике сталкивался в другом приложении, так что, думаю, могу ответить. Ответ на выделенный вопрос есть в книжке Saeed V. Vaseghi Advanced Digital Signal Processing and Noise Reduction, Second Edition. в параграфе 11.1.3 В методе спектрального вычитания, как его определяет автор, используются мгновенные оценки спектра смеси. В Вашем изводе этого метода используются усредненные по времени оценки СПМ смеси. В винеровском фильтре используются наперед известные СПМ, полученные усреднением по ансамблю. В случае стационарных эргодических процессов и достаточно маленького a Ваш фильтр и будет винеровским. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SergeiSX 0 6 июня, 2017 Опубликовано 6 июня, 2017 · Жалоба С винеровской фильтарцией на практике сталкивался в другом приложении, так что, думаю, могу ответить. Ответ на выделенный вопрос есть в книжке Saeed V. Vaseghi Advanced Digital Signal Processing and Noise Reduction, Second Edition. в параграфе 11.1.3 В методе спектрального вычитания, как его определяет автор, используются мгновенные оценки спектра смеси. В Вашем изводе этого метода используются усредненные по времени оценки СПМ смеси. В винеровском фильтре используются наперед известные СПМ, полученные усреднением по ансамблю. В случае стационарных эргодических процессов и достаточно маленького a Ваш фильтр и будет винеровским. Спасибо Вам большое! Книгу скачиваю уже. Еще интересный вопрос возник в связи с встречающимися мнениями что перекрытие окон можно брать разным в том числе и больше 50 %. Но ведь в этом случае сумма перекрывающихся окон на интервалах перекрытия не даст константу и, по идее, появится паразитная амплитудная модуляция. Я наверное что - то упускаю в своих рассуждениях ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andyp 9 6 июня, 2017 Опубликовано 6 июня, 2017 · Жалоба Еще интересный вопрос возник в связи с встречающимися мнениями что перекрытие окон можно брать разным в том числе и больше 50 %. Но ведь в этом случае сумма перекрывающихся окон на интервалах перекрытия не даст константу и, по идее, появится паразитная амплитудная модуляция. Я наверное что - то упускаю в своих рассуждениях ? Да нет - на мой взгляд вроде все верно. Наложение окна - процесс сродни гетеродинированию - линейное преобразование, зависящее от сдвига сигнала. В спектральной области получите свертку с оконной функцией, что дает лишние гармоники, как у модуляции. Глубина модуляции будет определяться видом окна - на участках перекрытия - удвоенные хвосты, на неперекрывающихся - собственно отсчеты оконной функции. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
petrov 7 6 июня, 2017 Опубликовано 6 июня, 2017 · Жалоба Да нет - на мой взгляд вроде все верно. Наложение окна - процесс сродни гетеродинированию - линейное преобразование, зависящее от сдвига сигнала. В спектральной области получите свертку с оконной функцией, что дает лишние гармоники, как у модуляции. Глубина модуляции будет определяться видом окна - на участках перекрытия - удвоенные хвосты, на неперекрывающихся - собственно отсчеты оконной функции. ИМХО проще всё гораздо, окно - огибающая импульсной характеристики банка полосовых фильтров, перекрытие окон - децимация, объективно контролируем уровень алиасинга, а не слушаем "мнения". https://ccrma.stanford.edu/~jos/sasp/STFT_H..._Window_75.html STFT, Hamming Window, 75% Overlap Perfect reconstruction Oversampled by 4 Aliasing from side lobes only Good channel isolation ( $ \approx 42$ dB) Moderately robust to filter-bank modifications This can be considered a ``telephone quality'' audio filter bank. It has been used many times to analyze/model speech signals. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andyp 9 6 июня, 2017 Опубликовано 6 июня, 2017 · Жалоба ИМХО проще всё гораздо, окно - огибающая импульсной характеристики банка полосовых фильтров, перекрытие окон - децимация, объективно контролируем уровень алиасинга, а не слушаем "мнения". Честно говоря, для меня вообще черная магия как это все работает там. ИХ синтезированного фильтра-шумодава всегда длиннее чем перекрывающаяся часть окон, так что алиасить будет по любому за счет замены линейной свертки на циркулярную и никакой overlap-add от этого избавиться не поможет. Доля энергии этих искажений в полосе сигнала зависит от меняющегося фильтра. Я же только влияние окон на входной спектр описал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SergeiSX 0 7 июня, 2017 Опубликовано 7 июня, 2017 · Жалоба Спасибо ! Я в данный момент провожу эксперименты с сигналом, представляющим из себя несколько синусоид с добавленным аддитивным шумом (белый шум классический). Если брать окна с перекрытием обеспечивающим константу при их суммировании то паразитной амплитудной модуляции не возникает. Но я подозреваю что это потому что беру именно смесь синусоид а не речь? Или же при перекрытии, не обеспечивающем константу нужно как - то еще дополнительно обрабатывать сигнал? Я читал на одном из форумов рекомендацию накладывать окно и после обратного FFT для кадра, но при этом в моем случае получилась очень сильная паразитная амплитудная модуляция. Мне думается что многое зависит от производимых над спектром кадра преобразований до обратного перехода во временную область. И еще хотел бы проконсультироваться по одной английской статье которую прилагаю. Там как раз идет речь о спектральном вычитании и фильтрации по Винеру. Но не совсем понятно чем у них чем первое отличается от второго, хотя после объяснений andy я стал понимать лучше. Надо полагать что они делают усреднение некоторое зашумленного сигнала от кадра к кадру и оценивают его спектр мощности. В общем прилагаю статью... Буду рад любым комментариям! 1_s2.0_S1877050916300758_main.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SergeiSX 0 11 июня, 2017 Опубликовано 11 июня, 2017 · Жалоба Моя версия такова, что оценка по Винеру строится путем предварительного анализа всего файла сигнала и усреднения спектра мощности покадрово... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andyp 9 12 июня, 2017 Опубликовано 12 июня, 2017 · Жалоба Моя версия такова, что оценка по Винеру строится путем предварительного анализа всего файла сигнала и усреднения спектра мощности покадрово... Давайте так: Во временной области: Винеровский фильтр - это линейный фильтр с весами w (строка). Пусть отсчеты входной смеси это вектор х (столбец), выход - вектор у Тогда винеровское решение: y = wx; w = Rxx^-1 * Rxd (1) Rxx - корреляционная матрица входной смеси, Rxd - столбец кросс-корреляции входного и полезного сигнала. Как видно из уравнений, для того, чтобы реализовать винеровский фильтр нужно знать (или как-то рассчитать) кросс-корреляцию полезного сигнала и входной смеси. Ладно, теперь предположим, что матрица Rxx имеет циркулярную структуру (хотя она всего лишь эрмитова). Это равнозначно использованию циркулярной свертки вместо линейной. Тогда: Rxx = F * Sxx * F^(-1); Rxx^(-1) = F^(-1)*Sxx^(-1) * F F - матрица преобразования Фурье. Sxx - диагональная с коэфф. являющимися СПМ входной смеси Если умножить винеровское решение (1) на матрицу преобразования Фурье, то получим: Fw = F*F^(-1) *Sxx^(-1) * F * Rxd Коэф-ты фильтра Винера в частотной области: W = Fw W= Sxx^(-1) * F*Rxd ; W = Sxx^(-1)*Sxd Sxd - преобразование Фурье от вектора кросс-корреляции. Для каждой дискретной частоты i имеем: Y(i) = W(i) * X(i) W(i) = Sxd(i) / Sxx(i); Предполагая, что на входе аддитивная смесь полезного сигнала и помехи получаем W(i) = (Sxx(i) - Sdd(i)) / Sxx(i); Это и есть спектральное вычитание, когда вместо известного кросс-спектра полезного сигнала и входной смеси (как обычно при винеровской фильтрации) используют известную (или полученную каким-либо способом) СПМ помехи. Здесь за кадром осталось наплевательство на фазу и прочие тонкости получения оценок соответствующих СПМ. Вот, все что знал - сказал . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SergeiSX 0 12 июня, 2017 Опубликовано 12 июня, 2017 · Жалоба Спасибо за развернутый ответ! Похоже понял теперь, вся суть разных способов построения винеровской фильтрации в разных способах оценки СПМ кросс-спектра сигнала и помехи. Жаль только что в статье не отражен их способ нахождения оценок СПМ при классической винеровсокой фильтрации Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться