PulseAudio (Русский)

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

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

Установка

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

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

Интерфейсы

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

Консольные

  • pacmixer Микшер, похожий на Alsamixer.
https://github.com/KenjiTakahashi/pacmixer || pacmixerAUR
  • PAmix Микшер на базе ncurses, похожий на to pavucontrol.
https://github.com/patroclos/PAmix || pamix-gitAUR

Графические

  • pasystray Апплет системного трея.
https://github.com/christophgysin/pasystray || pasystray
  • plasma-pa Апплет KDE Plasma для управления громкостью звука с помощью PulseAudio
https://invent.kde.org/plasma/plasma-pa || plasma-pa
  • PulseEffects Аудиоэффекты для приложений PulseAudio.
https://github.com/wwmm/easyeffects/tree/pulseaudio-legacy || pulseeffects-legacyAUR
  • Volctl Апплет для управления громкостью отдельных приложений.
https://buzz.github.io/volctl/ || volctlAUR

Настройка

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

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

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

Вы можете найти подробный список всех доступных модулей в Загружаемые Модули Pulseaudio (Англ.). Чтобы включить их, Вы можете добавить строку в .

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

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

daemon.conf

Это основной файл для настройки демона. Он определяет основные настройки, такие как: частоты дискретизации по умолчанию, используемые модулями, методы повторной выборки, планирование в реальном времени, и другие различные настройки, связанные с серверным процессом. Они не могут быть изменены на лету без перезапуска демона PulseAudio. Значения по умолчанию подходят для большинства пользователей. Дополнительная информация доступна в man-странице . Boolean-опции принимают такие значения: true, , on и — истина; , , и — ложь.

ОпцияОписание

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

resample-methodКакой метод частоты дискретизации (resampler) использовать, когда звук с несовместимыми частотами дискретизации должен быть передан между модулями (например, воспроизведение звука на 96 кГц на аппаратном обеспечении, поддерживающим только 48 кГц). Список доступных resampler'ов можно посмотреть с помощью команды . Выберите и используйте лучший компромисс между загрузкой процессора и качеством звука.
Совет: В некоторых случаях PulseAudio будет генерировать высокую нагрузку на процессор. Это может произойти, когда несколько потоков передискретизируются (индивидуально). Если такая ситуация возникает часто, стоит подумать о создании дополнительного устройства вывода (sink) с соответствующей частотой дискретизации, аудиопоток из которого затем будет передан в основное устройство вывода (main sink), благодаря чему передискретизация будет выполняться только один раз.

avoid-resamplingСо значением PulseAudio автоматически настроит частоту дискретизации оборудования в соответствии с той, которую использует приложение, если оборудование её поддерживает (необходим PA 11 или новее)
Важно: Включение этой функции может привести к искажению звука, поэтому по умолчанию она отключена. Подробнее в примечаниях к выпуску.

enable-remixingКогда вход и выход имеют разное количество каналов (например, вывод 6-канального фильма в стереовывод), PulseAudio может либо перемикшировать все каналы (по умолчанию, ), либо просто тривиально сопоставить каналы по их названию (левый идет к левому, правый к правому, все остальные игнорируются) ()

system-instanceЕсли , то демон будет запускаться как как общесистемный экземпляр. Крайне нежелательно, поскольку это может привести к проблемам безопасности. Полезно в системах с несколькими пользователями и (headless) системах, не имеющих никаких настоящих локальных пользователей. Значение по умолчанию .

flat-volumes масштабирует громкость устройства с громкостью "самого громкого" приложения. Например, повышение громкости вызова VoIP повысит аппаратную громкость и скорректирует звук аудиоплеера, таким образом, что понижать громкость аудиоплеера вручную нет необходимости. Значение по умолчанию , но в сборке для Arch - .

realtime-schedulingЕсли ваше ядро поддерживает планирование в режиме реального времени (например, Realtime kernel или Linux-ck), установите значение , чтобы PulseAudio мог обеспечить воспроизведение с низкой задержкой без глюков. Ещё можно настроить , чтобы он использовал правильный приоритет, особенно когда JACK тоже запущен в системе.

nice-levelПоскольку PulseAudio работает в пространстве пользователя и активно использует межпроцессное взаимодействие, звук может пропадать, если демону не хватает процессорного времени для его обработки. Значение по умолчанию обычно подходит, но его можно настроить, чтобы задать PulseAudio приоритет выше (или ниже) других приложений.

