Пользователь
115,7
рейтинг
23 ноября 2014 в 23:07

Администрирование → Давим шумы средствами PulseAudio

image
Часто вижу, как владельцы ноутбуков жалуются на шумы микрофона в Linux, в то время как под Windows их меньше, либо же они вообще отсутствуют. Как правило, виноват в этом производитель, установивший самый дешевый микрофон и/или кодек из возможных, надеясь на сглаживание отвратительного качества железа программными средствами.
К счастью, в Linux есть замечательный аудиосервер PulseAudio, с помощью которого можно сделать аудио с вашего микрофона заметно качественней.

Способ #1

Для того, чтобы использовать встроенный модуль подавления шума и эха PulseAudio, работающий по алгоритму webrtc или speex, для какой-то конкретной программы, достаточно запустить ее с переменной окружения:
PULSE_PROP="filter.want=echo-cancel"

И весь ваш звук магическим образом будет избавлен от шумов и эха!
Пример:
PULSE_PROP="filter.want=echo-cancel" skype

До:
image
После:
image

Способ #2

Создаем постоянный source и sink с шупоподавлением:
load-module module-echo-cancel source_name=noechosource sink_name=noechosink
set-default-source noechosource

Можно добавить эти строки в /etc/pulse/default.pa куда-нибудь в конец, чтобы они выполнялись каждый раз при запуске pulseaudio.

К сожалению, в текущей версии PulseAudio существует баг, из-за которого этот модуль работает только тогда, когда производится не только запись, но и воспроизведение. Скажем, в Skype, Mumble и прочих голосовых телефонах будет все сразу замечательно, а если вы заходите только записать звук, например, через audacity, то следует включить в нем какую-то музыку фоном, даже с минимальной громкостью.
Если вы используете второй способ, убедитесь, что нужная вам программа воспроизводит аудио в sink с шумоподавлением, а не напрямую в аудиокарту. Перенести sink можно, например, через pavucontrol.
Не воспроизводите музыку в аудиоплеере через sink с шумоподавлением, а то получите звук в моно и 32кГц.

На хабрахабре есть один из разработчиков PulseAudio — AEP. Благодарю его за консультацию.
Влад @ValdikSS
карма
621,0
рейтинг 115,7
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Администрирование

