Можно ли делать шумоподавление в реальном времени с помощью PulseAudio, поэтому выход звука, который выходит, более плавный?
Можно ли делать шумоподавление в реальном времени с помощью PulseAudio, поэтому выход звука, который выходит, более плавный?
module-echo-cancel
Я начал много читать о PulseAudio и "скрытых" вариантах, которые у меня были, поэтому я мог найти тот, который был похож на этот вопрос. Единственным, что я нашел, был модуль шумоподавления, который значительно снижает любой статический шум на микрофоне и даже МНОГО фонового шума, в основном предоставляя вам возможность записывать собственный голос с отличным качеством (для записи звука например). Для этого выполните следующие действия:
sudo nano /etc/pulse/default.pa
р> Добавьте следующую строку в любом месте файла, но я рекомендую почти в конце, где вы найдете комментарий об Echo Cancellation stuff (~ строка 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. Конечный результат выглядит следующим образом:
Это старый вопрос, но у меня была такая же проблема, и после некоторого 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 ». Теперь вы должны иметь четкую и бесшумную запись!
Исследование показывает, что нет известного способа фильтрации фильтрации шумов в реальном времени с любой подсистемой Linux. Некоторые веб-сайты указывают на аппаратное обеспечение, которое вы можете купить, что должно сделать трюк намного лучше, чем делать программный фильтр.
В качестве альтернативы, если это для записи, вы можете передать звук через Audacity и использовать там фильтр шума.
Ниже приведено тонирование, реализуем webrtc-aec в
webrtc-aec Да Использует библиотеку аудиопроцессора webrtc.org для интенсивного VoIP-вызовов в приложениях, которые поддерживают его, выполняя акустическое эхоподавление, аналоговое управление усилением, подавление шума и другую обработку. Р>
Вот документ, датированный 2013 годом по этому вопросу (удаление шума с помощью pulseaudio not webrtc-aec специально) Ссылка
«Мы представили первые результаты многоканального решения по снижению шума / эха, построенного на топ PulseAudio и мотивировал дизайнерские решения. Результатом этой работы стало несколько улучшений в структуре эхоподавления и обработки сигналов PulseAudio, которые были внесены во время цикла разработки версии 3.0 / 4.0 и должны способствовать будущим встроенным аудио решениям Linux. Дальнейшая работа включает в себя оптимизирующий код для микширования аудиопотоков, более древние методы передискретизации и реализацию эффективной AEC в многоканальном конвейере обработки ».
На странице документации модуля нет информации о шумоподавлении. В модуле-эхо-отмене есть только алгоритм AEC (Acoustic Echo Cancellation), который имеет несколько реализаций, таких как webrtc | Speex.
Поэтому вы должны максимально использовать микрофоны со встроенной функцией шумоподавления.
Когда я тестировал запись голоса в ubuntu, я обнаружил некоторые особенности:
Skype, Telegram использует исходный ввод с устройства по умолчанию (в моем случае фронтальные микрофонные разъемы back-mic). Если вам нужно отменить шум в этих приложениях, вы должны покупать наушники только с интегрированной функцией шумоподавления
Если вам нужно использовать голосовые вызовы в браузере, тогда вы должны иметь в виду, что в браузерах есть свои собственные алгоритмы обработки голосовой обработки, например. WebRTC.
Кроме того, веб-приложения (такие как talky, hangouts, seem.in и т. д.) могут иметь собственные реализации алгоритмов обработки голоса, несмотря на то, что они могут быть основаны на webrtc hangout-analysis