Можно ли в режиме реального времени удалять шум с помощью PulseAudio, чтобы выходной звуковой сигнал был более плавным?
sound
pulseaudio
noise
Вадим Перетокин
источник
источник
Ответы:
Pulseaudio модуль
module-echo-cancel
Я начал много читать о PulseAudio и «скрытых» опциях, которые у него были, поэтому я смог найти тот, который был похож на этот вопрос. Я обнаружил модуль шумоподавления, который значительно снижает любой статический шум на микрофоне и даже ОЧЕНЬ много фонового шума, в основном давая вам преимущество только в том, чтобы записывать свой голос с превосходным качеством (для записи звука например). Для этого выполните следующие действия:
sudo nano /etc/pulse/default.pa
Добавьте следующую строку в любом месте файла, но я рекомендую почти в конце, где вы найдете комментарий о материале Echo Cancellation (~ строка 140):
Перезагрузите PulseAudio (
pulseaudio -k
) или просто перезагрузите компьютер. Вы должны быть в состоянии выбрать новую опцию шумоподавления в разделе устройства ввода:Вы можете найти больше информации об этом на странице модуля Echo Cancel.
Установить вход по умолчанию
Если вы хотите установить по умолчанию устройство эхоподавления, просто превратите приведенную выше строку в:
а затем внизу файла добавить
В этом случае я назвал источник
logitechsource
, но вы можете назвать его как хотите и просто перезапустить pulseaudio.Переименовать устройство
Наконец, если вы не хотите, чтобы в настройках звука было слишком длинное имя (когда вы хотите выбрать устройство ввода / вывода). Мое предложение переименовывает устройство ввода следующим образом:
И снова перезапуск пульсаудио. Конечный результат выглядит так:
источник
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:
Это необходимо, потому что pulseaudio, в отличие от Джека, не может напрямую соединять аудио программное обеспечение; следовательно, мы будем использовать петлевое устройство в качестве прокси.
Теперь вам нужно запустить
paman
и найти имена как вашего микрофона (или другого записывающего устройства), так и петлевого устройства, которое мы только что создали. После того, как они найдены, вы можете выполнить следующую команду, чтобы начать запись звука с вашего микрофона, передать его через SoX и затем воспроизвести на петлевом устройстве:(Там, где вам необходимо подставить правильные имена устройств для параметров -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 притон-анализа
источник