exit-idle-timeЕсли вы хотите держать PulseAudio запущенным только при необходимости, а в остальное время использовать ALSA, можно установить задержку в секундах, после которой демон будет автоматически выключаться после отключения всех клиентов. Установите значение -1, чтобы отключить эту функцию.

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

default-sample-formatОбычно этот параметр менять не нужно, но если родной формат вашей звуковой карты отличается, производительность и качество можно улучшить, установив здесь нужный формат.

default-sample-rateЧастота дискретизации по умолчанию, которую использует PulseAudio, если она не изменена на уровне модуля. Измените это значение, если ваша звуковая карта не поддерживает частоту 44100 Гц или если вы хотите повысить дискретизацию всего звука. Смотрите предыдущее примечание об использовании процессора.

alternate-sample-rateДля устранения распространённого ограничения, когда фильмы с частотой 48000 Гц без необходимости преобразовывались в 44100 Гц, некоторые модули поддерживают динамическое переключение частоты дискретизации, чтобы избежать передискретизации, когда это возможно. Более подробную информацию смотрите в документации. Обычно это не нужно изменять.

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

default-fragmentsАудиосэмплы разделяются на множество фрагментов длиной по мс. Чем больше буфер, тем менее вероятен пропуск звука, когда система будет перегружена. С другой стороны это увеличит общую величину задержки. Увеличьте это значение, если у вас есть проблемы.

default-fragment-size-msecРазмер каждого фрагмента в миллисекундах. Это количество данных, которое будет обработано демоном за один раз.

default.pa

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

client.conf

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ПеременнаяОписание

Определяет, где находится сервер. Он принимает префикс протокола, например unix: или , после которого идёт путь или IP сервера. Пример: .

Пут к файлу, содержащему случайный файл cookie, сгенерированный PulseAudio. Этот файл будет считываться клиентами, а его содержимое отправляться на сервер, поэтому файл должен быть доступен для чтения всем клиентам. Это не обязательно должен быть один и тот же файл; главное, чтобы его содержимое совпадало с содержимым того файла, который использует демон.

Свойства X11

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

СвойствоОписание

Строка (), работает аналогично переменной окружения с таким же названием.

Строка, содержащая шестнадцатеричное представление значения cookie для аутентификации.

Запуск

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

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

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

Остановка

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

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

ALSA

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

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

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

# rmmod snd_pcm_oss

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

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

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

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

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

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

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

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

  • Удалите пакет pulseaudio-alsa, обеспечивающий уровень совместимости между приложениями ALSA и PulseAudio. После этого Ваши приложения ALSA будут использовать ALSA напрямую, без "зацепки" Pulse.
  • Создайте файл настроек в каталоге /etc/pulse/default.pa.d/ для выгрузки модулей автоматического обнаружения и статической загрузки нужных модулей бэкенда. Добавьте параметры device как показано ниже:
  • Дополнительно: если вы используете , вы можете управлять громкостью ALSA вместо громкости PulseAudio, установив переменную окружения .
  • Теперь, перезагрузите свой компьютер и попытайтесь запустить одновременно приложения ALSA и PulseAudio. Они оба должны воспроизводить звук одновременно.
При необходимости используйте для управления звука PulseAudio.

OSS

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

ossp

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

Оболочка padsp

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

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

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

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

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

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

GStreamer

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

OpenAL

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

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

libao

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

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

PulseEffects

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

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

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

Эквалайзер

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

Модуль LADSPA

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

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

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

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

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

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

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

### 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 есть модули для компрессии. Установите и измените файл настроек PulseAudio следующим образом:

Узнать название основного вывода можно с помощью команды . Перезапустите 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. Установите и измените конфигурацию следующим образом:

~/.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 optionDefaultMinMaxTypeInfo

Bypass001Bool

Level in10.01562564Float db

Threshold0.1250.0009765631Float dbFsFor example, to set -18 db, the right value is 10^(-18/20) = 0.158

Ratio2120Float

Attack200.012000Float ms

Release2500.012000Float ms

Makeup1164Float db

Knee2.82842712518Float db

RMS/Peak001Bool0 = RMS; 1 = Peak