Комментарии (34)

  • +32
    Никогда не думал, что PulseAudio умеет ещё и подавлять шумы. Обычно оно их проигрывает вместо нормального звука.
    • +10
      ГАГАГА
      • +5
        На самом деле, у меня PulseAudio тоже долгое время хрипел, когда еще первые версии были. Я долгое время удалял его и использовал alsa напрямую, но мне иногда нужно было записывать звук с монитора, а в alsa это делать очень неудобно, а на лету вообще нельзя. И как-то версии с третей уже все нормально было, ничего не хрипело, качество звука было всегда высокое. Проблемы были, насколько помню, только со Skype.
        Но я особо никакими фичами pulseaudio не пользуюсь, кроме как иногда с монитора записываю и звук по сети гоняю.
      • +6
        Пока у меня работоспособность звука зависит от погоды на Марсе, я буду продолжать писать подобные сообщения.
        • 0
          Было у меня подобное на Ubuntu. То ли там версия старая было, то ли звёзды так сошлись. Но в Gentoo линукс подобных проблем не замечал.
        • –4
          • +5
            А смысл? От переустановки лучше ничего не заработает.
            • –3
              Проверял?

              PulseAudio уже пятой версии, ставится по умолчанию во многих дистрибутивах, и это примерно первый раз за года три, когда я вижу жалобу на него. Значит, проблема, скорее всего, не в PulseAudio. Проходил шаги в этой и этой инструкциях? Сообщал ли в багтрекер?
              • –4
                Хооршо, вот вам ещё жалоба. Середина ноября 2014 (приблизительно 15 число), «нетбук» Inspiron Mini, свежеустановленная убунта 14.04 (lts), всё обновлено, пульс хрипит. Вырубил пульс посредством снятия флага x с его бинарника (чтоб не запускался), завернул плеер на альсу — всё чудесно. Скажете, не пульс виноват?

                Я не хочу настраивать всякие параметры энергосбережения и выполнять прочие танцы с бубном, чтобы заработало. Альса ведь работает безо всяких танцев.

                И ясен пень я не буду писать багрепорты про говно, которое мне на компьютере не нужно.
                • +1
                  Признаюсь, я не настоящий линуксоид, просто накладную бороду и вики арча нашёл.
                • 0
                  Блин, мне наверное с железом везёт или уши нафиг оттоптаны. Ни разу не шипел, кроме как в Skype.
                  • 0
                    И это единственное приложение, которое без него не может обойтись!
                    • 0
                      Я как-то мимо прошел. У меня основной канал коммуникации рабочей — электронная почта. Специфика научно-исследовательских проектов международных. Разница во времени и долгое время на получение промежуточных результатов.
            • +1
              Чтобы не троллить — чем глубже в десктопы, тем печальнее оно с точки зрения «переустановки». В смысле, наоборот. Мне никогда в голову не придёт «переустанавливать сервер» (если там кто-то не резвился в базе dpkg руками и не ломал в районе libc), а вот на десктопе иногда руки чешутся.

              Причина — крайне неочевидная комбинация общесистемных и пользовательских настроек, причём таких, при которых пользователь может менять общесистемные настройки без sudo (пример — network manager, который в /etc/NetworkManager/system-connection создаёт соединения, в которые пользователь веточкой потыкал).

              В какой-то момент может сложиться ситуация, что «на экране в qt-приложениях под gnome кракозябры и никто не понимает, почему».
              • 0
                За 6 лет без переустановки системы, пережившей смену четырёх десктопных окружений (KDE -> Gnome -> Xfce+CairoDock -> Unity), три умерших жёстких диска и две смены ноутбука (не помню какой ASUS -> T520 -> Dell M4800, перенос происходил перетыканием HDD или dd) проблемы были с 2 (двумя) вещами:
                1) Убунтовская обновлялка системы, считающая себя умнее всех (apt-get dist-upgrade хотя бы предупреждает обо всех своих действиях) и ломающая драйвера на видео
                2) PulseAudio

                Причём проблемы с пульсой не исчезали никогда.
                • 0
                  Могу предположить, что это траблы убунты. Т.к. в аналогичной ситуацие у меня возникали проблемы с Алсой, но никогда с Пульсом.
                  Скорее всего это связано с интерференцией прав доступа из гуи к настройкам аудио и настроек по умолчанию.
                  • 0
                    У вас нормально работает скайп? Без load-module module-udev-detect use_ucm=0 tsched=0 и default-fragments = 5/default-fragment-size-msec = 2 в настройках пульсы?
                    У вас нормально работает audacity? Без плясок с PULSE_LATENCY_MSEC?
                    У вас нормально работает wine? Без странных неподдерживаемых в основной ветке вайна патчей?
                    У вас никогда не ломается звук в других приложениях во время разговора по скайпу? В xfreerdp, например.

                    Если на все вопросы ответ да, то вы живёте в какой-то параллельной вселенной. Я пробовал на отдельный раздел ставить федору и арч — проблемы с пульсой там проявлялись.

                    #ПоттерингСломалЗвук
                    • 0
                      У вас нормально работает скайп? Без load-module module-udev-detect use_ucm=0 tsched=0 и default-fragments = 5/default-fragment-size-msec = 2 в настройках пульсы?
                      Да
                      У вас нормально работает audacity? Без плясок с PULSE_LATENCY_MSEC?
                      Да
                      У вас нормально работает wine? Без странных неподдерживаемых в основной ветке вайна патчей?
                      Да
                      У вас никогда не ломается звук в других приложениях во время разговора по скайпу? В xfreerdp, например.
                      Никогда

                      ArchLinux. Настройки PulseAudio все по умолчанию.
                      Что у вас за карта?
                      • 0
                        Если верить lshw, то «8 Series/C220 Series Chipset High Definition Audio Controller»
                    • 0
                      Да.Да.Да.Никогда.

                      и судя по соседнему коменту эта параллельная вселенная расшарена.
    • +27
      Hello, this is Linus Torvalds, and I pronounce PulseAudio as Pu.psh.sAddia...u..psh
    • +9
      Все правильно, включили шумоподавление — в колонках тишина.
  • –15
    О, тут филиал ЛОРа?
    Мне нужно пропатчить кде2...
  • +11
    Такой очень искренний совет для всех, кто собирается потом эту запись как-либо использовать: не включайте это в Audacity и тому подобном. Используйте подобное шумоподавление только в скайпе и прочих телефонах, больше нигде. Его очень хорошо слышно потом в записи, и оно звучит противно. Мне неоднократно приходилось просить людей перезписать звук, может быть, даже на той же самой технике, но без подобных шумодавов, иначе ну совсем неприлично получалось.

    Если очень уж неймётся, лучше записать сырой сигнал и потом попытаться обработать уже не в реальном времени. Так хотя бы будет несколько попыток. А ещё стандартные советы: используйте наушники, выключите стиральную машину, заглушите помещение (или поставьте микрофон в платяной шкаф — одежда отлично глушит отражения).

    Встроенные звуковухи имеют некоторый crosstalk. Это когда на вход попадает сигнал с выхода за счёт тех или иных эффектов. Кроме того, при воспроизведении естественно возникает больше шумов и от самого компьютера (надо же ему откуда-то брать музыку, значит он будет дёргать хранилищем). На встроенных картах шум этот иногда доходит до вполне слышимых значений, вроде -40 дБ. Так что поосторожнее с включением музыки.

    К сожалению, в текущей версии PulseAudio существует баг, из-за которого этот модуль работает только тогда, когда производится не только запись, но и воспроизведение. Скажем, в Skype, Mumble и прочих голосовых телефонах будет все сразу замечательно, а если вы заходите только записать звук, например, через audacity, то следует включить в нем какую-то музыку фоном, даже с минимальной громкостью.
    Если вы используете второй способ, убедитесь, что нужная вам программа воспроизводит аудио в sink с шумоподавлением, а не напрямую в аудиокарту. Перенести sink можно, например, через pavucontrol.

    Что-то мне кажется, что это никакой не баг, а вполне нормальное поведение. Судя по названию, мы не шумы давим, а эхо. Часто источник эха — тот же самый сигнал, который попал в компьютер через микрофон и потом воспроизведён через колонки, откуда обратно в микрофон по воздуху, уже с небольшой задержкой. Давая эходаву копию сигнала, идущего в воздух, мы подсказываем ему, что именно в сигнале мы считаем лишним.
    При отсутствии такой копии ему вообще логично просто не рабтать никак (ничего не подавлять и звук не изменять).

    Если шумы действительно давятся даже в отсутствии именно эхо-сигнала, это не эходав, и название echo-canceller не отражает сути фильтра. Вполне вероятно, что поттеринг опять смешал всё и приделал к эходаву и действительно шумодав, но это уже за гранью моего понимания.
    • +4
      Это действительно эходав и шумодав. И Поттеринг тут ни при чем, фильтр делал не он. Но это действительно баг — если мы подадим на воспроизведение тишину (/dev/null), то шумы начнут исчезать.
      • 0
        /dev/zero?
        • 0
          Да, прошу прощения, /dev/zero, конечно.
  • 0
    Не перестаю удивляться пульсе. У меня с чистым ALSA в QEmu — хрип и грохот, а вот через пульсу — шикарный звук) Кто б его знал, чому так)
  • 0
    Pulse вещь! Особенно для извращенцев вроде меня. Часто нужно прослушать файл на сервере консольной командой. Pulse -оказался идеальным решением для трансляции звука с сервера по сети на мой комп.
    • 0
      Вы можете сделать туннель и гонять звук прямо в него. У меня акустика подключена к серверу, на сервере PulseAudio, на лаптопе туннель до сервера. Видится, словно отдельная звуковая карта, на которую в любой момент можно переключить звук.
      • 0
        Проблема в том, что рабочий комп у меня работает под виндой и ваше решение скорей всего покачто не прокатит
  • 0
    А сталкивался ли кто с шумами в виде «ощущения повышенной нагрузки» (не знаю как описать, но будто выдающая аудиосистема захлебывается) при изменении настроек эквалайзера (повышение уровня басов) PulseAudio под Ubuntu Linux 14.04.
    Возможно, это как-то решается?
    • 0
      Вы имеете в виду clipping? Когда срезаются верхушки волны. Еще такой эффект используется совместно с электрогитарой. Вот тут информация www.youtube.com/watch?v=9PF32APSjrk
      • 0
        да, кажется, на это и похоже

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.