Настройки pulseaudio

Общий доступ к pulseaudio

Если вы хотите просто передать звук второму пользователю, например, запустить программу через kdesudo, то отлично подойдет данный способ, и не нужно будет включать system wide mode у pulseaudio.

Создайте файл

nano /etc/pulse/default.pa.d/pulse-socket.pa

load-module module-native-protocol-unix auth-anonymous=1 socket=/tmp/pulse-socket

На другом пользователе в файле

nano /home/otheruser/.config/pulse/client.conf

default-server = unix:/tmp/pulse-socket

Поменять лево и право

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

nano /etc/pulse/default.pa.d/swap-left-right.pa

load-module module-remap-sink sink_name=reverse-stereo master=0 channels=2 master_channel_map=front-right,front-left channel_map=front-left,front-right

Убрать шум микрофона

1) Настройка конфига

Во первых вам нужно узнать название микрофона через команду

pacmd list-sources | grep name:

Создайте файл

nano /etc/pulse/default.pa.d/remove-microphone-noise.pa

# Remove microphone noise
load-module module-echo-cancel source_master='НАЗВАНИЕ_УСТРОЙСТВА' aec_method=webrtc format=s16le rate=48000 channels=2 aec_args="analog_gain_control=0"

Если у вас несколько устройств, то нужно добавить несколько записей. После подключения микрофона, нужно выполнить команду:

pulseaudio -k

2) Настройка udev.

Настройки udev не работают. А жаль :(

Т.к. микрофон может включаться или отключаться через USB порт, то нужно настроить автоматическое подключение module echo cancel для конкретного микрофона

С помощью команды мониторинга события udev нужно узнать ID_MODEL

udevadm monitor --environment --udev

Вставьте значения в файл, вместо ИД_МОДЕЛИ и НАЗВАНИЕ_УСТРОЙСТВА. Название устройства должно быть без скобок

nano /etc/udev/rules.d/99-microphone.rules

ACTION=="change", SUBSYSTEM=="sound", ENV{ID_TYPE}=="audio", ENV{ID_MODEL}=="ИД_МОДЕЛИ", ENV{PULSE_SERVER}="unix:/tmp/pulse-socket", RUN+="/usr/bin/pactl load-module module-echo-cancel source_master='НАЗВАНИЕ_УСТРОЙСТВА' aec_method=webrtc format=s16le rate=48000 channels=2 aec_args='analog_gain_control=0'"

Также, вам нужно убедиться что доступен /tmp/pulse-socket

Затем нужно перезагрузить команды udev

udevadm control --reload-rules

Для каждого подключаемого микрофона вам нужно задать свои параметры

Также рекомендуется запустить команду

pactl load-module module-echo-cancel source_master='НАЗВАНИЕ_УСТРОЙСТВА' aec_method=webrtc format=s16le rate=48000 channels=2 aec_args='analog_gain_control=0'

И убедится, что она работает без ошибок. Возможно нужно убрать какие-то параметры. Например, если микрофон моно, то параметр channels=2 не нужен.

После настроек, отключите из USB микрофон и включите его заново. У вас должен появится новое устройство echo cancel для этого микрофона

pacmd list-sources | grep name: