Удаление шума в реальном времени с помощью PulseAudio?

38

Можно ли делать шумоподавление в реальном времени с помощью PulseAudio, поэтому выход звука, который выходит, более плавный?

    
задан Vadi 27.12.2010 в 03:46
источник

5 ответов

37

Модуль Pulseaudio module-echo-cancel

Я начал много читать о PulseAudio и "скрытых" вариантах, которые у меня были, поэтому я мог найти тот, который был похож на этот вопрос. Единственным, что я нашел, был модуль шумоподавления, который значительно снижает любой статический шум на микрофоне и даже МНОГО фонового шума, в основном предоставляя вам возможность записывать собственный голос с отличным качеством (для записи звука например). Для этого выполните следующие действия:

  1. <р> sudo nano /etc/pulse/default.pa
  2. Добавьте следующую строку в любом месте файла, но я рекомендую почти в конце, где вы найдете комментарий об Echo Cancellation stuff (~ строка 140):

    load-module module-echo-cancel
    
  3. Обновить PulseAudio ( pulseaudio -k ) или просто перезагрузить компьютер. Вы должны иметь возможность выбрать новую функцию "Подавление помех" в разделе "Входные устройства":

Дополнительную информацию об этом можно найти на странице страницы эхо-отмена

Установить ввод по умолчанию

Если вы хотите установить по умолчанию , устройство отмены эха просто перевернет указанную выше строку в

load-module module-echo-cancel source_name=logitechsource

, а затем в нижней части файла добавьте

set-default-source logitechsource

В этом случае я назвал источник logitechsource , но вы можете назвать его как хотите и просто перезапустить pulseaudio.

Переименовать устройство

Наконец, если вы не хотите иметь супер длинное имя в настройках звука (если вы хотите выбрать устройство ввода / вывода). Мое предложение переименовывает устройство ввода следующим образом:

load-module module-echo-cancel source_name=logitechsource source_properties=device.description=LogitechHD

И снова перезапустим pulseaudio. Конечный результат выглядит следующим образом:

    

ответ дан Luis Alvarado 29.04.2016 в 17:41
источник
10

Это старый вопрос, но у меня была такая же проблема, и после некоторого Googling (где я в основном нашел людей, которые согласились, что это было невозможно) и прочитав некоторые справочные страницы, я теперь разработал решение, основанное на идее пользователя2330377.

Сначала вам нужно создать профиль шума для SoX. Просто используйте любую программу записи звука, чтобы записать несколько секунд шума, затем cd в каталог, в который вы его сохранили, и выполните sox noise.wav -n noiseprof noise.prof .

Затем вам нужно создать loopback-устройство ALSA:

sudo modprobe snd_aloop

Это требуется, потому что pulseaudio, в отличие от Jack, не может напрямую подключать аудио программное обеспечение; поэтому мы будем использовать loopback-устройство как прокси-сервер.

Теперь вам нужно запустить paman и найти имена как вашего микрофона (или другого записывающего устройства), так и созданного нами кольцевого устройства. Как только они будут найдены, вы можете выполнить следующую команду, чтобы начать запись звука с вашего микрофона, проложить его через SoX, а затем воспроизвести его на устройстве loopback:

pacat -r -d alsa_input.pci-0000_00_14.2.analog-stereo --latency=1msec|sox -b 16 -e signed -c 2 -r 44100 -t raw - -b 16 -e signed -c 2 -r 44100 -t raw - noisered noise.prof 0.2|pacat -p -d alsa_output.2.analog-stereo --latency=1msec

(Если вам нужно подставить правильные имена устройств для параметров -d - устройство ввода для первого вызова pacat и выходное устройство loopback для второго.)

Там вы идете, почти закончили! В качестве последнего шага начните запись звука с помощью вашего приложения, затем запустите pavucontrol , перейдите на вкладку «Запись» и установите аудиоустройство, используемое для записи (отображается как серая кнопка справа), на «Монитор звукового устройства Loopback ». Теперь вы должны иметь четкую и бесшумную запись!

    
ответ дан cemper93 12.04.2015 в 02:50
3

Исследование показывает, что нет известного способа фильтрации фильтрации шумов в реальном времени с любой подсистемой Linux. Некоторые веб-сайты указывают на аппаратное обеспечение, которое вы можете купить, что должно сделать трюк намного лучше, чем делать программный фильтр.

В качестве альтернативы, если это для записи, вы можете передать звук через Audacity и использовать там фильтр шума.

    
ответ дан Martin Owens -doctormo- 08.01.2011 в 02:24
1

Ниже приведено тонирование, реализуем webrtc-aec в

Ссылка

webrtc-aec Да Использует библиотеку аудиопроцессора webrtc.org для интенсивного VoIP-вызовов в приложениях, которые поддерживают его, выполняя акустическое эхоподавление, аналоговое управление усилением, подавление шума и другую обработку.

Вот документ, датированный 2013 годом по этому вопросу (удаление шума с помощью pulseaudio not webrtc-aec специально) Ссылка

«Мы представили первые результаты многоканального решения по снижению шума / эха, построенного на топ PulseAudio и мотивировал дизайнерские решения. Результатом этой работы стало несколько улучшений в структуре эхоподавления и обработки сигналов PulseAudio, которые были внесены во время цикла разработки версии 3.0 / 4.0 и должны способствовать будущим встроенным аудио решениям Linux. Дальнейшая работа включает в себя оптимизирующий код для микширования аудиопотоков, более древние методы передискретизации и реализацию эффективной AEC в многоканальном конвейере обработки ».

    
ответ дан user2330377 22.06.2013 в 17:52
0

На странице документации модуля нет информации о шумоподавлении. В модуле-эхо-отмене есть только алгоритм AEC (Acoustic Echo Cancellation), который имеет несколько реализаций, таких как webrtc | Speex.

Поэтому вы должны максимально использовать микрофоны со встроенной функцией шумоподавления.

Когда я тестировал запись голоса в ubuntu, я обнаружил некоторые особенности:

  • Skype, Telegram использует исходный ввод с устройства по умолчанию (в моем случае фронтальные микрофонные разъемы back-mic). Если вам нужно отменить шум в этих приложениях, вы должны покупать наушники только с интегрированной функцией шумоподавления

  • Если вам нужно использовать голосовые вызовы в браузере, тогда вы должны иметь в виду, что в браузерах есть свои собственные алгоритмы обработки голосовой обработки, например. WebRTC.

  • Кроме того, веб-приложения (такие как talky, hangouts, seem.in и т. д.) могут иметь собственные реализации алгоритмов обработки голоса, несмотря на то, что они могут быть основаны на webrtc hangout-analysis

ответ дан vskubriev 14.02.2018 в 09:35