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

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

125
задан 30 April 2016 в 02:02

7 ответов

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

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

  1. sudo nano /etc/pulse/default.pa

  2. Добавьте следующую строку в любом месте файла, но я рекомендую почти в конце, где вы найдете комментарий о материале для подавления эха ( ~ строка 140):

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

    screenshot

Вы можете найти дополнительную информацию об этом на странице модуля эхоподавления.

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

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

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. Конечный результат выглядит так:

screenshot

ОБНОВЛЕНИЕ -Полная документация находится здесь Спасибо clément

133
ответ дан 30 April 2016 в 02:02

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

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

. ] Затем вам нужно создать устройство обратной связи ALSA:

sudo modprobe snd_aloop

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

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

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 , перейдите на вкладку «Запись» и установите звуковое устройство, используемое для записи (отображается как серая кнопка справа ) в «Монитор петлевого аудиоустройства». Теперь у вас должна быть четкая и бесшумная запись!

17
ответ дан 30 April 2016 в 02:02

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

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

Во время тестирования записи голоса в ubuntu я обнаружил некоторые особенности:

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

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

  • Также веб-приложения (такие сайты, как Talky, Hangouts, появляться.in и т. Д.) Могут иметь собственные реализации алгоритмов обработки голоса, несмотря на то, что они могут быть основаны на webrtc Hangout-analysis

3
ответ дан 30 April 2016 в 02:02

Вот, по крайней мере, тональный способ, реализовать webrtc-aec в

http://wiki.gentoo.org/wiki/PulseAudio

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

Вот статья на эту тему от 2013 года (удаление шума с помощью pulseaudio, а не специально webrtc-aec) http://lac.linuxaudio.org/2013/papers/37.pdf

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

1
ответ дан 30 April 2016 в 02:02

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

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

1
ответ дан 30 April 2016 в 02:02

Такое простое решение для Ubuntu LTS или дистрибутивов на основе Debian это онлайн-скрипт, который активирует функцию шумоподавления, которая уже находится в импульсном аудио (аудио по умолчанию в debian).

wget -qO - https://gist.githubusercontent.com/grigio/cb93c3e8710a6f045a3dd9456ec01799/raw/94f07c7d75bcf5dd9b08a9c3034844223ec6fbe1/fix-microphone-background-noise.sh | sudo bash && pulseaudio -k

вы также можете запускать эти команды в разделе (это одно и то же)

sudo cp /etc/pulse/default.pa /etc/pulse/default.pa.bak
sudo cat <<EOT >> /etc/pulse/default.pa
load-module module-echo-cancel source_name=noechosource sink_name=noechosink
set-default-source noechosource
set-default-sink noechosink
EOT
1
ответ дан 5 January 2021 в 23:56

мой ноутбук AMD такая же проблема, код ниже отменить мой шум:

sudo nano /etc/pulse/default.pa

## add below code on bottom
### Enable Echo/Noise-Cancelation
load-module module-echo-cancel aec_method=webrtc aec_args="analog_gain_control=0 digital_gain_control=1" source_name=echoCancel_source sink_name=echoCancel_sink
set-default-source echoCancel_source
set-default-sink echoCancel_sink
### 2nd tips
.ifexists module-echo-cancel.so
load-module module-echo-cancel aec_method=webrtc source_name=echocancel sink_name=echocancel1
set-default-source echocancel
set-default-sink echocancel1
.endif

Надеюсь, кому-нибудь помогут

0
ответ дан 24 April 2021 в 04:00

Другие вопросы по тегам:

Похожие вопросы: