PulseAudio (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи PulseAudio. Дата последней синхронизации: 2 октября 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

PulseAudio — это многофункциональный звуковой сервер, предназначенный для работы в качестве прослойки между приложениями и аппаратными устройствами через ALSA или OSS. Он также с лёгкостью может передавать аудио по сети между локальными устройствами, используя Avahi, если тот доступен. Несмотря на то, что основная цель заключена в простоте настройки звука, его модульная архитектура позволяет более опытным пользователям настраивать демон в соответствии со своими нуждами.

Примечание: Между ALSA и PulseAudio может возникнуть путаница. В состав ALSA входят компонент ядра Linux с драйверами звуковых карт и библиотека libasound, работающая в пространстве пользователя.[1] PulseAudio работает поверх компонентов ядра, но обеспечивает совместимость с libasound через pulseaudio-alsa.[2]

Установка

Установите пакет pulseaudio.

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

Интерфейсы

Существует множество интерфейсов для управления демоном PulseAudio:

Консольные

  • ncpamixer — Микшер на базе ncurses, вдохновлённый pavucontrol.
https://github.com/fulhax/ncpamixer || ncpamixerAUR
  • pacmixer — Микшер, похожий на Alsamixer.
https://github.com/KenjiTakahashi/pacmixer || pacmixerAUR
  • PAmix — Микшер на базе ncurses, похожий на to pavucontrol.
https://github.com/patroclos/PAmix || pamix-gitAUR
  • pamixer — Интерфейс командной строки.
https://github.com/cdemoulins/pamixer || pamixer
  • pavolume — Простой регулятор громкости командной строки с сообщениями libnotify.
https://github.com/sseemayer/pavolume || pavolume-gitAUR
  • Ponymix — Интерфейс командной строки.
https://github.com/falconindy/ponymix || ponymixAUR
  • pulseaudio-ctl — Управление громкостью PulseAudio из командной оболочки или с помощью сочетаний клавиш.
https://github.com/graysky2/pulseaudio-ctl || pulseaudio-ctlAUR
  • pulsemixer — Микшер CLI и curses.
https://github.com/GeorgeFilipkin/pulsemixer || pulsemixer

Графические

  • KMixKDE-приложение для регулировки громкости, поддерживающее несколько платформ, в том числе PulseAudio, настраиваемый апплет в системном трее.
https://apps.kde.org/kmix/ || kmix
  • MicTray — Лёгкое приложение для системного трея, позволяющее управлять состоянием и громкостью микрофона с помощью PulseAudio.
https://github.com/Junker/MicTray || mictrayAUR
  • pa-applet — Апплет системного трея с панелью громкости.
https://github.com/fernandotcl/pa-applet || pa-applet-gitAUR
  • pasystray — Апплет системного трея.
https://github.com/christophgysin/pasystray || pasystray
  • plasma-pa — Апплет KDE Plasma для управления громкостью звука с помощью PulseAudio
https://invent.kde.org/plasma/plasma-pa || plasma-pa
  • PulseAudio Equalizer — Многополосный эквалайзер на основе LADSPA.
https://github.com/pulseaudio-equalizer-ladspa/equalizer || pulseaudio-equalizer-ladspa
  • PulseAudio Graph Control — Интерфейс управления громкостью и графом, основанный на Electron.
https://github.com/futpib/pagraphcontrol#readme || pagraphcontrol-gitAUR
  • PulseAudio Manager — Простой GTK фронтенд. Разработка прекращена.
http://0pointer.de/lennart/projects/paman/ || pamanAUR
  • PulseAudio Preferences — Простой диалог конфигурации GTK.
https://freedesktop.org/software/pulseaudio/paprefs/ || paprefs
  • PulseAudio Volume Control — Простой GTK-инструмент управления громкостью («микшер»).
https://freedesktop.org/software/pulseaudio/pavucontrol/ || pavucontrol
  • PulseAudio Volume Control (Qt) — Микшер для PulseAudio (Qt-порт pavucontrol).
https://github.com/lxqt/pavucontrol-qt || pavucontrol-qt
  • PulseAudio Volume Control (Sandsmark) — Лёгкий форк pavucontrol из LXQt, в котором реализованы недостающие функции pavucontrol, исправлены ошибки и удалены ненужные зависимости.
https://github.com/sandsmark/pavucontrol-qt || pavucontrol-qt-sandsmark-gitAUR
  • PulseAudio Volume Meter — Простой GTK-измеритель громкости для PulseAudio. Разработка прекращена.
http://0pointer.de/lennart/projects/pavumeter/ || pavumeterAUR
  • PulseEffects — Аудиоэффекты для приложений PulseAudio.
https://github.com/wwmm/easyeffects/tree/pulseaudio-legacy || pulseeffects-legacyAUR
  • Volctl — Апплет для управления громкостью отдельных приложений.
https://buzz.github.io/volctl/ || volctlAUR
  • Xfce PulseAudio Panel Plugin — Плагин PulseAudio для панели Xfce 4.
https://goodies.xfce.org/projects/panel-plugins/xfce4-pulseaudio-plugin || xfce4-pulseaudio-plugin
  • pa-notify — Демон уведомления о громкости для PulseAudio или PipeWire.
https://github.com/ikrivosheev/pa-notify || pa-notifyAUR

Настройка

По умолчанию PulseAudio настроен на автоматическое обнаружение всех звуковых карт и управление ими. Он берёт под свой контроль все обнаруженные устройства ALSA и перенаправляет все аудиопотоки на себя, делая демон PulseAudio центральной точкой настроек. Демон, в основном, должен работать «из коробки», требуя только нескольких незначительных изменений настроек.

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

PulseAudio работает как демон сервера, который может работать как общесистемно, так и отдельно для каждого пользователя, с помощью архитектуры клиент/сервер. Без своих модулей демон сам по себе ничего не делает, кроме обеспечения API и размещения динамически загружаемых модулей. Вся маршрутизация аудио и обработка задач обрабатывается различными модулями, в том числе сам протокол PulseAudio (реализуется модулем module-native-protocol-unix). Клиенты обращаются к серверу через один из модулей протоколов, которые принимают звук из внешних источников, направляют его через PulseAudio и в конечном итоге выводят через другой модуль. Модуль вывода не обязательно должен быть фактическим звуковым выходом: он может записывать аудиопоток в файл, передавать его на сервер вещания, такой как Icecast, или даже просто отбрасывать его.

Вы можете найти подробный список всех доступных модулей в Загружаемые Модули Pulseaudio (Англ.). Чтобы включить их, Вы можете добавить строку load-module имя-модуля-из-списка в ~/.config/pulse/default.pa.

Файлы настроек

PulseAudio будет сначала смотреть файлы настроек в домашнем каталоге ~/.config/pulse/, а если не найдёт их там, то в общесистемном /etc/pulse/.

Совет:
  • Настоятельно советуем не редактировать общесистемные файлы настроек, вместо них редактируйте пользовательские. Создайте каталог ~/.config/pulse, затем скопируйте (cp /etc/pulse/ ~/.config/pulse) файлы настроек системы в него, и редактируйте согласно Вашим требованиям.
  • Убедитесь, что Вы держите пользовательские настройки в синхронизации с изменениями в пакетных файлах /etc/pulse/. Иначе, PulseAudio может отказаться запускаться из-за ошибки в настройках.
  • Нет необходимости добавлять Вашего пользователя к группе audio, поскольку он использует udev и logind для динамичного предоставления доступа к "в настоящее время активному" пользователю. Исключение составляют клиентские (headless) машины, в которых нет понятия текущий "активный" пользователь.

daemon.conf

Это основной файл для настройки демона. Он определяет основные настройки, такие как: частоты дискретизации по умолчанию, используемые модулями, методы повторной выборки, планирование в реальном времени, и другие различные настройки, связанные с серверным процессом. Они не могут быть изменены на лету без перезапуска демона PulseAudio. Значения по умолчанию подходят для большинства пользователей. Дополнительная информация доступна в man-странице pulse-daemon.conf(5). Boolean-опции принимают такие значения: true, yes, on и 1 — истина; false, no, off и 0 — ложь.

Примечание: PulseAudio не поддерживает использование тильды (~) в описании путей в этом файле. Используйте абсолютные пути для любых файлов.
Опция Описание
daemonize Управляет тем, будет ли сервер переходить в режим демона и возвращать управление. Установите значение no при отладке, чтобы вы могли видеть отладочную информацию в терминале.
resample-method Какой метод частоты дискретизации (resampler) использовать, когда звук с несовместимыми частотами дискретизации должен быть передан между модулями (например, воспроизведение звука на 96 кГц на аппаратном обеспечении, поддерживающим только 48 кГц). Список доступных resampler'ов можно посмотреть с помощью команды $ pulseaudio --dump-resample-methods. Выберите и используйте лучший компромисс между загрузкой процессора и качеством звука.
Совет: В некоторых случаях PulseAudio будет генерировать высокую нагрузку на процессор. Это может произойти, когда несколько потоков передискретизируются (индивидуально). Если такая ситуация возникает часто, стоит подумать о создании дополнительного устройства вывода (sink) с соответствующей частотой дискретизации, аудиопоток из которого затем будет передан в основное устройство вывода (main sink), благодаря чему передискретизация будет выполняться только один раз.
avoid-resampling Со значением avoid-resampling = yes PulseAudio автоматически настроит частоту дискретизации оборудования в соответствии с той, которую использует приложение, если оборудование её поддерживает (необходим PA 11 или новее)
Важно: Включение этой функции может привести к искажению звука, поэтому по умолчанию она отключена. Подробнее в примечаниях к выпуску.
enable-remixing Когда вход и выход имеют разное количество каналов (например, вывод 6-канального фильма в стереовывод), PulseAudio может либо перемикшировать все каналы (по умолчанию, yes), либо просто тривиально сопоставить каналы по их названию (левый идет к левому, правый к правому, все остальные игнорируются) (no)
system-instance Если yes, то демон будет запускаться как как общесистемный экземпляр. Крайне нежелательно, поскольку это может привести к проблемам безопасности. Полезно в системах с несколькими пользователями и (headless) системах, не имеющих никаких настоящих локальных пользователей. Значение по умолчанию no.
flat-volumes flat-volumes масштабирует громкость устройства с громкостью "самого громкого" приложения. Например, повышение громкости вызова VoIP повысит аппаратную громкость и скорректирует звук аудиоплеера, таким образом, что понижать громкость аудиоплеера вручную нет необходимости. Значение по умолчанию yes, но в сборке для Arch - no.
Примечание: Поведение значения по умолчанию, иногда, может сбивать с толку, и некоторые приложения не зная об этой функции, могут регулировать свою громкость к 100% при запуске, потенциально создавая неожиданно громкий звук. Для восстановления классического поведения (ALSA), установите это значение в no.
realtime-scheduling Если ваше ядро поддерживает планирование в режиме реального времени (например, Realtime kernel или Linux-ck), установите значение yes, чтобы PulseAudio мог обеспечить воспроизведение с низкой задержкой без глюков. Ещё можно настроить realtime-priority, чтобы он использовал правильный приоритет, особенно когда JACK тоже запущен в системе.
nice-level Поскольку PulseAudio работает в пространстве пользователя и активно использует межпроцессное взаимодействие, звук может пропадать, если демону не хватает процессорного времени для его обработки. Значение по умолчанию обычно подходит, но его можно настроить, чтобы задать PulseAudio приоритет выше (или ниже) других приложений.
exit-idle-time Если вы хотите держать PulseAudio запущенным только при необходимости, а в остальное время использовать ALSA, можно установить задержку в секундах, после которой демон будет автоматически выключаться после отключения всех клиентов. Установите значение -1, чтобы отключить эту функцию.
log-level При отладке можно повысить уровень логирования демона, чтобы узнать, почему конкретный модуль не загружается. При высоком уровне иногда выводится полезная информация, например, обнаруженная минимальная задержка для системы, которую можно использовать для настройки default-fragments и default-fragment-size-msec.
default-sample-format Обычно этот параметр менять не нужно, но если родной формат вашей звуковой карты отличается, производительность и качество можно улучшить, установив здесь нужный формат.
default-sample-rate Частота дискретизации по умолчанию, которую использует PulseAudio, если она не изменена на уровне модуля. Измените это значение, если ваша звуковая карта не поддерживает частоту 44100 Гц или если вы хотите повысить дискретизацию всего звука. Смотрите предыдущее примечание об использовании процессора.
alternate-sample-rate Для устранения распространённого ограничения, когда фильмы с частотой 48000 Гц без необходимости преобразовывались в 44100 Гц, некоторые модули поддерживают динамическое переключение частоты дискретизации, чтобы избежать передискретизации, когда это возможно. Более подробную информацию смотрите в документации. Обычно это не нужно изменять.
default-channels Количество каналов по умолчанию, если оно не указано. Обычно не нужно ничего менять, так как вы можете настроить больше каналов в настройках отдельных модулей.
default-fragments Аудиосэмплы разделяются на множество фрагментов длиной по default-fragment-size-msec мс. Чем больше буфер, тем менее вероятен пропуск звука, когда система будет перегружена. С другой стороны это увеличит общую величину задержки. Увеличьте это значение, если у вас есть проблемы.
default-fragment-size-msec Размер каждого фрагмента в миллисекундах. Это количество данных, которое будет обработано демоном за один раз.

default.pa

Этот файл является сценарием запуска и используется для настройки модулей. Он анализируется и читается после завершения инициализации демона. Дополнительные команды могут быть отправлены во время выполнения с помощью pactl(1) или pacmd(1). Сценарий запуска также может быть загружен через командную строку путём запуска PulseAudio в терминале с параметром pulseaudio -nC. Это заставит демона загрузить модуль CLI и принимать настройки непосредственно из командной строки, выдавать получающуюся информацию или сообщения об ошибках на том же терминале. Это может быть полезно при отладке демона или тестирования различных модулей, перед постоянной установкой их на диск. Синтаксис описан в pulse-cli-syntax(5).

Совет:
  • Вместо того, чтобы копировать этот файл, в начало файла ~/.config/pulse/default.pa можно добавить .include /etc/pulse/default.pa и ниже просто переопределять стандартные настройки.
  • Список доступных устройств вывода можно посмотреть с помощью команды pacmd list-sinks | grep -Ei 'index:|name:'. Устройство вывода, используемое по умолчанию, отмечено звёздочкой (*).
  • Отредактируйте ~/.config/pulse/default.pa, добавив/изменив в нём команду set-default-sink так, чтобы использовалась имя устройства вместо его номера, так как нумерация устройств может меняться.

client.conf

Это файл настроек, читающийся каждым клиентским приложением PulseAudio. Он используется для настройки опций во время выполнения для отдельных клиентов. Может использоваться чтобы устанавливать и настраивать устройство вывода по умолчанию и для статического запуска, а также позволять (или запрещать) клиентам автоматический запуск сервера, если он в настоящее время не работает. Если автозапуск включен, клиенты будут автоматически запускать PulseAudio, если он ещё не запущен, когда клиент пытается подключиться к нему. Это может быть полезно, если вы хотите сэкономить ресурсы системы и не хотите, чтобы PulseAudio был всегда запущен. В противном случае его следует запускать при входе в сеанс.

Команда настроек

Основная команда для настройки сервера во время выполнения — pacmd. Выполните pacmd --help для просмотра доступных опций; для входа в интерактивный режим выполните pacmd и Ctrl+d для выхода. Все изменения будут применены сразу.

После того, как новые настройки были проверены и удовлетворили Ваши потребности, соответственно отредактируйте default.pa, чтобы изменения стали постоянными. Для некоторых основных настроек, смотрите PulseAudio/Examples (Русский).

Совет: Оставьте нетронутой строку load-module module-default-device-restore в файле default.pa. Это позволит вам перезапустить сервер в состояние по умолчанию, таким образом избегая любых неправильных установок.

Важно понимать, что набор источников («sources»: процессы, устройства захвата) и выводов («sinks»: звуковые карты, серверы, другие процессы), которые можно выбрать в PulseAudio, зависит от текущих выбранных профилей устройств. Эти профили являются теми «pcm», которые выводятся командой aplay -L или, более конкретно, командой pacmd list-cards: в её выводе, помимо прочего, есть строка «index:», список «profiles:» и строка «active profile: <...>». Профили соответствуют различным конфигурациям ввода/вывода звуковой карты, в частности, количеству доступных каналов ввода/вывода.

Выбрать активный профиль («active profile») можно с помощью команды pacmd set-card-profile INDEX PROFILE без запятой, разделяющей INDEX и PROFILE; INDEX — это просто число из строки «index:», а PROFILE — значение из списка «profiles:» до первого двоеточия с пробелом. Пример: pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo.

Более удобный способ выбрать профиль — через графический интерфейс, например в pavucontrol на вкладке «Конфигурация» или в параметрах KDE в разделе «Звуковые устройства». Каждая звуковая карта, то есть устройство из списка aplay -l или pacmd list-cards, будет иметь свой собственный выбираемый профиль. После выбора профиля доступные в нём источники (sources) и выводы (sinks) можно посмотреть с помощью команды pacmd list-sources и pacmd list-sinks. Имейте в виду, что индекс («index») доступных источников и выводов изменятся каждый раз, когда изменяется профиль карты.

Выбранный профиль может вызывать проблемы в некоторых приложениях, особенно Adobe Flash Player, обычно /usr/lib/mozilla/plugins/libflashplayer.so и /usr/lib/PepperFlash/libpepflashplayer.so. Часто, эти флэш-плееры будут работать только тогда, когда выбран один из профилей Стерео, иначе видео будет проигрываться без звука или просто откажется воспроизводиться. Когда всё остальное перестало работать, можно попробовать выбрать другой профиль.

Конечно, при настройке некоторых вариаций Surround Sound (Объёмного Звука) в PulseAudio, должен быть выбран соответствующий профиль Surround. Прежде чем объёмный звук будет работать, сделайте такие вещи, как переназначение каналов динамиков (speaker channels).

Если единственным профилем, который у вас есть, является «HiFi», это означает, что вы используете профили ALSA Use Case Manager вместо профилей pulseaudio. Возвращение к использованию профилей pulseaudio описано в разделе PulseAudio/Примеры#Отключение UCM/"HiFi".

Подключение и аутентификация

Так как PulseAudio работает как демон, запускаемый от имени текущего пользователя, клиентам нужно знать, где найти сокет демона для подключения к нему, а также общий файл со случайным cookie, который клиенты используют для аутентификации. По умолчанию клиенты должны находить демон без проблем, используя переменные окружения, свойства корневого окна X11 и, наконец, пробуя расположение по умолчанию (unix:/run/user/$ID/pulse/native). Однако, если у вас есть клиенты, которым нужен доступ к PulseAudio вне вашего сеанса X11, например mpd, запущенный под другим пользователем, нужно будет указать ему, как подключиться к вашему экземпляру PulseAudio. Полный пример есть в разделе PulseAudio/Примеры#Одновременное использование PulseAudio несколькими пользователями. По умолчанию для аутентификации используется файл cookie, содержащий случайные байты, чтобы исключить утечку звука от одного пользователя к другому в многопользовательской системе. Если вы уже контролируете, кто может получить доступ к серверу, с помощью прав доступа пользователей/групп, вы можете отключить куки, передав auth-cookie-enabled=0 в параметрах для module-native-protocol-unix.

Переменные окружения

Эти две переменные важны для того, чтобы клиенты libpulse могли найти PulseAudio, если вы переместили его сокет в другое место. Более подробную информацию и другие полезные переменные окружения, которые будут считывать клиенты, смотрите в pulseaudio(1).

Переменная Описание
PULSE_SERVER Определяет, где находится сервер. Он принимает префикс протокола, например unix: или tcp, после которого идёт путь или IP сервера. Пример: unix:/home/pulse/native-sock.
PULSE_COOKIE Пут к файлу, содержащему случайный файл cookie, сгенерированный PulseAudio. Этот файл будет считываться клиентами, а его содержимое отправляться на сервер, поэтому файл должен быть доступен для чтения всем клиентам. Это не обязательно должен быть один и тот же файл; главное, чтобы его содержимое совпадало с содержимым того файла, который использует демон.

Свойства X11

PulseAudio также использует свойства корневого окна X11 для поиска демона. Поскольку переменные окружения не могут быть изменены после запуска дочерних процессов, свойства X11 более гибкие, поскольку их легче изменить, так как они являются глобально общими. Пока у приложений есть доступ к переменной окружения DISPLAY=, они могут считывать актуальные значения свойств X11. Посмотреть их можно с помощью команды с помощью команды xprop -root, а команда pax11publish -d покажет только свойства, специфичные для PulseAudio. pax11publish также можно использовать для обновления свойств из переменных окружения (pax11publish -e, или pax11publish -r для их полного удаления). Если возможно, рекомендуется позволить PulseAudio сделать это самостоятельно с помощью модуля module-x11-publish или команды start-pulseaudio-x11. Следующая таблица приведена только для информации; вам никогда не понадобится устанавливать эти свойства вручную.

Свойство Описание
PULSE_SERVER Строка (xprop -root -f PULSE_SERVER 8s -set PULSE_SERVER "unix:/tmp/pulse-sock"), работает аналогично переменной окружения с таким же названием.
PULSE_COOKIE Строка, содержащая шестнадцатеричное представление значения cookie для аутентификации.

Запуск

Arch предоставляет юнит pulseaudio.socket, который включен по умолчанию для пользовательского экземпляра systemd. Это значит, что по необходимости PulseAudio запустится автоматически.

Примечание:
  • Для отключения pulseaudio.socket удостоверьтесь, что $XDG_CONFIG_HOME/systemd/user существует, и замаскируйте пользовательский юнит pulseaudio.socket.
  • Многие среды рабочего стола поддерживают XDG Autostart. В этом случае PulseAudio будет запущен автоматически независимо от состояния активации сокета.

Для получения дополнительной информации посмотрите PulseAudio: Выполнение.

Остановка

Остановите пользовательские юниты pulseaudio.socket и pulseaudio.service.

Настройка бэкенда

ALSA

Важно: Не пытайтесь изменить файлы настроек ALSA при использовании стандартной конфигурации PulseAudio. Она захватывает устройства, чтобы можно было менять настройки на лету через графический интерфейс. Изменения в настройках ALSA, скорее всего, будут проигнорированы PulseAudio, и приложения ALSA будут ломаться при попытке получить доступ к устройству ALSA, которое уже использует PulseAudio. При изменении файлов настроек ALSA также перенастройте PulseAudio для вывода на ваше собственное устройство ALSA.

Если у вас есть приложения, которые совсем не поддерживают PulseAudio, но используют ALSA, они будут пытаться получить доступ напрямую к звуковой карте через ALSA, минуя PulseAudio. Таким образом, звуковая карта перестанет быть доступной для PulseAudio. Вследствие чего, все приложения, использующие PulseAudio, перестанут работать, как описано здесь. Чтобы этого избежать, вам необходимо установить пакет pulseaudio-alsa. Он содержит файл /etc/alsa/conf.d/99-pulseaudio-default.conf настраивающий ALSA на использование PulseAudio. Также убедитесь, что файл ~/.asoundrc отсутствует, иначе он будет переопределять настройки из файла /etc/asound.conf.

Также может понадобиться установить lib32-libpulse и lib32-alsa-plugins, если вы используете программы multilib, например Wine или Steam.

Чтобы запретить приложениям ALSA использовать эмуляцию OSS в обход PulseAudio (тем самым не давая другим приложениям воспроизводить звук), убедитесь, что модуль snd_pcm_oss не загружается при загрузке системы. Если он в настоящее время загружен (lsmod | grep oss), отключите его, выполнив:

# rmmod snd_pcm_oss

Включение DTS через ALSA

Для включения PulseAudio DTS (Digital Theater System) через ALSA установите пакет dcaencAUR и включите его:

/etc/asound.conf
<confdir:pcm/dca.conf>

Затем перезапустите PulseAudio. Если есть проблемы с громкостью, попробуйте поиграться с настройками, описанными на странице проекта.

Раскрытие источников, устройств вывода и микшеров PulseAudio для ALSA

Хотя pulseaudio-alsa содержит файл настроек, позволяющий приложениям ALSA использовать устройство по умолчанию из PulseAudio, в ALSA-плагине pulse есть дополнительные возможности:

~/.asoundrc (or /etc/asound.conf)
# Create an alsa input/output using specific PulseAudio sources/sinks
pcm.pulse-example1 {
    type pulse
    device "my-combined-sink" # name of a source or sink
    fallback "pulse-example2" # if combined not available
}

pcm.pulse-example2 {
    type pulse
    device "other-sound-card" # name of a source or sink
    # example: device "alsa_output.pci-0000_00_1b.0.analog-stereo"
}

# Create an alsa mixer using specific PulseAudio sources/sinks
# these can be tested with "alsamixer -D pulse-example3"
ctl.pulse-example3 {
    type pulse
    device "my-output" # name of source or sink to control

    # example: always control the laptop speakers:
    # device "alsa_output.pci-0000_00_1b.0.analog-stereo"
    fallback "pulse-example4" # supports fallback too
}

# Mixers also can control a specific source and sink, separately:
ctl.pulse-example4 {
    type pulse
    sink "my-usb-headphones"
    source "my-internal-mic"
    
    # example: output to HDMI, record using internal
    sink "alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1"
    source "alsa_input.pci-0000_00_1b.0.analog-stereo"
}

# These can override the default mixer (example: for pnmixer integration)
ctl.!default {
    type pulse
    sink "alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1"
    source "alsa_input.pci-0000_00_1b.0.analog-stereo"
}

Для знакомства со всеми доступными настройками доступен исходный код.

ALSA/dmix без захвата аппаратного устройства

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

Вы, возможно, захотите использовать ALSA непосредственно в большинстве Ваших приложений, при этом, если есть необходимость, иметь возможность использовать приложения требующие PulseAudio. Следующие шаги позволяют Вам заставлять PulseAudio использовать dmix вместо того, чтобы "захватывать" устройство ALSA.

  • Удалите пакет pulseaudio-alsa, обеспечивающий уровень совместимости между приложениями ALSA и PulseAudio. После этого Ваши приложения ALSA будут использовать ALSA напрямую, без "зацепки" Pulse.
  • Создайте файл настроек в каталоге /etc/pulse/default.pa.d/ для выгрузки модулей автоматического обнаружения и статической загрузки нужных модулей бэкенда. Добавьте параметры device как показано ниже:
/etc/pulse/default.pa.d/load-audio-drivers-statically.pa
unload-module module-udev-detect
unload-module module-detect
load-module module-alsa-sink device=dmix
load-module module-alsa-source device=dsnoop
  • Дополнительно: если вы используете kmix, вы можете управлять громкостью ALSA вместо громкости PulseAudio, установив переменную окружения KMIX_PULSEAUDIO_DISABLE=1.
  • Теперь, перезагрузите свой компьютер и попытайтесь запустить одновременно приложения ALSA и PulseAudio. Они оба должны воспроизводить звук одновременно.
При необходимости используйте pavucontrol для управления звука PulseAudio.

OSS

Есть несколько способов заставить работать OSS-программы через PulseAudio:

ossp

Установите пакет ossp и запустите службу osspd.service.

Оболочка padsp

Программы, использующие OSS, могут работать с PulseAudio при запуске через padsp (входит в состав PulseAudio):

$ padsp OSSпрограмма

Несколько примеров:

$ padsp aumix
$ padsp sox foo.wav -t ossdsp /dev/dsp

Вы можете также добавить пользовательский сценарий оболочки:

/usr/local/bin/OSSProgram
#!/bin/sh
exec padsp /usr/bin/OSSprogram "$@"

Убедитесь, что /usr/local/bin, идёт до /usr/bin в Вашем PATH.

Примечание: Это не работает, если модуль module-udev-detect загружен с опцией tsched=0.

GStreamer

Установите gst-plugins-good или gstreamer0.10-good-pluginsAUR, если нужная вам программа использует старую реализацию GStreamer.

OpenAL

Приложение OpenAL должно использовать PulseAudio по умолчанию, но может быть настроено так, чтобы использовать именно его:

/etc/openal/alsoft.conf
drivers=pulse,alsa

По умолчанию OpenAL не позволяет pulseaudio перемещать аудиопотоки на другое устройство. Чтобы изменить это, добавьте параметр allow-moves:

/etc/openal/alsoft.conf
[pulse]
allow-moves=true

libao

Отредактируйте файл настроек libao:

/etc/libao.conf
default_driver=pulse

Обязательно удалите опцию alsa драйвера dev=default или настройте его для определения конкретного имени устройства вывода Pulse (sink) или его числа.

Примечание: Можно оставить в libao стандартный вывод в alsa и его устройство по умолчанию, если установлен пакет pulseaudio-alsa, так как с ним устройством вывода по умолчанию ALSA является именно PulseAudio.

Постобработка аудио

PulseEffects

PulseEffects — это GTK-инструмент для применения аудиоэффектов (например, шумоподавления, эквалайзера и т.д.) к входному и выходному аудиосигналу.

Примечание: Новая версия PulseEffects (EasyEffects) поддерживает только Pipewire. Для работы с PulseAudio нужно устанавливать старую версию (pulseeffects-legacyAUR или pulseeffects-legacy-gitAUR).

Для работы плагинов может понадобиться установка дополнительной зависимости lsp-plugins. Если плагины PulseEffects отображаются серым цветом, попытка запуска демона приводит к ошибке или на вкладке Настройки > PulseAudio не отображаются устройства, попробуйте очистить кэш как описано в [3].

Коллекцию предустановок PulseEffects можно найти в community presets.

Эквалайзер

Если вы хотите использовать другой эквалайзер вместо #PulseEffects, есть следующие варианты.

Модуль LADSPA

Установите pulseaudio-equalizer-ladspa — эквалайзер, основанный на LADSPA swh-plugins. Графический интерфейс запускается командой pulseaudio-equalizer-gtk.

Встроенный модуль

Важно: Модуль эквалайзера считается нестабильным и может быть удалён из PulseAudio. Больше информации об этом можно найти здесь список рассылки (англ.).

В PulseAudio есть свой 10-полосный эквалайзер. Для его использования установите pulseaudio-equalizer и загрузите нужные модули:

$ pactl load-module module-equalizer-sink
$ pactl load-module module-dbus-protocol

Графический интерфейс можно запустить с помощью команды qpaeq.

Примечание: Если изменение параметров эквалайзера никак не влияет на звук, установите pavucontrol и измените "ALSA Playback on" на "FFT based equalizer on ..." во время работы медиаплеера.

Для автозапуска эквалайзера при старте PulseAudio создайте .pa файл в каталоге /etc/pulse/default.pa.d/ или ~/.config/pulse/default.pa со следующими строками:

### Load the integrated PulseAudio equalizer and D-Bus module
load-module module-equalizer-sink
load-module module-dbus-protocol
Примечание: Вывод эквалайзера должен быть загружен после того, как основной вывод станет доступен.

Компрессия

Выполнить сжатие динамического диапазона звука (компрессию) можно с помощью #PulseEffects, однако он может создавать много накладных расходов и задержек, поэтому, если вам не нужно ничего кроме компрессии, можно использовать module-ladspa-sink.

Плагин Стива Хэрриса

В наборе плагинов Steve Harris LADSPA есть модули для компрессии. Установите swh-plugins и измените файл настроек PulseAudio следующим образом:

~/.config/pulse/default.pa
.include /etc/pulse/default.pa

set-default-sink название_основного_вывода

load-module module-ladspa-sink sink_name=shw_sc4 sink_master=название_основного_вывода plugin=sc4_1882 label=sc4 control=,,,,,,,,
set-default-sink shw_sc4

Узнать название основного вывода можно с помощью команды pacmd list-sinks. Перезапустите PulseAudio для применения изменений. В приведённой выше конфигурации пустые параметры управления задают значения по умолчанию.

Чтобы настроить модуль с помощью пользовательских параметров управления, заполните их, соблюдая правильный порядок.

Параметр Описание
RMS/peak (0/1) Переключение между определением пиковых (peak) или среднеквадратичных (RMS) значений. RMS обычно лучше для тонкой, музыкальной компрессии, а peak — для более тяжёлой, быстрой компрессии и перкуссии.
Время атаки (мс) Время атаки в миллисекундах.
Время спада (мс) Время восстановления в миллисекундах.
Порог (дБ) Уровень сигнала, при превышении которого компрессор начинает ослаблять сигнал.
Соотношение (1:n) Коэффициент ослабления сигнала, используемый, когда уровень сигнала превышает порог. 1 означает отсутствие компрессии; более высокие значения — более сильная компрессия.
Радиус изгиба (дБ) Расстояние от порога, на котором начинается кривая изгиба сигнала.
Makeup gain (дБ) Регулирует усиление входного сигнала в децибелах.
Амплитуда (дБ) Уровень входного сигнала, в децибелах.
Gain reduction (dB) Степень снижения усиления, применяемая к входному сигналу, в децибелах.

Другие плагины описаны здесь: Steve Harris' LADSPA Plugin Documentation.

Плагин Calf

Есть более профессиональный компрессор от Calf Studio Gear. Установите calf-ladspaAUR и измените конфигурацию следующим образом:

~/.config/pulse/default.pa
.include /etc/pulse/default.pa

set-default-sink your_card_sink_name

load-module module-ladspa-sink sink_name=calf_comp_x2 sink_master=your_card_sink_name plugin=veal label=Compressor control=,,,,,,,,,,
set-default-sink calf_comp_x2

Плагин имеет 11 параметров. Если вы хотите вставить пользовательские значения, ознакомьтесь со следующей таблицей и не забудьте указать их в правильном порядке.

Control option Default Min Max Type Info
Bypass 0 0 1 Bool
Level in 1 0.015625 64 Float db
Threshold 0.125 0.000976563 1 Float dbFs For example, to set -18 db, the right value is 10^(-18/20) = 0.158
Ratio 2 1 20 Float
Attack 20 0.01 2000 Float ms
Release 250 0.01 2000 Float ms
Makeup 1 1 64 Float db
Knee 2.828427125 1 8 Float db
RMS/Peak 0 0 1 Bool 0 = RMS; 1 = Peak
Stereo Link 0 0 1 Bool 0 = Average; 1 = Max
Mix 1 0 1 Float Percentage
Описание каждого параметра доступно в документации.

Подавление эхо и шума микрофона

По умолчанию Arch не загружает модуль шумоподавления PulseAudio, поэтому нужно вручную добавить его в /etc/pulse/default.pa.d/. Сперва проверьте наличие модуля с помощью pacmd и ввода list-modules. Если там нет строки name: <module-echo-cancel>, создайте файл:

/etc/pulse/default.pa.d/noise-cancellation.pa
### Включить шумоподавление
load-module module-echo-cancel use_master_format=1 aec_method=webrtc aec_args="analog_gain_control=0\ digital_gain_control=1" source_name=echoCancel_source sink_name=echoCancel_sink
set-default-source echoCancel_source
set-default-sink echoCancel_sink

Затем перезапустите PulseAudio:

$ pulseaudio -k
$ pulseaudio --start

и через pavucontrol проверьте, что модуль активировался. На вкладке Запись должен появиться источник Echo-Cancel Source Stream.

Добавление beamforming=1 в aec_args также может значительно уменьшить фоновый шум, если у вас более одного микрофона (что часто встречается на многих новых ноутбуках). Однако для beamforming необходимо указать mic_geometry (смотрите ниже).

Если вы хотите, чтобы существующие потоки автоматически перемещались на новые источник и вывод, необходимо предварительно загрузить module-switch-on-connect с параметром ignore_virtual=no.

Примечание: Если вы подключите USB звуковую карту или гарнитуру, или, например, у вас конфигурация колонок 5.1 и вы подключите гарнитуру к фронтальным аудиоразъёмам после загрузки module-echo-cancel, вам придётся вручную выгрузить и загрузить module-echo-cancel снова, потому что, к сожалению, нет способа сказать модулю, что он должен автоматически переключиться на новые стандартные значения 'source_master' и 'source_sink'. Смотрите [4].

Возможные 'aec_args' для 'aec_method=webrtc'

Ниже представлен список возможных значений 'aec_args' для 'aec_method=webrtc' со значениями, используемыми по умолчанию [5][6]:

  • analog_gain_control=1 - Аналоговая АРУ - 'Автоматическая Регулировка Усиления' осуществляется путем прямого изменения громкости - скорее всего приведет к искажениям.
  • digital_gain_control=0 - Цифровая АРУ - 'Автоматическая Регулировка Усиления' осуществляется постобработкой (более высокая нагрузка на процессор).
  • experimental_agc=0 - Позволяет включить экспериментальный механизм АРУ webrtc.
  • agc_start_volume=85 - Уровень начальной громкости при использовании АРУ - Возможные значения 0-255 - Слишком низкий уровень начальной громкости может вовсе нивелировать возможность алгоритма АРУ повысить уровень громкости до достаточного значения [7].
  • high_pass_filter=1 - ?
  • noise_suppression=1 - Подавитель шума.
  • voice_detection=1 - VAD - Обнаружение голосовой активности.
  • extended_filter=0 - Расширенный фильтр, более сложный и устойчивый к неверной задержке ответа от аппаратных устройств, чем обычный фильтр. Расширенный фильтр по умолчанию не активен, так как даёт худшие результаты при обычном разговоре [8]. Включите этот параметр, если ваш микрофон или динамик имеет большую задержку, например, если вы используете беспроводной микрофон или некоторые телевизоры HDMI в качестве динамика.
  • intelligibility_enhancer=0 - Некоторая настройка для webrtc усилителя разбора сигнала.
  • drift_compensation=0 - Компенсация отклонений позволяет избежать эффекта эха между различными устройствами (такими как колонки вашего ноутбука и микрофоном USB вебкамеры). - работает только с "mobile=0".
  • beamforming=0 - Это может значительно снизить фоновый шум. Смотрите [9][10]
    • mic_geometry=x1,y1,z1,x2,y2,z2 - Работает только с "beamforming=1".
    • target_direction=a,e,r - Работает только с "beamforming=1". Примечание: Если модуль не хочет загружаться с этим параметром, установите азимут (a) на желаемое значение, а высоту (e) и радиус (r) установите на 0.
  • mobile=0 - ?
    • routing_mode=speakerphone - Возможные значения "quiet-earpiece-or-headset,earpiece,loud-earpiece,speakerphone,loud-speakerphone" - работает только с "mobile=1".
    • comfort_noise=1 - ? - работает только с "mobile=1".

Отключение постобработки звука в некоторых приложениях

Если вы используете module-echo-cancel, то, вероятно, дополнительная обработка звука, встроенная в некоторых приложениях, вам не нужна. Вот как её можно отключить:

  • Mumble:
    1. Настройки -> Исходящий звук
    2. Подавление эха -> Отключено
    3. Подавление шума -> Выключено
    4. Макс. усиление -> 1.0
  • TeamSpeak:
    1. Tools -> Options -> Capture
    2. Отключите: 'Typing attenuation', 'Remove background noise', 'Echo cancellation' и 'Echo reduction (Ducking)'
  • Firefox: смотрите Firefox/Tweaks#Disable WebRTC audio post processing
  • Steam:
    1. В окне "Список друзей" -> Настройки списка друзей (шестерёнка) -> Голосовые чаты -> Дополнительные настройки
    2. Отключите: "Эхоподавление", "Шумоподавление", "Автоматическая регулировка звука и усиления"
  • Skype:
    1. Tools -> Settings... -> Audio & Video -> Microphone -> Automatically adjust microphone settings -> off

Скрипт для перезагрузки module-echo-cancel

Поскольку module-echo-cancel не всегда нужен или должен быть перезагружен после изменения source_master или sink_master, было бы неплохо иметь простой способ загрузить или перезагрузить module-echo-cancel.

Создайте следующий скрипт и сделайте его исполняемым:

echoCancelEnable.sh
#!/bin/sh
aecArgs="$*"
# Если в скрипт не переданы "aec_args", то используются по умолчанию эти:
[ -z "$aecArgs" ] && aecArgs="analog_gain_control=0 digital_gain_control=1"
newSourceName="echoCancelSource"
newSinkName="echoCancelSink"

# "module-switch-on-connect" с опцией "ignore_virtual=no" (PulseAudio 12 и новее) нужен
# для автоматического перемещения существующих потоков на новый (виртуальный) источник
# и выход по умолчанию.
if ! pactl list modules short | grep "module-switch-on-connect.*ignore_virtual=no" >/dev/null 2>&1; then
	echo Load module \"module-switch-on-connect\" with \"ignore_virtual=no\"
	pactl unload-module module-switch-on-connect 2>/dev/null
	pactl load-module module-switch-on-connect ignore_virtual=no
fi

# Перезагрузка "module-echo-cancel"
echo Reload \"module-echo-cancel\" with \"aec_args=$aecArgs\"
pactl unload-module module-echo-cancel 2>/dev/null
if pactl load-module module-echo-cancel use_master_format=1 aec_method=webrtc aec_args=\"$aecArgs\" source_name=$newSourceName sink_name=$newSinkName; then
	# Установка новых источника и выхода по умолчанию, если module-echo-cancel успешно загрузился.
	pacmd set-default-source $newSourceName
	pacmd set-default-sink $newSinkName
fi

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

Подавление шума с помощью рекуррентной нейронной сети (RNNoise)

Пакет noise-suppression-for-voice предоставляет подавление шума в реальном времени на основе RNNoise: Learning Noise Suppression [11]. Подробнее о настройке можно почитать в репозитории на GitHub [12]. Можно установить графический интерфейс Cadmus (cadmus-debAUR или cadmus-appimageAUR).

Другой альтернативой является noisetorchAUR, который также построен на базе RNNoise. Здесь есть шумоподавление не только входа, но и выхода.

Приложения

QEMU

Обратитесь к QEMU#Creating an audio backend для детального описания настройки pulseaudio в QEMU.

AlsaMixer.app

Сделайте alsamixer.appAUR dockapp для использования pulseaudio windowmakerAUR, например:

$ AlsaMixer.app --device pulse

Вот два примера, где первый - для ALSA, и другой - для pulseaudio. Вы можете запустить несколько его экземпляров. Используйте опцию выбора -w, кнопок управления для привязки к колесику мышки.

# AlsaMixer.app -3 Mic -1 Master -2 PCM --card 0 -w 1
# AlsaMixer.app --device pulse -1 Capture -2 Master -w 2
Примечание: Он может использовать только те устройства вывода, которые устанавлены по умолчанию..

XMMS2

Сделайте переключение на вывод pulseaudio

$ nyxmms2 server config output.plugin pulse

и на alsa

$ nyxmms2 server config output.plugin alsa

Для того, чтобы xmms2 использовал другое устройство вывода, например:

$ nyxmms2 server config pulse.sink alsa_output.pci-0000_04_01.0.analog-stereo.monitor

Смотрите также официальное руководство [13][устаревшая ссылка 2024-03-03 ⓘ].

Рабочая область KDE Plasma и Qt4

PulseAudio будет автоматически использоваться приложениями KDE/Qt4. Это поддерживается по умолчанию в микшере звука KDE. Для получения дополнительной информации посмотрите страницу KDE, в wiki PulseAudio.

Один полезный совет с этой страницы заключён в том, что следует загружать load-module module-device-manager. Обычно это происходит автоматически при входе в систему с помощью скрипта /usr/bin/start-pulseaudio-x11, но если этого не произошло, вы можете добавить его вручную в файл настроек в каталоге /etc/pulse/default.pa.d/. О возможных конфликтах с module-switch-on-connect смотрите в разделе #Переключение при подключении.

Если бэкэнд phonon-gstreamer используется для Phonon, GStreamer должен также быть настроен, как описано в разделе #GStreamer.

Audacious

Audacious изначально поддерживает PulseAudio. Для его использования зайдите в Настройки… → Звук → Настройки вывода и выберите модуль «Вывод PulseAudio».

Music Player Daemon (MPD)

Настройте MPD на использование PulseAudio. Смотрите также раздел Music Player Daemon/Tips and tricks#PulseAudio.

MPlayer

MPlayer изначально поддерживает вывод PulseAudio с опцией -ao pulse. Он также может быть настроен для использования вывода PulseAudio по умолчанию, в ~/.mplayer/config для конкретного пользователя, или для всей системы /etc/mplayer/mplayer.conf:

/etc/mplayer/mplayer.conf
ao=pulse

mpv

mpv поддерживает PulseAudio аналогично #MPlayer. Пользовательский файл настроек находится в ~/.config/mpv/mpv.conf, общесистемный — в /etc/mpv/mpv.conf.

guvcview

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

$ pactl list sources

Если источник аудиосигналов "suspended" (приостановлен), создайте следующий файл .pa:

/etc/pulse/default.pa.d/no-module-suspend-on-idle.pa
unload-module module-suspend-on-idle

И затем перезапустите PulseAudio или компьютер, и источник будет просто оставаться неактивным, а не переходить в «приостановленный» режим. Теперь guvcview будет писать звук правильно.

Сетевой звук

Одна из уникальных особенностей PulseAudio — способность надёжно передавать аудиопоток от клиентов на сервер, на котором запущен демон PulseAudio, по протоколу TCP в пределах локальной сети. Важно, чтобы время на сервере и клиенте совпадало (например, можно использовать NTP для синхронизации), иначе аудиопоток может быть прерывистым или вообще не работать. Подробности доступны в официальной документации PulseAudio.

Включите модуль TCP на сервере (компьютере, который выполняет фактический вывод звука) путём создания следующего файла .pa:

/etc/pulse/default.pa.d/tcp.pa
load-module module-native-protocol-tcp

Или можно использовать графическое приложение paprefs (root не требуется). Перейдите в раздел Network Server и поставьте галочку Enable network access to local sound devices.

Чтобы убедиться, что module-native-protocol-tcp на сервере загружен, можно использовать команду:

$ pacmd list-modules | grep module-native-protocol-tcp

Чтобы сервер разрешил клиенту подключаться к себе, они должны использовать одинаковый cookie. Скопируйте файл ~/.config/pulse/cookie с одного компьютера на другой. Неважно, чей именно файл cookie вы используете (сервера или клиента); главное, чтобы у сервера и клиента этот файл был одинаковый.

Если копирование файла cookie не подходит, можно разрешить доступ к серверу анонимным клиентам, добавив опцию auth-anonymous в module-native-protocol-tcp на сервере (опять же в /etc/pulse/default.pa.d/):

load-module module-native-protocol-tcp auth-anonymous=1

Также можно выполнять аутентификацию по IP-адресу:

load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/24

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

Запуск общесистемного экземпляра при загрузке системы

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

Чтобы запустить PulseAudio как системную службу, сначала нужно настроить пользователей и группы, необходимые для общесистемного экземпляра сервера PulseAudio [14]:

  1. Добавьте пользователя pulse. Демон PulseAudio будет переключаться на него после запуска.
    # useradd -d /var/run/pulse -s /usr/bin/nologin -G audio pulse
  2. Опционально добавьте пользователя pulse в группу bluetooth, если он у вас есть (bluez) и вы хотите позволить PulseAudio использовать bluetooth.
    # usermod -aG bluetooth pulse
  3. Добавьте группу pulse-access, которая будет использоваться для контроля доступа к серверу PulseAudio.
    # groupadd pulse-access
  4. Добавьте в группу pulse-access пользователей, которым вы хотите предоставить доступ к общесистемному экземпляру PulseAudio.
    # usermod -aG pulse-access root

В каталоге /etc/systemd/system создайте юнит pulseaudio.service:

/etc/systemd/system/pulseaudio.service
[Unit]
Description=Sound Service

[Service]
# Имейте в виду, что notify будет работать только с опцией --daemonize=no
Type=notify
ExecStart=/usr/bin/pulseaudio --daemonize=no --exit-idle-time=-1 --disallow-exit=true --system --disallow-module-loading
Restart=always

[Install]
WantedBy=default.target

Затем включите общесистемную службу pulseaudio.service. Также нужно отключить пользователькую службу PulseAudio:

# systemctl --global mask pulseaudio.socket

Это необходимо, даже если вы получаете доступ к системе по SSH, чтобы служба PulseAudio на уровне пользователя никогда не запускалась.

Выбор сервера

Для однократного использования в оболочке или для отдельной команды можно прописать имя хоста или IP-адрес нужного сервера PulseAudio в переменной окружения $PULSE_SERVER.

$ env PULSE_SERVER=домен-или-ip-сервера mplayer test.mp3

Постоянную настройку можно записать в файл ~/.pulse/client.conf или /etc/pulse/client.conf.

default-server = домен-или-ip-сервера

Также можно указать несколько серверов через пробел, к которым клиент PulseAudio будет пытаться подключаться по очереди [15]:

default-server = сервер1 запасной-сервер

Советы и рекомендации

Регулировка звука клавиатурой

Привяжите следующие команды к своим кнопкам регулировки громкости: XF86AudioRaiseVolume, XF86AudioLowerVolume, XF86AudioMute. Подробнее это рассмотрено здесь: Горячие клавиши#Xorg.

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

$ pactl list sinks short

Предположим, что используется источник 0, тогда для увеличения громкости:

$ sh -c "pactl set-sink-mute 0 false ; pactl set-sink-volume 0 +5%"

Для понижения громкости:

$ sh -c "pactl set-sink-mute 0 false ; pactl set-sink-volume 0 -5%"

Отключить/включить звук:

$ pactl set-sink-mute 0 toggle

Отключить/включить микрофон:

$ pactl set-source-mute 1 toggle
Совет:
  • Чтобы клавиатурные сокращения всегда работали с устройством вывода по умолчанию, установите @DEFAULT_SINK@ как номер устройства вывода, например, pactl set-sink-mute @DEFAULT_SINK@ toggle.
  • Для более продвинутого управления, например, для ограничения максимальной громкости, используйте один из консольных интерфейсов.

Проигрывание звука через неинтерактивную оболочку (служба systemd, cron)

Установите XDG_RUNTIME_DIR перед командой (замените user_id на ID пользователя, запускающего PulseAudio):

$ XDG_RUNTIME_DIR=/run/user/user_id paplay /usr/share/sounds/freedesktop/stereo/complete.oga

Или используйте machinectl:

# machinectl shell .host --uid=user_id /usr/bin/paplay /usr/share/sounds/freedesktop/stereo/complete.oga

Сигналы событий X11

Для передачи pulseaudio управления сигналами событий X11, выполните следующие команды после запуска сеанса X11:

$ pactl upload-sample /usr/share/sounds/freedesktop/stereo/bell.oga bell-window-system
$ pactl load-module module-x11-bell display=$DISPLAY

Или пропишите настройки в /etc/pulse/default.pa.d/ или ~/.config/pulse/default.pa:

~/.config/pulse/default.pa
.include /etc/pulse/default.pa

# audible bell
load-sample-lazy bell-window-system /usr/share/sounds/freedesktop/stereo/bell.oga
load-module module-x11-bell

Для настройки уровня громкости сигналов X11 запустите команду:

$ xset b 100

100 - это уровень в процентах. Для корректной работы потребуется пакет xorg-xset. Чтобы узнать как запускать данные команды автоматически при загрузке сессии X11, ознакомьтесь с разделом Autostarting (Русский).

Переключение при подключении

Модуль switch-on-connect переключает вывод звука на новые устройства при их подключении. Например, если вы подключите USB-гарнитуру, то звук будет переведён на неё. Если вы её отключите, то звук вернётся на последнее используемое устройство.

По умолчанию этот модуль отключен, так как его поведение слишком агрессивное, но его можно включить добавлением строки load-module module-switch-on-connect в файл ~/.config/pulse/default.pa.

Примечание: С некоторыми устройствам он может не работать; смотрите PulseAudio/Решение проблем#Каналы ALSA отключены, когда наушники подсоединены/отсоединены неправильно.

Скрипт для переключения аналоговых выходов

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

$ pactl set-sink-port 'number of the card' 'port'

Таким образом, выбранный вами порт станет выходом по умолчанию. Пример:

$ pactl set-sink-port 0 "analog-output;output-speaker" 

Список портов можно получить, используя:

$ pactl list

Текущий выход можно отобразить командой:

$ pactl list sinks | grep "active profile"| cut -d ' ' -f 3-

Эти операции можно автоматизировать простым скриптом. Затем пользователь может назначить его на ярлык:

~/pa.sh (или любое другое название)
#!/bin/sh
# Этот скрипт использует уведомления kdialog для предупреждения пользователя о том, что текущий профиль изменён. Пользователь может доработать его для своих нужд или совсем изменить.

CURRENT_PROFILE=$(pactl list sinks | grep "active profile"| cut -d ' ' -f 3-)

if [ "$CURRENT_PROFILE" = "analog-output;output-speaker" ] ; then
        pactl set-sink-port 0 "analog-output;output-headphones-1"
        kdialog --title "Pulseaudio" --passivepopup "Headphone" 2 & 
else 
        pactl set-sink-port 0 "analog-output;output-speaker"      
        kdialog --title "Pulseaudio" --passivepopup  "Speaker" 2 &
fi

Этот скрипт предназначен для переключения между двумя профилями. Сначала он проверяет текущий профиль, а затем заменяет его. Пользователям необходимо изменить поле 'active profile' в соответствии с языком, который предоставил pactl. Пользователям, возможно, понадобится изменить номер карты и выхода для настройки под свою конкретную систему.

Отключение заглушения медиа при голосовом вызове (module-role-cork)

При голосовом вызове (например, в Microsoft Teams и, возможно, других подобных программах) любые мультимедийные приложения могут быть заглушены. Чтобы отключить это поведение, можно отключить этот модуль в конфигурации PulseAudio:

/etc/pulse/default.pa.d/no-cork.pa
unload-module module-role-cork

Продвинутая настройка и сценарии использования

Смотрите PulseAudio/Примеры.

Решение проблем

Смотрите PulseAudio/Решение проблем.

Смотрите также