Проблемы с Pulseaudio: модуль module-echo-cancel не устраняет звук

Вопрос или проблема

ИЗМЕНЕНИЕ: Хорошо, похоже, это работает… вроде как… иногда отмена срабатывает, а иногда нет в рамках одного вызова. Это не решено, было бы здорово получить дополнительную информацию.


2-е ИЗМЕНЕНИЕ: Я написал в IRC Pulseaudio, надеюсь, получу некоторые советы по этой настройке.


У меня есть pulseaudio, загружающий модуль-echo-cancel, и, похоже, он не работает должным образом, или работает, а я что-то делаю не так… Честно говоря, у меня нет способа подтвердить, что именно является моей первой проблемой.

Моя архитектура довольно проста, у меня есть машина с Windows 10, к которой я подключаюсь через RDP с Linux.

Источник по умолчанию:

  • ATR (с отменой эха по HDMI)

Выход по умолчанию:

  • HDMI (с отменой эха на ATR)

Не думаю, что удалённый доступ повлияет на отмену, так как она всё равно обрабатывается локально от динамиков HDMI непосредственно в микрофон, оба из которых являются локальными устройствами.

Вот как я загружаю module-echo-cancel в ~/.config/pulse/default.pa, и я могу только предполагать, что он загружается, поскольку я вижу устройства (как указано выше) в pasystray.

.ifexists module-echo-cancel.so
load-module module-echo-cancel source_master=alsa_input.usb-Conference_USB_microphone_ATR4697-USB-00.mono-fallback sink_master=alsa_output.pci-0000_00_03.0.hdmi-stereo source_name=echocancel sink_name=echocancel1
set-default-source echocancel
set-default-sink echocancel1
.endif

Есть ли какие-то дополнительные настройки, которые мне нужно учесть, или это должно работать сразу из коробки? Я не вижу ничего в руководстве, что могло бы быть релевантным.

Насколько я понимаю, вы собираетесь проводить голосовой чат на вашем компьютере с PulseAudio под управлением Linux, используя:

  • USB-микрофон в качестве источника аудио, и
  • HDMI в качестве выхода аудио.

Выход HDMI воспроизводится через динамики, и вы хотите предотвратить попадание звука с динамиков обратно в ваш микрофон во время звонков.

Я не думаю, что часть с RDP имеет значение для этой проблемы.

Да, PulseAudio должен уметь это делать. Источник: личный опыт с аналогичной настройкой. В частности, я использую USB-веб-камеру и аналоговый выход на аудиосистему высокого качества для голосовых и видеозвонков, и это работает так хорошо, что я могу играть в кооперативные многопользовательские игры с другими без необходимости в наушниках.

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

Как я понимаю, конфигурация default.pa обрабатывается при запуске PulseAudio. Если USB-микрофон присутствует в этот момент времени, то он должен работать. Если его нет, или если вы его отключаете, я предполагаю, что модуль отмены эха не загружается / выгружается, потому что нет источника мастера, и он не перезагружается автоматически, когда вы снова подключаете USB-устройство.

Так что, возможно, вам нужно какое-то пользовательское демоническое приложение, которое реагирует на то, что USB-микрофон снова доступен, и затем повторно применяет отмену эха.

(Отказ от ответственности: Продвижение собственного продукта)

Я не нашёл такого демона, поэтому я написал один сам, pulse-autoconf.

На данный момент он упакован только для Arch Linux.

Мне удалось успешно запустить его на компьютере с Ubuntu 20.04, вручную скопировав скрипт и другие файлы на этот компьютер в ожидаемые директории. Единственное известное, что не работает, это его удобная функция для вывода табличного представления текущих выходов и источников, потому что Ubuntu поставляет другую программу column, чем Arch.

Это может работать для вас, а может и нет. В любом случае его веб-страница может предоставить вам дополнительную информацию о PulseAudio и отмене эха.

Ответ или решение

Проблема с модулем module-echo-cancel в PulseAudio и его неэффективным подавлением эха может быть действительно сложной, особенно в условиях использования нескольких устройств ввода и вывода. Давайте разберемся с вашей ситуацией и попытаемся найти решение.

1. Проверка конфигурации

Убедитесь, что ваша конфигурация в файле ~/.config/pulse/default.pa загружается правильно. Использование следующих команд в терминале поможет вам выяснить состояние модулей PulseAudio:

pactl list modules

Проверьте, что module-echo-cancel загружен и активен. Если его нет в списке, попробуйте перезапустить PulseAudio с помощью следующих команд:

pulseaudio -k
pulseaudio --start

2. Убедитесь в доступности устройств

Проверьте, что все указанные вами источники и приемники (source и sink) доступны в момент загрузки конфигурации. Выполните команду:

pactl list sources
pactl list sinks

Убедитесь, что имена, указанные в вашем файле default.pa, совпадают с действительными именами устройств.

3. Мониторинг эха

Проблема, с которой вы сталкиваетесь, может быть вызвана тем, что модуль подавления эха не всегда может достаточно быстро адаптироваться к изменениям в аудио-сигнале. Попробуйте увеличить параметры адаптации модуля module-echo-cancel. Например, вы можете настроить следующие параметры:

load-module module-echo-cancel source_master=alsa_input.usb-Conference_USB_microphone_ATR4697-USB-00.mono-fallback sink_master=alsa_output.pci-0000_00_03.0.hdmi-stereo source_name=echocancel sink_name=echocancel1 aec_method=webrtc aec_args="beamforming=1"

Здесь aec_method=webrtc указывает на использование метода подавления эха WebRTC, который может быть более эффективным в некоторых сценариях.

4. Рабочий процесс и автоматизация

Как вы уже поняли, экранирование может быть случайным, если микрофон подключается или отключается. Рекомендуется действительно использовать демон, который будет автоматически загружать module-echo-cancel, когда ваш микрофон становится доступным. Вы написали, что разработали такой демон. Обязательно протестируйте его и заявите о любых ошибках, которые могут возникнуть.

5. Альтернативные подходы и рекомендации

Если вы по-прежнему сталкиваетесь с проблемами, рассмотрите возможность использования программного обеспечения для управления звуком, которое может предоставлять более гибкие настройки для управления эхо и шумоподавлением. Альтернативные проекторы, такие как JACK, могут предоставить расширенные возможности маршрутизации звука, что в некоторых случаях может быть полезнее, чем использование PulseAudio.

В заключение, если у вас есть доступ к альтернативным устройствам или вы можете протестировать свою настройку в другом программном окружении, сделайте это. Это поможет сузить круг возможных причин проблемы. Надеюсь, эти рекомендации помогут вам достичь стабильного подавления эха при использовании module-echo-cancel.

Оцените материал
Добавить комментарий

Капча загружается...