Установка

_x000D_apt-get install pipewire pipewire-pulse pipewire-audio-client-libraries wireplumber pulseaudio-utils

Удалить pulse

_x000D_apt-get purge pulseaudio_x000D_apt autoremove

Создайте папку для конфигов

_x000D_mkdir -p /etc/pipewire/pipewire.conf.d_x000D_mkdir -p /etc/pipewire/pipewire-pulse.conf.d

Анонимный сокет

Создайте файл /etc/pipewire/pipewire-pulse.conf.d/60-pulse-socket.conf

_x000D_context.modules = [_x000D_ {_x000D_ name = libpipewire-module-protocol-pulse_x000D_ args = {_x000D_ server.address = [_x000D_ "unix:/tmp/pulse-socket"_x000D_ ]_x000D_ }_x000D_ }_x000D_]_x000D_context.exec = [_x000D_ { path = "/bin/chmod" args = "777 /tmp/pulse-socket" }_x000D_]

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

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

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

В /etc/environment нужно добавить

_x000D_PULSE_SERVER=/tmp/pulse-socket

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

Создайте файл /etc/pipewire/pipewire-pulse.conf.d/60-usb-audio-echo-cancel.conf

_x000D_context.modules = [_x000D_ {_x000D_ name = libpipewire-module-echo-cancel_x000D_ args = {_x000D_ library.name = aec/libspa-aec-webrtc_x000D_ aec.args = {_x000D_ webrtc.gain_control = false_x000D_ webrtc.extended_filter = false_x000D_ webrtc.analog_gain_control = false_x000D_ webrtc.digital_gain_control = false_x000D_ #webrtc.experimental_agc = true_x000D_ #webrtc.noise_suppression = true_x000D_ }_x000D_ }_x000D_ }_x000D_]

Модуль echo cancel будет работать для микрофона выбранного по умолчанию.

Проверка звукового сервера

Проверить какой сервер сейчас работает можно командой

_x000D_LANG=C pactl info | grep '^Server Name'

Статус сервера:

_x000D_wpctl status

Перезапустить можно командой:

_x000D_systemctl --user restart pipewire

Скрипт переключения аудио сервера

Данный скрипт позволяет переключиться с pipewire на pulseaudio и наоборот без перезагрузки компьютера

_x000D_#!/bin/bash_x000D__x000D_RETVAL=0_x000D__x000D_case "$1" in_x000D__x000D_ pulse)_x000D_ systemctl --user disable pipewire_x000D_ systemctl --user disable pipewire-pulse_x000D_ systemctl --user disable pipewire.socket_x000D_ systemctl --user disable pipewire-pulse.socket_x000D_ systemctl --user stop pipewire_x000D_ systemctl --user stop pipewire-pulse_x000D_ systemctl --user stop pipewire.socket_x000D_ systemctl --user stop pipewire-pulse.socket_x000D_ _x000D_ systemctl --user enable pulseaudio.service_x000D_ systemctl --user enable pulseaudio.socket_x000D_ systemctl --user start pulseaudio.service_x000D_ systemctl --user start pulseaudio.socket_x000D_ _x000D_ LANG=C pactl info | grep '^Server Name'_x000D_ ;;_x000D_ _x000D_ pipewire)_x000D_ pulseaudio -k_x000D_ _x000D_ systemctl --user disable pulseaudio.service_x000D_ systemctl --user disable pulseaudio.socket_x000D_ systemctl --user stop pulseaudio.service_x000D_ systemctl --user stop pulseaudio.socket_x000D_ _x000D_ systemctl --user enable pipewire_x000D_ systemctl --user enable pipewire-pulse_x000D_ systemctl --user enable pipewire.socket_x000D_ systemctl --user enable pipewire-pulse.socket_x000D_ systemctl --user start pipewire_x000D_ systemctl --user start pipewire-pulse_x000D_ LANG=C pactl info | grep '^Server Name'_x000D_ ;;_x000D_ _x000D_ *)_x000D_ echo "Usage: $0 {pulse|pipewire}"_x000D_ RETVAL=1_x000D__x000D_esac_x000D__x000D_exit $RETVAL_x000D_