Можно ли в режиме реального времени удалять шум с помощью PulseAudio, чтобы выходной звуковой сигнал был более плавным?
Можно ли в режиме реального времени удалять шум с помощью PulseAudio, чтобы выходной звуковой сигнал был более плавным?
Ответы:
module-echo-cancel
Я начал много читать о PulseAudio и «скрытых» опциях, которые у него были, поэтому я смог найти тот, который был похож на этот вопрос. Я обнаружил модуль шумоподавления, который значительно снижает любой статический шум на микрофоне и даже ОЧЕНЬ много фонового шума, в основном давая вам преимущество только в том, чтобы записывать свой голос с превосходным качеством (для записи звука например). Для этого выполните следующие действия:
sudo nano /etc/pulse/default.pa
Добавьте следующую строку в любом месте файла, но я рекомендую почти в конце, где вы найдете комментарий о материале Echo Cancellation (~ строка 140):
load-module module-echo-cancel
Перезагрузите PulseAudio ( pulseaudio -k
) или просто перезагрузите компьютер. Вы должны быть в состоянии выбрать новую опцию шумоподавления в разделе устройства ввода:
Вы можете найти больше информации об этом на странице модуля Echo Cancel.
Если вы хотите установить по умолчанию устройство эхоподавления, просто превратите приведенную выше строку в:
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
И снова перезапуск пульсаудио. Конечный результат выглядит так:
load-module module-echo-cancel aec_method=webrtc aec_args="analog_gain_control=0 digital_gain_control=1"
в соответствии с gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/224
Это старый вопрос, но у меня была та же проблема, и после некоторого поиска в Google (где я в основном находил людей, которые согласились, что это невозможно), и, читая некоторые справочные страницы, я теперь разработал решение, основанное на идее user2330377.
Сначала вам нужно создать шумовой профиль для 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
, перейдите на вкладку «Запись» и установите аудиоустройство, используемое для записи (отображается серой кнопкой справа), на «Монитор Loopback Audio». Прибор». Теперь у вас должна быть чистая и бесшумная запись!
Расследование показывает, что не существует известного способа фильтрации шума в реальном времени с какой-либо подсистемой Linux. Некоторые веб-сайты указывают на аппаратное обеспечение, которое вы можете купить, которое должно работать лучше, чем программный фильтр.
В качестве альтернативы, если это для записи, вы можете пропустить звук через Audacity и использовать там шумовой фильтр.
module-echo-cancel
, который имеет несколько реализаций, например webrtc | Speex.
Вот как минимум, реализовать webrtc-aec в
http://wiki.gentoo.org/wiki/PulseAudio
webrtc-aec Да Использует библиотеку аудиообработки webrtc.org для значительного улучшения VoIP-вызовов в приложениях, которые поддерживают ее, выполняя акустическое эхоподавление, аналоговое управление усилением, подавление шума и другую обработку.
Вот статья на эту тему от 2013 года (устранение шума с помощью pulseaudio, а не webrtc-aec) http://lac.linuxaudio.org/2013/papers/37.pdf
«Мы представили первые результаты многоканального решения по снижению шума / эха, построенного на основе PulseAudio и мотивированного проектными решениями. Работа привела к ряду улучшений в структуре эхоподавления и обработки сигналов PulseAudio, которые были участвовал в цикле разработки версии 3.0 / 4.0 и должен способствовать будущим встроенным аудио-решениям Linux. Дальнейшая работа включает в себя оптимизацию кода для микширования аудиопотока, более эффективные методы повторной дискретизации и внедрение эффективного AEC в многоканальном конвейере обработки ».
На странице документации модуля нет информации о подавлении шума. Внутри модуля echo-cancel есть только алгоритм AEC (Acoustic Echo Cancellation), который имеет несколько реализаций, например webrtc | Speex.
Поэтому вы должны купить гарнитуру | микрофоны со встроенной функцией шумоподавления.
Когда я тестировал запись голоса в Ubuntu, я обнаружил некоторые особые качества:
Skype, Telegram использует необработанный ввод с устройства по умолчанию (в моем случае разъемы front-in-mic | backward-mic). Если вам нужно отменить шум в этих приложениях, вам следует покупать гарнитуры | микрофоны только с интегрированной функцией шумоподавления
Если вам нужно использовать голосовые вызовы в браузере, то вы должны иметь в виду, что браузеры имеют свои собственные реализации алгоритмов обработки голоса, например, WebRTC.
Также веб - приложения ( такие сайты , как Talky, Hangouts, appear.in и т.д.) может иметь это собственные реализации алгоритмов обработки речи, несмотря на то , что они могут быть основаны на WebRTC притон-анализа