На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела "Программирование звука"
0) Данный раздел предназначен для обсуждения проблем, возникающих при программировании задач, связанных с записью, обработкой, воспроизведением звука. Перед созданием темы подумайте, не будет ли она уместнее в разделах Разработка и тестирование программ, Наши исходники, а особенно Разовые заказы и подработки
1) На Раздел распространяются все Правила форума.Огромная просьба с ними внимательно ознакомиться.
2) Запрещается давать бессмысленные ответы вроде: "Снеси Мастдай", "ХП рулит", "Поставь Линукс" и т.д.
3) Запрещается создавать темы, в которых Вы намереваетесь получить ссылку на кряки, серийники и т.п. Также запрещено любое обсуждение p2p (peer-to-peer) сетей (BitTorrent, eDonkey и т.д.).
4) Реклама всякого рода пресекается беспощадно.
5) Используйте тэг [CODE] для выделения кода программы (непременно с указанием языка программирования - выбрать из списка. В противном случае бессмысленно!). Уважайте тех, кто будет читать ваш код!
6) Если решение вашей проблемы найдено, то не забываем помечать тему специальной функцией "Вопрос решён". Вам всего лишь требуется при написании последнего ответа поставить одну единственную галочку прямо над формой ответа.
7) Если вы хотите получить совет для конкретной платформы/языка программирования, обязательно укажите их в вопросе

8) Если не прикрепляются/не скачиваются файлы, читаем Не прикрепляется / не скачивается файл. Любые обсуждения в данном разделе проблем с приложением файлов считаются оффтопиком! Со всеми вытекающими.

9) NEW! Уважаемые новички! Мы приветствуем Ваше желание научить всех посетителей раздела правильному программированию. Но огромная просьба, перед тем, как писать поучения в старых (последний ответ - "старее" месяца, а особенно, если вопрошавший не появляется на форуме уже не первый месяц, в чем можно убедиться в его профиле) темах, хорошо подумать, будет ли кому-нибудь, кроме Вас cамих, это интересно. Попытки накрутки количества тематических сообщений за счёт поднятия древних неактуальных тем ("некрофилия") будут наказываться по велению левой пятки модераторского состава (см. пп.12, 13 Правил)



Нарушение Правил может повлечь наказание со стороны модераторов.



user posted imageFAQ Раздела user posted imageПоиск в Разделе user posted imageMSDN Library Online | Ваше мнение о модераторах: user posted imageBarazuk user posted imageRikkie
  
> Фильтрация по Винеру при шумоподавлении и известном слепке шума
    Здравствуйте! Вопрос, который мне необходимо решить, уже поднимался наверное не раз и не два, но я нигде не нашел некоторых нюансов, которые и хотел бы выяснить. Решаю задачу шумоподавления для речевого сигнала при известном слепке шума. На данный момент применил метод спектрального вычитания.
    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) - спектр мощности шума. А дальше я не понимаю точно как применять построенную передаточную характеристику фильтра Винера. Если прямо умножать компоненты спектра зашумленного сигнала на передаточную характеристику на данной частоте, то это будет полной аналогией спектральному вычитанию в то время как в статье английской прямо говорится что фильтрация по Винеру отличается от спектрального вычитания. Сталкивался ли кто-нибудь с применением фильтрации по Винеру в принципе? Именно с применением на практике.
      SergeiSX
      Да почти тоже самое. Умножение оно лучше чем вычитание. Во-вторых спроектированный фильтр по Винеру может быть закодирован как БИХ или КИХ фильтр это позволит избавиться от перекрывающихся окон.
        Pavia, спаибо за ответ! Но в английской статье фильтрация по Винеру рассматривается отдельно от спектрального вычитания. И более того, в другой статье показывается на графиках что фильтрация по Винеру дает выигрыш в конечном отношении сигнал/шум по сравнению со спектральным вычитанием. То есть оценки спектров сигнала и шума для фильтра Винера берутся отличными от мгновенного спектра в текущем кадре. Я пока не понимаю как именно построение передаточной характеристики фильтра Винера отличается от построения характеристик для спектрального вычитания( Могу в принципе выложить статью на форум.
          SergeiSX
          Давно бы могли выложить статью.
          Всё никак не доберусь до книгохранилища. Где-то у меня была отличная книга для вас, но пока. Обязательно к изучению: Лем Г.-Аналоговые и цифровые фильтры-Мир (1982)

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

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

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

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

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

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

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


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

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

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


                      Рейтинг@Mail.ru
                      [ Script execution time: 0,0704 ]   [ 16 queries used ]   [ Generated: 29.03.24, 01:03 GMT ]