На главную Наши проекты:
Журнал   ·   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
  
> Программное подавление шума , (шипение микрофона)
    Всем привет!

    Получаю звук с микрофона в PCM S16LE. В звуке присутствует достаточно громкий однородный фон "шипение". Нужен алгоритм или библиотека для C++ для подавления шума в реальном времени.

    Подскажите?
      HardRock
      Запишите 10 секунд звука. Удалите постоянную составляющую.Можно и без удаления. Примените преобразование Фурье. Найдите спектр шума. Из сходя из графика определяете частоту среза. Или 2 частоты если шум с двух сторон.

      Далее рассчитываете коэффициенты фильтра. Для этого надо знать характеристики вашего ПК и требования к "в реальном времени".
      Из сходя из этих данных выбираете степень фильтра и метод фильтрации.
      RC, КИХ, БИХ, БПФ.(анг. RC, FIR, IIR, FFT).

      Далее берёте матлаб. Выбираете тип фильтре к примеру Бартервот.
      Подбираете степень неравномерности в полосе и вне её.
      Рассчитываете коэффициенты.
      Затеем применяете преобразование фильтра под вашу частоту дискретизации.

      Делаем свою реализацию фильтра по выбранному методу. Или просим матлаб сгенерировать Си код. Прогоняете через ряд тестов. Убеждаемся что вычислительная ошибка не влияет на результат.

      Библиотек с реализациями различных фильтров полно:
      DSPLib, SDR, AlgLib, ...
        Шум, как правило, белый или розовый, то есть занимает весь диапазон, срезом какого-то определённого спектра его не удалить, да и такой срез сильно портит сигнал того же микрофона.
        Можно сделать многополосный компрессор-гейт:
        Сигнал кроссовером делится на N полос, определяется уровень шума в каждом диапазоне и выставляется соответствующий уровень для гейта, после гейтов сигнал обратно суммируется.
        Сообщение отредактировано: Mikle -
          БШ легко давится медианным фильтром или скользящим усреднением. Последний даже лучше )
            Есть еще варианты подавления "белого" шума - адаптивное шумопонижение, или NoiseGate (в паузах, но это по грубее), в зависимости от того, что Вам требуется на выходе.
              В теории оптимальный фильтр в этой ситуации - это оценивающий фильтр Винера (того самого, что придумал ЯП Паскаль, Модула, Оберон). Можно почитать в Википедии про Винеровское оценивание.
              Однако самому им пользоваться не приходилось, точнее сказать не могу.
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0362 ]   [ 16 queries used ]   [ Generated: 28.03.24, 13:17 GMT ]