Stereo Link001Bool0 = Average; 1 = Max

Mix101FloatPercentage

Описание каждого параметра доступно в документации.

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

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

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

$ pulseaudio -k
$ pulseaudio --start

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

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

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

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

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

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

  • - Аналоговая АРУ - 'Автоматическая Регулировка Усиления' осуществляется путем прямого изменения громкости - скорее всего приведет к искажениям.
  • - Цифровая АРУ - 'Автоматическая Регулировка Усиления' осуществляется постобработкой (более высокая нагрузка на процессор).
  • - Позволяет включить экспериментальный механизм АРУ webrtc.
  • - Уровень начальной громкости при использовании АРУ - Возможные значения 0-255 - Слишком низкий уровень начальной громкости может вовсе нивелировать возможность алгоритма АРУ повысить уровень громкости до достаточного значения .
  • - ?
  • - Подавитель шума.
  • voice_detection=1 - VAD - Обнаружение голосовой активности.
  • - Расширенный фильтр, более сложный и устойчивый к неверной задержке ответа от аппаратных устройств, чем обычный фильтр. Расширенный фильтр по умолчанию не активен, так как даёт худшие результаты при обычном разговоре . Включите этот параметр, если ваш микрофон или динамик имеет большую задержку, например, если вы используете беспроводной микрофон или некоторые телевизоры HDMI в качестве динамика.
  • - Некоторая настройка для webrtc усилителя разбора сигнала.
  • drift_compensation=0 - Компенсация отклонений позволяет избежать эффекта эха между различными устройствами (такими как колонки вашего ноутбука и микрофоном USB вебкамеры). - работает только с "mobile=0".
  • - Это может значительно снизить фоновый шум. Смотрите
    • - Работает только с "beamforming=1".
    • - Работает только с "beamforming=1". Примечание: Если модуль не хочет загружаться с этим параметром, установите азимут (a) на желаемое значение, а высоту (e) и радиус (r) установите на 0.
  • - ?
    • - Возможные значения "quiet-earpiece-or-headset,earpiece,loud-earpiece,speakerphone,loud-speakerphone" - работает только с "mobile=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.

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

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

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

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

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

Приложения

QEMU

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

AlsaMixer.app

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

$ AlsaMixer.app --device pulse

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

# 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

Смотрите также официальное руководство .

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

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

Один полезный совет с этой страницы заключён в том, что следует загружать . Обычно это происходит автоматически при входе в систему с помощью скрипта , но если этого не произошло, вы можете добавить его вручную в файл настроек в каталоге /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 с опцией . Он также может быть настроен для использования вывода PulseAudio по умолчанию, в для конкретного пользователя, или для всей системы :

mpv

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

guvcview

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

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

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

Сетевой звук

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

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

Или можно использовать графическое приложение (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 не подходит, можно разрешить доступ к серверу анонимным клиентам, добавив опцию в на сервере (опять же в /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 :

  1. Добавьте пользователя pulse. Демон PulseAudio будет переключаться на него после запуска.
  2. Опционально добавьте пользователя pulse в группу bluetooth, если он у вас есть (bluez) и вы хотите позволить PulseAudio использовать bluetooth.
  3. Добавьте группу pulse-access, которая будет использоваться для контроля доступа к серверу PulseAudio.
  4. Добавьте в группу pulse-access пользователей, которым вы хотите предоставить доступ к общесистемному экземпляру PulseAudio.

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

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

# systemctl --global mask pulseaudio.socket

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

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

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

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

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

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

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

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

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

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

Привяжите следующие команды к своим кнопкам регулировки громкости: , , . Подробнее это рассмотрено здесь: Горячие клавиши#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

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

Установите перед командой (замените на 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/ или :

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

$ xset b 100

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

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

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

По умолчанию этот модуль отключен, так как его поведение слишком агрессивное, но его можно включить добавлением строки в файл .

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

Некоторые звуковые карты обладают несколькими аналоговыми выходами, которые можно переключать через профили 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-

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

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

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

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

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

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

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

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

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

gollark: It sort of holds together, but not in an elegant, consistent or comprehensible way.
gollark: And law/regulation never seems to decrease in complexity. Ever.
gollark: no.
gollark: Lawyers don't know all of it and they have years of training.
gollark: And specific.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.