Можно ли в реальном времени удалять шум с помощью PulseAudio, чтобы выходной звуковой сигнал был более плавным?
module-echo-cancel
Я начал много читать о PulseAudio и его «скрытых» параметрах, чтобы я мог найти тот, который был похож на этот вопрос. Я нашел модуль шумоподавления, который значительно снижает любой статический шум на микрофоне и даже МНОГО фонового шума, в основном давая вам возможность записывать только собственный голос с отличным качеством (для записи звука например). Для этого выполните следующие действия:
sudo nano /etc/pulse/default.pa
Добавьте следующую строку в любом месте файла, но я рекомендую почти в конце, где вы найдете комментарий о материале для подавления эха ( ~ строка 140):
load-module module-echo-cancel
Перезагрузите 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. Конечный результат выглядит так:
ОБНОВЛЕНИЕ -Полная документация находится здесь Спасибо clément
Это старый вопрос,но у меня была та же проблема, и после некоторого поиска в 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
, перейдите на вкладку «Запись» и установите звуковое устройство, используемое для записи (отображается как серая кнопка справа ) в «Монитор петлевого аудиоустройства». Теперь у вас должна быть четкая и бесшумная запись!
На странице документации модуля нет информации о шумоподавлении. Внутри module-echo-cancel есть только алгоритм AEC (подавление акустического эха), который имеет несколько реализаций, например webrtc | speex.
Поэтому вы должны как можно больше покупать гарнитуру | микрофоны со встроенной функцией шумоподавления.
Во время тестирования записи голоса в ubuntu я обнаружил некоторые особенности:
Skype, Telegram по умолчанию использует исходный ввод устройство (в моем случае разъемы для микрофона на передней панели | разъемы на задней панели). Если вам нужно отключить шум в этих приложениях, вам следует покупать гарнитуры | микрофоны только со встроенной функцией шумоподавления
. Если вам нужно использовать голосовые вызовы в браузере, вы должны иметь в виду, что в браузерах есть собственные алгоритмы обработки голоса. реализации, например WebRTC.
Также веб-приложения (такие сайты, как Talky, Hangouts, появляться.in и т. Д.) Могут иметь собственные реализации алгоритмов обработки голоса, несмотря на то, что они могут быть основаны на webrtc Hangout-analysis
Вот, по крайней мере, тональный способ, реализовать 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 в конвейере многоканальной обработки ».
Исследование показало, что не существует известного способа сделать фильтрацию шума в реальном времени ни с одной из подсистем Linux. Некоторые сайты указывают на аппаратуру, которую вы можете купить и которая должна сделать трюк намного лучше, чем программный фильтр.
Альтернативно, если это для записи, вы можете передать звук через Audacity и использовать фильтр шума там.
Такое простое решение для 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
мой ноутбук 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
Надеюсь, кому-нибудь помогут