PulseAudio
PulseAudio, ранее известный как Polypaudio, — звуковой сервер для систем POSIX и WIN32. Это замена звуковому серверу ESD с намного меньшим временем задержки, лучшим качеством микширования и дискретизации и лучшей общей архитектурой.
- Высококачественное программное микширование нескольких аудиопотоков с
- поддержкой более одного входа и выхода. Может использоваться для объединения нескольких звуковых карт в одну (с изменением частоты дискретизации).
- ESD, ALSA, oss, libao и GStreamer, поддерживаются без необходимости внесения каких-либо изменений в них. Модули для работы PulseAudio доступны для xmms и mplayer.
- времени задержки для воспроизведения и записи. Возможность полной синхронизации нескольких потоков воспроизведения.
- или записывать звук на компьютере, отличном от того, на котором они выполняются.
- lirc и avahi, в числе прочих.
Установка PulseAudio
Установить звуковой сервер можно командой
# aptitude install pulseaudio
Настройка для приложений, использующих ALSA
- Это позволит в настройках програм указывать устройство pulse для вывода звука.
pcm.pulse type pulse > ctl.pulse type pulse >
Если вы хотите, чтобы PulseAudio стал устройством по умолчанию для ALSA-приложений используйте эти настройки:
pcm.!default type pulse > ctl.!default type pulse >
Если вы пропустите последние 2 группы, Pulseaudio не будет использоваться по умолчанию. Для корректной работы нужно изменить «alsa device» на «pulse» в каждой используемой программе.
Альтернативные конфигурации
Системы объемного звука
Многие люди имеют многоканальные звуковые карты, но используют акустические системы для двух каналов. PulseAudio не имеет настроек по умолчанию для поддержки объемного звука. Для включения поддержки все каналов отредактируйте файл /etc/pulse/daemon.conf: раскомментируйте строку default-sample-channels (т.е. удалите точку с запятой в начале строки) и установите значение в 6 если у Вас система 5.1, или в 8, если у Вас система 7.1.
# По умолчанию default-sample-channels=2 # Для 5.1 default-sample-channels=6 # Для 7.1 default-sample-channels=8
После внесения изменений необходимо перезапустить Pulseaudio.
Решение проблем
Отсутствие устройств воспроизведения или захвата звука
Если после обновления или спустя некоторое время Pulseaudio перестал правильно определять входные/выходные устройства и источники, попробуйте очистить конфигурационные файлы pulseaudio. Для этого удалите папки: ~/.pulse, ~/.pulse-cookie и /tmp/.esd-* . Принудительно завершите процесс pulseaudio командой:
# killall -9 pulseaudio
$ pulseaudio --start
Если это не поможет также удалите и /etc/pulse и переустановите PulseAudio.
Хрипы и прерывания звука
Если на маломощной машине возникают хрипы, то в /etc/pulse/daemon.conf пропишите следующее:
high-priority = no nice-level = -1 realtime-scheduling = yes realtime-priority = 5 flat-volumes = no resample-method = speex-float-1 default-sample-rate = 48000
Прерывание воспроизведения в Amarok при запущенном Skype
Закомментируйте или удалите строчку в /etc/pulse/default.pa
load-module module-cork-music-on-phone
Непомерное использование ресурсов процессора и искажения
Добавьте строчку в /etc/pulse/default.pa
load-module module-udev-detect tsched=0
Низкий уровень звука или тихий звук
Добавьте строчку в /etc/pulse/daemon.conf :
flat-volumes = no
Различные проблемы со Skype и Wine
Добавьте или раскомментируйте строчки в /etc/pulse/daemon.conf
default-fragments = 10 default-fragment-size-msec = 5
Ссылки
Кратко о PulseAudio
Обзор хорошо написан в википедии.
Cводный список основных отличий от Alsa:PulseAudio — «слой звуковой абстракции», принимающий звуковой поток от приложений и передающий его Alsa;
PulseAudio оперирует объектами и позволяет перенаправлять звуковой поток между ними (роутинг);
PulseAudio — демон, обычно запускаемый от имени пользователя;Позволяет передавать звук по сети и «расшаривать» микрофоны, установленные на других компьютерах. Теперь при отключении USB-колонки ни одна прога не подвиснет, а будет переброшена на другую доступную карту.
Установка Pulseaudio 2.0
На данный момент (6.08.2012) в репозиториях Ubuntu 12.04 лежит пакет pulseaudio версии 1.1, тем временем уже давно доступна версия 2.0, поэтому если у вас есть какие либо проблемы со звуком, есть смысл попробовать установить более новую версию. Улучшения описаны на официальном сайте(eng).
sudo add-apt-repository ppa:ubuntu-audio-dev/ppa sudo apt-get update && sudo apt-get upgrade
для восстановления предыдущей версии:
sudo apt-get install ppa-purge && sudo ppa-purge ppa:ubuntu-audio-dev
Заикается звук в skype
Проблема со skype и pulseaudio.
На старом проце (AMD Athlon™ XP 1500+), звук в скайпе сильно квакает.
Процессор нагружен на 100%.
Долго разбирался, в результате нашёл инструкцию http://pc-freak.net/blog/fix-to-gnome-pulseaudio-server-crappy-sound-on-debian-gnu-linux-pulseaudio-debian-workaround/
Продублирую:
прописываем в файле /etc/pulse/daemon.confdefault-fragments = 8 default-fragment-size-msec = 5
ставим пакет sudo apt-get install paprefs
после установки запускаем от имени простого пользователя,
На закладке Simultaneous output
ставим галку «Add virtual output device for simultaneous output on all local sound cards»pulseaudio -k
если не поможет попробуйте дополнительно прописать в файле /etc/pulse/daemon.conf следующие настройки.
enable-shm = yes shm-size-bytes = 0
high-priority = yes nice-level = -11
realtime-scheduling = yes realtime-priority = 5
и снова перезапускаем
pulseaudio -k
Замечено, что чем меньше клиентов у pulseaudio тем лучше он работает, не зависимо от нагрузки процессора.
Поэтому, особенно на слабых процессорах, когда разговариваете по skype рекомендую закрывать других клиентов.
Таким клиентами являются: видео проигрыватель, музыкальный проигрыватель и даже pavucontrol.Основные понятия PulseAudio
Card, Sink & Source
Известно, что у звуковой карты два типа гнёзд: входы (line in, микрофон) и выходы (наушники, line out, S/PDIF). В типовой конфигурации для каждой имеющейся звуковой карты и её «гнёзд» PulseAudio создаёт следующие объекты:
Card. Объект представляет физическую звуковую карту со всеми её входами и выходами;
Sink (англ. низина) — «сток», принимающий звуковой поток. Представляет выход звуковой карты: линейный выход, наушники, колонки ноутбука;
Source (англ. источник) — источник звука, создающий звуковой поток. Представляет вход звуковой карты: линейный вход, микрофон.
В PulseAudio задаётся «default Sink» и «default Source»: объекты, используемые по умолчанию для свежезапущенных приложений. Замечу, что Sink не обязательно должен описывать физический порт звуковой карты: это абстракция приёмника потока звука. PulseAudio — штука высокоуровневая и позволяет создавать весьма «хитрые» объекты: например, Sink типа ‘NULL’ (реализуемый модулем PulseAudio module-null-sink) просто поглотит звук, а модуль module-pipe-sink позволит передавать звуковой поток через файл FIFO. Также можно создавать сетевые Sink’и, ведущие multicast-вещание или передающие звуковой поток определённому хосту. Всё это реализуется модулями PulseAudio.
Итак, звук проигрывается через «Sink», а записывается через «Source».
Sink-Input & Source-Output
Sink-Input Когда приложение, поддерживающее PulseAudio, собирается проигрывать звук — оно направляет свой вывод в один из объявленных Sink’ов и становится «входом Sink’a»: Sink Input. Приложение может создавать несколько потоков вывода, создавая отдельные Sink-Input’ы для каждого потока.
Source-Output. Если же приложение собирается принимать звук из некоторого Source (звукозапись) — оно становится «выходом Source’а»: Source-Output.
Каждый Sink-Input по умолчанию связываться с одним из Sink’ов и передаёт звуковой поток. PulseAudio далее определяет с чем связан Sink (например, звуковая карта) и передаёт его по назначению. Существует особый тип Source’а: Monitor. Для каждого Sink’а может быть создан отдельный монитор, позволяющий вести запись. Так, получается запись «звука из колонок».
Итак, медиаплеер создаёт Sink-Input, а Skype — и Sink-Input, и Source-Output.
module, client, sample
В рамках статьи — чисто информационные 🙂
Module. Загруженный модуль PulseAudio. Например, загрузка module-alsa-sink с заданием пераметров, указывающих на устройство Alsa — создаст Sink, связанный с этим устройством. Существуют и другие модули, создающие объекты PulseAudio, позволяющие управлять им, использовать FIFO для обмена звуковым потоком и многое другое;
Client. Приложение, подключившееся к PulseAudio. Может создавать потоки Sink-Input и Source-Output и управлять демоном PulseAudio.
Sample. Звуковой сэмпл, загруженный в PulseAudio для быстрого воспроизведения. Может использоваться для проигрывания стандартных звуков. Например, x11 bell. Могут проигрываться по команде от модуля, клиента или из консоли.
ALSA → PulseAudio
Конечно же, сперва нужно убедиться что PulseAudio установлен и запущен:
sudo apt-get install pulseaudio pulseaudio --start -D
Далеко не каждое приложение умеет работать с PulseAudio напрямую: обычно они умеют использовать Alsa. Для таких приложений нужно сообщить, чтобы Alsa перенаправляла их звуковые потоки к PulseAudio. Для этого в файл ~/.asoundrc вставляем следующие строки (Которые, кстати, вылечат микрофон Skype’а! если ещё отключить «Позволить скайп автоматически подстраивать громкость»):
pcm.pulse < type pulse >ctl.pulse < type pulse >pcm.!default < type pulse >ctl.!default
Первые две строки создадут виртуальные устройства ALSA с именем ‘pulse’ для ввода и вывода, а также устройство контроля (громкости). Следующие две — определяют их как «по умолчанию»: теперь все приложения вместо Alsa будут использовать PulseAudio через специальный плагин (и ничего не подозревать). Для применения измений нужно перезапустить звуковые приложения. Свежезапущенные приложения подхватят изменения сами. Приложения, использующие OSS (/dev/dsp), нужно запускать через враппер
padsp [options] PROGRAM [ARGUMENTS . ]
Программы управления Pulseaudio
GUI инструменты
Если Вы читаете эту статью чтобы решить пару нюансов и не вникать — рекомендуется попробовать GUI -tools, описанные на странице PulseAudio. С помощью pavucontrol можно будет быстро выбрать устройство записи «по умолчанию» (Input Devices, кнопка справа «Set as fallback») и Skype будет работать 🙂 Также pavucontrol позволяет управлять громкостью общей и отдельных приложений.
veromix
Многофункциональный микшер для звукового сервера PulseAudio, имеющий Python / GTK и QT (pyqt) графический интерфейс. Позволяет управлять LADSPA плагинами. Установка через Центр приложений Ubuntu или через консоль:
sudo apt install veromix
PulseEffects
Удобное Python / GTK графическое приложение для набора PulseAudio эффектов. Множество плагинов в комплекте. Установка через консоль:
sudo add-apt-repository ppa:mikhailnov/pulseeffects -y sudo apt update sudo apt install pulseeffects pulseaudio --install-recommends
Консольные инструменты
pactl
Управление PulseAudio осуществляется с помощью команды pactl, про которую нельзя сказать что она удобная и продвинутая 🙂 однако тренироваться будем с ней.
pacmd
Кроме pactl существует другая утилита для управления PulseAudio: pacmd. Если к PulseAudio подключен модуль module-cli-protocol — создаётся UNIX-сокет на котором висит PulseAudio-shell. Это во многом похоже на telnet. Шелл принимает текстовые команды и исполняет их. pacmd help покажет список доступных команд.
Проблема в том, что pactl умеет не всё, а pacmd не так удобен в использовании. В дальнейшем будем придерживаться pactl, однако если его функционала не хватит — используем pacmd.patricks
Утилита для управления демоном PulseAudio 🙂
Короткие, интуитивные команды
Дозированная подача информации командой ls: теперь в терминал не будет вываливаться тонна информации (особенно properties)
Все объекты — в том числе порты и профайлы — можно задавать как по имени, так и по индексу
Команда set sink 0 port next — можно не гадать номер порта и просто переключиться на следующий. Удобно для хоткея.
Наличие команды mv sink 0 all для перемещения всех звуковых потоков в нужный Sink (USB-Колонка)
Полакомиться можно на GitHub: ootync/Patricks (файлы скрипта положить куда-нибудь и сделать симлинк на patricks.php)
Пример работы: Посмотреть список Sink’ов. Текущий Sink выделен символом >:
ootync@rtfm ~ $ patricks ls sinks >Sink#0 Sink#1
Внимательнее присмотретсья к Sink #0:
ootync@rtfm ~ $ patricks ls sink 0 Sink#0 alsa_output.pci-0000_00_1b.0.analog-stereo> Is Default: yes Description: Internal Audio Analog Stereo State: RUNNING Driver: module-alsa-card.c Owner Module: Module#4 Sample Spec: s16le 44100ch 2Hz Channel Map: front-left, front-right Mute: no Volume: 25% Base Volume: 100 Latency: 199703 Configured Latency: 210000 Flags: HARDWARE, HW_MUTE_CTRL, HW_VOLUME_CTRL, DECIBEL_VOLUME, LATENCY Ports: analog-output, analog-output-headphones Active Port: analog-output Monitor Source: Source#0 Id: 0 Name: alsa_output.pci-0000_00_1b.0.analog-stereo Proplist: 33 items
Внимательнее посмотреть на список портов Sink #0:
ootync@rtfm ~ $ patricks ls sink 0 ports >#0 analog-output: "Analog Output" prio=9900 #1 analog-output-headphones: "Analog Headphones" prio=9000
Переключить Sink #0 на следующий порт
ootync@rtfm ~ $ patricks set sink 0 port next Sink#0 alsa_output.pci-0000_00_1b.0.analog-stereo>: analog-output-headphones
Перекинуть все Sink-Input’ы на следующий Sink (например, свежеподключенную USB-колонку)
ootync@rtfm ~ $ patricks mv sink next all Moving 1 inputs {65} to sink "alsa_output.pci-0000_00_1b.0.analog-stereo". Sink#0 alsa_output.pci-0000_00_1b.0.analog-stereo>: default sink
Настройка
Обзор
Для начала давайте посмотрим что у нас есть: какие объекты определены в PulseAudio. Рекомендую запустить фоновую музыку чтобы было на что смотреть Команда
pactl list
покажет длинный список существующих объектов.
У каждого объекта есть набор описывающих его полей, а также специальное поле «Properties»: список key-value свойств (обычно строковых).
У всех объектов есть index (Sink #0) — уникальный номер объекта определённого типа. Также многие объекты имеют имена (Name: ): index и Name можно использовать для обращения к конкретному объекту.Рекомендую присмотреться к полям объектов Sink и Source: по умолчанию они описывают Ваше железо. Покажу свой пример:
Sink #1 — Sink: вопроизводит звук State: RUNNING — Sink работает: через него проигрывается музыка Name: alsa_output.pci-0000_00_1b.0.analog-stereo — Уникальное имя Sink'а Description: Internal Audio Analog Stereo — Текстовое описание Sink'а Driver: module-alsa-card.c — Используемый "драйвер": модуль PulseAudio, создавший этот Sink Sample Specification: s16le 2ch 44100Hz — Параметры дискретизации, количество каналов, кодирование. Channel Map: front-left,front-right — Звуковые каналы Owner Module: 5 — index модуля, создавшего этот Sink Mute: no Volume: 0: 26% 1: 26% — Громкость обоих каналов 0: -35.42 dB 1: -35.42 dB balance 0.00 Base Volume: 100% — "Базовая громкость": указывает на некоторую "неусиленную" громкость устройства вывода 0.00 dB Monitor Source: alsa_output.pci-0000_00_1b.0.analog-stereo.monitor — Имя "монитора", связанного с этим Sink (виртуальный Source: позволяет писать "звук с колонок") Latency: 161458 usec, configured 210000 usec — Параметры звукового лага Flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY Properties: . — Всякие свойства. Там можно увидеть имя устройства Alsa, куда этот Sink отдаёт звук Ports: — Порты Sink'а: соответствуют физическим портам звуковой карты analog-output: Analog Output (priority. 9900) — Выход наушников analog-output-speaker: Analog Speakers (priority. 10000) — Колонки ноутбука Active Port: analog-output-speaker — Текущий выбранный порт: музыка у меня играет из колонок ноута. Card #1 — Физическая звуковая карта Name: alsa_card.pci-0000_00_1b.0 Driver: module-alsa-card.c Owner Module: 5 Properties: . Profiles: — Профили звуковой карты: выбранный пресет маппинга физических портов. output:analog-stereo: Analog Stereo Output (sinks: 1, sources: 0, priority. 6000) output:analog-stereo+input:analog-stereo: Analog Stereo Duplex (sinks: 1, sources: 1, priority. 6060) output:iec958-stereo: Digital Stereo Duplex (IEC958) (sinks: 1, sources: 0, priority. 5500) output:iec958-stereo+input:analog-stereo: Digital Stereo (IEC958) Output + Analog Stereo Input (sinks: 1, sources: 1, priority. 5560) input:analog-stereo: Analog Stereo Input (sinks: 0, sources: 1, priority. 60) off: Off (sinks: 0, sources: 0, priority. 0) Active Profile: output:analog-stereo+input:analog-stereo Source #1 — Source: позволяет записывать звук State: IDLE — Source бездействует: я ничего не записываю :) Name: alsa_output.pci-0000_00_1b.0.analog-stereo.monitor Description: Monitor of Internal Audio Analog Stereo Driver: module-alsa-card.c Sample Specification: s16le 2ch 44100Hz Channel Map: front-left,front-right Owner Module: 5 Mute: no Volume: 0: 100% 1: 100% 0: 0.00 dB 1: 0.00 dB balance 0.00 Base Volume: 100% 0.00 dB Monitor of Sink: alsa_output.pci-0000_00_1b.0.analog-stereo — Этот Source создан как монитор 1го Sink'а: из него можно записывать то что слышно из колонок Latency: 0 usec, configured 1999818 usec Flags: DECIBEL_VOLUME LATENCY Properties: .
Card Profile: маппинг портов звуковой карты
У звуковой карты ограниченное количество разъёмов, а применений им может найтись масса: можно задействовать все под вывод звука 5.1 и оставить один для микрофона; или же оставить один джек под стерео-выход, зато получить входы для микрофона и линейный; или…
Увы, магия здесь не прокатит: наборы предустановлены производителем. Их список можно посмотреть в поле «Profiles» объекта «Card». Для каждого профиля задаётся приоритет (priority): число, определяющее «степень привлекательности» именно этого профайла. По умолчанию PulseAudio выбирает профайл с наибольшим приоритетом. Для каждого профайла указывается сколько Sink’ов и Source’ов он породит если его выбрать: sinks: 1, sources: 0.На данный момент нельзя изменить приоритеты, однако можно выбрать тот или иной профиль. Подсматриваем в выводе pactl list имя карты и профиля, и выбираем:
pactl set-card-profile 'alsa_card.pci-0000_00_1b.0' 'output:analog-stereo+input:analog-stereo'
Всё, порты карты переназначены. Можно вообще выключить все разъёмы, выбрав профайл «off»:
pactl set-card-profile 'alsa_card.pci-0000_00_1b.0' 'off'
Sink Port: переключение звука на наушники
У одного Sink’а может быть несколько звуковых портов. Например, Sink созданный на основе звуковой карты ноутбука, может иметь два порта: встроенные колонки и выход на наушники. Текущий порт Sink’а можно посмотреть в его поле Active Port: analog-output-speaker. Глядя на список Ports нужного объекта Sink, назначаем порт:
pactl set-sink-port 'alsa_output.pci-0000_00_1b.0.analog-stereo' 'analog-output'
и звук моментально перебрасывается на наушники, отключая колонки.
Аналогично для Source. Возможно, Ваш микрофон не работает в Skype именно из-за того что выбран не тот порт записи 🙂Default Sink: звуковой выход по умолчанию
PulseAudio метит один из Sink’ов как «по умолчанию»: новые запущенные приложения по умолчанию будут проигрываться через него. Другими словами, если приложение при создании Sink-Input’а не выбирает Sink самостоятельно (например, из пользовательских настроек) — выбирается default-sink. Sink по умолчанию можно посмотреть выполнив команду pactl stat:
$ pactl stat . Default Sink: alsa_output.pci-0000_00_1b.0.analog-stereo Default Source: alsa_input.usb-046d_0802_0825F490-02-U0x46d0x802.analog-mono
Изменим его: смотрим имя нужного Sink’а и пишем:
pacmd set-default-sink '1'
Обратите внимание что pacmd в некоторых случаях позволяет использовать номера вместо длинных имён. Аналогично для Source. Кстати, неверно выбранный default-Source тоже может не давать общаться в Skype 🙂
Move Sink-Input: перемещение звукового потока
Этим действием можно перекинуть Sink-Input с одного Sink’а на другой. Таким образом можно перебросить музыку на только что подключенную USB-колонку. Смотрим имена двух Sink’ов, находим нужный Sink-Input и пишем:
pactl move-sink-input 16 '1'
и звук Sink-Input#16 моментально переключается на Sink #1. Это может быть USB-колонка. Увы, перебросить сразу все Sink-Input’ы с помощью pactl или pacmd нельзя. В конце статьи будет решение. Source-Output также можно переключать между Source’ами.
Управление громкостью
Громкость в PulseAudio задаётся численно: 0..65535 (соответствует 0% и 100%), а также — сюрприз! — значения большие чем 100% вызывают усиление сигнала что незаменимо при просмотре фильмов с ненормализованной громкостью. Здесь можно использовать index Sink’а:
pactl set-sink-volume '1' 100 # очень тихо! 100/65535 = 0,15% pactl set-sink-volume '1' 65535 # 100% pactl set-sink-volume '1' 78642 # 120% — усиление pactl set-sink-mute '1' true # соседи могут засыпать
Усиление может вызывать clipping: всем известный «дребезг». Аналогично можно управлять громкостью Source’ов. UPD: с версии 0.9.15 появилась фича «FLAT_VOLUME» (её можно увидеть в Sink ‘Flags’). При наличии этого флага громкость Sink’а автоматически устанавливается как максимальная громкость всех Sink-Input’ов. Отключить её можно так: echo «flat-volumes = no» » /etc/pulse/daemon.conf
Громкость приложений
С появлением Windows7 линуксоиды, не знакомые с PulseAudio, обзавидовались возможности регулировать громкость отдельных приложений 🙂 Теперь это возможно: смотрим index нужного Sink-Input’а и усиливаем отдельное приложение:
pactl set-sink-input-volume '16' 80000
Приостановка
Sink и Source можно «приостановить»:
pactl suspend-sink '1'
Конфиг
Когда Вам в голову придёт мысль добавить одну из этих команд в автозагрузку — немедленно выбросьте её! В таких случаях нужно использовать файл конфигурации PulseAudio. Пример можно найти в файле /etc/pulse/default.pa. Обратите внимание на shebang #!/usr/bin/pulseaudio -nF: это скрипт, синтаксис которого очень похож на команды, которые понимаем pacmd. Для самообразования: pacmd — Запускает интерактивную консоль PulseAudio
pacmd help — список команд, на оффсайте
Модули PulseAudioЗвуковой сервер
Одна из интереснейших возможностей аудиосервера pulseaudio — это передача аудиопотока по сети на удалённые аудиоустройства. В общем случае- это сервер с подключенными колонками.
В результате Вы получаете полностью отвязанный от проводов 1) ноутбук, воспроизводящий звук при просмотре любимых фильмов на большую акустическую систему.
Для прослушивания музыки данный способ не рекомендуется, проще и качественнее использовать mpd на сервере плюс какой любо клиент на ноутбуке.Настройка клиента
Настройка клиента тривиальна. Раньше для выбора сервера для воспроизведения использовалась утилита padevchooser, теперь этот проект заброшен и ему на смену пришел пакет pasystray.
Для его установки необходимо добавить сторонний PPA ppa:christoph-gysin/pasystray.sudo apt-add-repository ppa:christoph-gysin/pasystray sudo apt-get update sudo apt-get install pasystray
Pasystray не запустится, если у вас не запущен avahi-daemon, данная служба необходима, как раз, для сканирования локальной сети на предмет наличия общедоступных сервисов. Поэтому если вы её, по каким либо причинам удаляли, то необходимо установить:
sudo apt-get install avahi-daemon
Необходимо добавить запись Pasystray в whitelist панели unity для того, что бы иконка могла отображаться.
С помощью данной утилиты вы можете выбрать сервер pulseaudio, доступный в текущей сети (пункт меню Default Server), и управлять основными его функциями (для этого в меню предусмотрены специальные пункты, и если какие либо из них не доступны, значит в вашей системе не установлены приложения, которые для них требуются) Manager…— запускает paman
Volume Control…— запускает pavucontrol
Volume Meter()…— запускает pavumeterВ стандартных наборах иконок нет иконки для pasystray, поэтому на панели она может выбиваться из общего стиля, для замены необходимо создать символьную ссылку, например так:
Для AwOkensudo ln -s /usr/share/icons/AwOken/clear/24x24/apps/covergloobus.png /usr/share/icons/AwOken/clear/24x24/apps/pasystray.png
Для Faenza-Ambiance (светлая панель)
sudo ln -s /usr/share/icons/Faenza/status/24/covergloobus-panel.png /usr/share/icons/Faenza/status/24/pasystray.png
Для Faenza-Radiance (темная панель)
sudo ln -s /usr/share/icons/Faenza-Dark/status/24/covergloobus-panel.png /usr/share/icons/Faenza-Dark/status/24/pasystray.png
Настройка сервера
Ставим Avahi, если не стоит:
sudo apt-get install avahi-daemon
Нам необходим pulseaudio и модуль, автоматически размещающий данные о наличии аудиосервера в локальной сети через службу Avahi.
sudo apt-get install pulseaudio pulseaudio-module-zeroconf esound
Создадим группу audio, участники которой имеют право доступа к аудиоустройствам:
sudo groupadd audio
Добавим себя в эту группу:
sudo gpasswd -a user audio
Добавим себя ещё и в эту группу, для доступа к pulseaudio:
sudo gpasswd -a user pulse-access
Поставим alsa.
sudo apt-get install alsa libasound2-plugins
Убедимся, что вам доступны аудиоустройства. Эта комманда покажет список доступных устройств в системе.
aplay -l
Подправим конфиг pulseaudio:
sudo nano /etc/pulse/default.pa
Для доступа из сети к аудиосерверу раскомментируете три строки и добавьте параметры загрузки модулей module-esound-protocol-tcp и module-native-protocol-tcp:
### Network access (may be configured with paprefs, so leave this commented ### here if you plan to use paprefs) load-module module-esound-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/16 load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/16 load-module module-zeroconf-publish
где 127.0.0.1;192.168.0.0/16 — это сети, в которых будет доступен наш сервер 2) . По умолчанию pulseaudio слушает порт 4317, если вы изменяли настройки iptables, не забудьте его открыть 3) .
С конфигом всё.Перезагружаем сервер. Если все прошло успешно — то сервер должен появится в pasystray в пункте Default Server у клиента 4) .
pulseaudio -D
Остановить так:
pulseaudio -k
Теперь можно добавить службу pulseaudio в автозагрузку.
Если у вас на сервере так же работает mpd, то можно сконфигурировать его на использование выхода- pulseaudio, и тогда он будет сам запускать сервер при старте, таким образом в автозагрузку служб можно будет добавить только mpd. Так же плюсом данного способа будет то, что звук в mpd и приложениях, использующих перенаправление звука, будет выровнена громкость.Использование
Для корректного перенаправления звукового потока необходимо сначала в pasystray, выбрать Default Server @, а потом запускать приложение, воспроизводящее звук.
Проблемы
Проверка схемы перенаправления звука
Если у вас возникают какие либо проблемы и вы хотите проверить работоспособность схемы перенаправления звука, то можно запустить любимый плеер, указав явно сервер pulseadio
PULSE_SERVER=192.168.1.2 deadbeef
Avahi-daemon и локальный домен (.local)
Перенесено в статью о Avahi
Звук не перенаправляется
Иногда возникает ситуация 5) , когда avahi-daemon работает, в pasystray указываем вывод через другой сервер, звук пропадает на локальном компьютере, но не появляется на сетевом (в VLC это сопровождается появлением ошибки).
Решение:Завершаем работу pasystray;
Перезапускаем avahi-daemon, для этого нажимаем Alt + F2 и вводим команду gksu service avahi-daemon restart , в появившемся окне вводим пароль;
Запускаем pasystray для этого нажимаем Alt + F2 и вводим команду pasystray
Воспроизведение звука от двух пользователей одновременно
По умолчанию в pulseaudio заложено следующее поведение: при переключении пользователя в системе звук воспроизводится только от одного пользователя. Это может показаться неудобным тем, кто хочет слышать музыку, запущенную у одного из пользователей, или звуковые оповещения «фонового» пользователя. Для того, что бы появилась возможность слышать звук от нескольких пользователей одновременно, необходимо:
Добавить всех пользователей в группу pulse-access;
В конфигурационном файле /etc/default/pulseaudio (в Ubuntu 14.04 эта настройка перенесена в /etc/init.d/pulseaudio) включаем system-mode:
PULSEAUDIO_SYSTEM_START=1
Автоматическое переключение ввода/вывода звука на подключаемое устройство
При подключении наушников в порт наушников карты PCI драйвер ALSA в PulseAudio автоматически отключает порт громкоговорителей, и, если у вас в карте нет порта линейного выхода или у него меньший приоритет, то порт вывода звука автоматически переключается на наушники. Но если вы подключаете наушники или микрофон по USB или Bluetooth, то ввод/вывод звука на них автоматически не переключается. Чтобы настроить автоматическое переключение ввода/вывода звука на подключаемое устройство, можно подключить модуль PulseAudio module-switch-on-connect. Он переключает сток/источник по умолчанию в PulseAudio на новый появившийся сток/источник, соответствующий новому подключённому устройству, а также переключает все каналы вывода в сток / вывода из источника, используемые приложениями, со старого стока/источника по умолчанию на новый. Он идёт в стандартной поставке PulseAudio и подключается редактированием файла /etc/pulse/default.pa, в него нужно добавить:
### Local additions from load-module module-switch-on-connect
В случае устройства, подключаемого по USB (например, веб-камеры или USB-наушников), альтернативным решением является настройка udev на автоматический запуск скрипта, который переключает в PulseAudio сток/источник по умолчанию и каналы ввода/вывода, при подключении устройства. Для этого нужно создать следующие файлы:
SUBSYSTEM=="sound", KERNEL=="card1", ACTION=="change", RUN+="/usr/local/bin/usb_switch_to_udev.sh"
#!/bin/sh su -c "/usr/local/bin/usb_switch_to.sh" &
#!/bin/sh sleep 5 pacmd set-default-sink pacmd list-sink-inputs | awk ‘/index:/’ | xargs -r -I<> pacmd move-sink-input <>
card1 — название подключаемого устройства, которое можно определить по файлу, появляющемуся в /sys/class/sound при подключении устройства. Скрипт запускает другой скрипт в фон, который, в свою очередь, ждёт 5 секунд, пока появится нужный сток/источник, и затем производит переключение. — имя обычного пользователя, которому нужно выполнить переключение (можно эту строчку повторить несколько раз, меняя только имена пользователей, для переключения нескольким пользователям). — имя стока, соответствующего подключаемому устройству (можно узнать, подключив устройство и выполнив команду pactl list sinks, см. поле name). Если нужно переключить не сток, а источник (подключается не наушники, а микрофон), то вместо set-default-sink будет set-default-source , имя источника можно узнать из вывода команды pactl list sources.
Bauer stereophonic-to-binaural DSP
Пример подключения LADSPA модуля bs2b.
Установить плагинsudo apt install bs2b-ladspa ladspa-sdk
Далее либо командами в консоли, либо с помощью veromix . Получить имя выхода по-умолчанию.
pacmd list-sinks
Например, у меня это alsa_output.pci-0000_00_1b.0.analog-stereo
Установить плагин
pacmd load-module module-ladspa-sink sink_name=[name] master=[default sink] plugin=bs2b label=bs2b control=700,4.5pacmd load-module module-ladspa-sink sink_name=ladspa_out master=alsa_output.pci-0000_00_1b.0.analog-stereo plugin=bs2b label=bs2b control=700,4.5
Установить выход звука через плагин
pacmd set-default-sink ladspa_out
или это же, но мышкой в настройках звука
Если всё заработало, то можно добавить в настройки /etc/pulse/default.pa
Или копируем /etc/pulse/default.pa в ~/.config/pulse/default.pa и вписываем уже в него для применения только для данного пользователя.### BS2B plugin load-module module-ladspa-sink sink_name=ladspa_out master=alsa_output.pci-0000_00_1b.0.analog-stereo plugin=bs2b label=bs2b control=700,4.5 sink_properties=device.description=Bauer_stereophonic-to-binaural set-default-sink ladspa_out
Шумоподавитель для микрофона в skype, steam и т.п.
Сначала проверим работу фильтра.
Запускаем skype с дополнительной переменнойPULSE_PROP="filter.want=echo-cancel" skype
Вписываем в /etc/pulse/default.pa для автозапуска при старте pulseaudio.
Или копируем /etc/pulse/default.pa в ~/.config/pulse/default.pa и вписываем уже в него для применения только для данного пользователя.### Шумоподавитель load-module module-echo-cancel source_name=noechosource sink_name=noechosink source_properties=device.description=Микрофон_с_шумоподавителем sink_properties=device.description=Выход_без_эха set-default-source noechosource
В моём случае эта строка выглядит так:
### Шумоподавитель load-module module-echo-cancel source_name=alsa_input.pci-0000_00_1b.0.analog-stereo sink_name=alsa_output.pci-0000_00_1b.0.analog-stereo source_properties=device.description=Микрофон_с_шумоподавителем sink_properties=device.description=Выход_без_эха set-default-source alsa_input.pci-0000_00_1b.0.analog-stereo.2
Далее в skype (steam и т.п.) указываем в качестве микрофона новый «Микрофон_с_шумоподавителем».
К сожалению, в текущей версии PulseAudio существует баг, из-за которого этот модуль работает только тогда, когда производится не только запись, но и воспроизведение. Скажем, в Skype, Mumble и прочих голосовых телефонах будет все сразу замечательно, а если вы заходите только записать звук, например, через audacity, то следует включить в нем какую-то музыку фоном, даже с минимальной громкостью. Если вы используете второй способ, убедитесь, что нужная вам программа воспроизводит аудио в sink с шумоподавлением, а не напрямую в аудиокарту. Перенести sink можно, например, через pavucontrol. Не воспроизводите музыку в аудиоплеере через sink с шумоподавлением, а то получите звук в моно и 32кГц.
Удаление
На данный момент Pulseaudio доработан и при его использовании не возникает особых проблем, но если, всё таки, проблемы есть 6) , то есть смысл попробовать удалить.
Все нижеописанные действия стоит начинать только в случае крайней необходимости! Инструкция подходит для Ubuntu 9.10 / 10.04 / 10.10 / 11.04 / 11.10
Завершаем работу PulseAudio:
killall pulseaudio
Удаляем ненужные пакеты:
sudo apt-get remove pulseaudio gstreamer0.10-pulseaudio -y
Изменяем настройки gstreamer:
gconftool-2 -s --type string /desktop/gnome/sound/default_mixer_device "alsamixer" gconftool-2 -s --type list --list-type string /desktop/gnome/sound/default_mixer_tracks "[Master]" gconftool-2 -s --type boolean /desktop/gnome/sound/enable_esd false gconftool-2 -s --type string /system/gstreamer/0.10/default/audiosink "alsasink" gconftool-2 -s --type string /system/gstreamer/0.10/default/audiosrc "alsasrc" gconftool-2 -s --type string /system/gstreamer/0.10/default/chataudiosink "alsasink" gconftool-2 -s --type string /system/gstreamer/0.10/default/musicaudiosink "alsasink"
Добавляем репозиторий, содержащий изменённый апплет громкости и пакеты, для нормальной работы без PulseAudio:
sudo add-apt-repository ppa:dtl131/ppa
Обновляем списки репозиториев и обновляем пакеты:
sudo apt-get update && sudo apt-get upgrade
Перезагружаемся.
Теперь нужно добавить новый апплет звука на панель. Для этого жмём правой кнопкой мыши на панели → Добавить на панель… → в списке выбираем Регулятор громкости.
В GNOME Classic из Ubuntu 11.10 требуется зажать Alt и нажать правую кнопку мыши для того, чтобы появился пункт Добавить на панель…
Апплет для Unity
Так как в Unity нет привычной панели с апплетами, нужно установить другой регулятор громкости, к примеру: volti. Для установки, скачайте и установите deb пакет последней версии. Необходимо добавить запись Volti в whitelist панели unity для того, что бы иконка могла отображаться.
Восстановление
Если возникли проблемы и звука теперь вообще нет, или что то не работает — можно легко вернуть все обратно.
Снова ставим PulseAudio:
sudo apt-get install pulseaudio gstreamer0.10-pulseaudio indicator-sound -y
Удаляем добавленный ранее репозиторий и все оставшиеся от него пакеты:
sudo apt-get install ppa-purge sudo ppa-purge ppa:dtl131/ppa
Изменяем настройки GStreamer:
gconftool-2 -s --type string /desktop/gnome/sound/default_mixer_device "" gconftool-2 -s --type list --list-type string /desktop/gnome/sound/default_mixer_tracks "[]" gconftool-2 -s --type boolean /desktop/gnome/sound/enable_esd true gconftool-2 -s --type string /system/gstreamer/0.10/default/audiosink "autoaudiosink" gconftool-2 -s --type string /system/gstreamer/0.10/default/audiosrc "autoaudiosrc" gconftool-2 -s --type string /system/gstreamer/0.10/default/chataudiosink "autoaudiosink" gconftool-2 -s --type string /system/gstreamer/0.10/default/musicaudiosink "autoaudiosink"
Очищаем настройки старого PulseAudio:
rm -r ~/.pulse ~/.asound* sudo rm /etc/asound.conf
Руководство по настройке PulseAudio в Linux Mint
За годы своего существования Linux Mint стал востребованной операционной системой для персональных компьютеров. Как вы уже знаете, одним из ключевых компонентов любой современной операционной системы является ее звуковая система, а Linux Mint использует PulseAudio в качестве звукового сервера по умолчанию. PulseAudio — это мощный и универсальный сервер, который позволяет гибко управлять источниками и выходами звука.
В этой статье мы рассмотрим, как настроить PulseAudio в Linux Mint, включая установку, настройку устройств ввода/вывода по умолчанию, управление уровнем громкости и расширенные настройки. Хотя Linux Mint поставляется с широким спектром предустановленных приложений, могут возникнуть ситуации, когда вам потребуется установить дополнительное программное обеспечение. Именно здесь на помощь приходит Flatpak — универсальный формат упаковки. Узнайте, как установить и использовать Flatpak в Linux Mint.
Что такое PulseAudio?
PulseAudio — это звуковой сервер, который предоставляет возможность управлять и контролировать источники и выходы звука в системах Linux, включая Linux Mint. Он был разработан, чтобы позволить нескольким приложениям совместно использовать аудио оборудование и обеспечить гибкий, централизованный способ управления аудио в системах Linux.
Цель PulseAudio — предоставить пользователям унифицированный аудио опыт, позволяя им легко контролировать и управлять источниками и выходами аудио из единого интерфейса. Он может управлять громкостью отдельных приложений, направлять звук на различные выходы и даже обеспечивать звуковые эффекты или DSP-обработку.
PulseAudio работает путем создания виртуального аудиоустройства, к которому могут подключаться приложения. Это виртуальное устройство может быть настроено на использование одного или нескольких физических аудиоустройств, что позволяет нескольким приложениям совместно использовать одно и то же оборудование. PulseAudio также предоставляет возможность управления и контроля аудиопотоков, позволяя пользователям регулировать уровень громкости и баланс между различными входами.
В Linux Mint PulseAudio является звуковым сервером по умолчанию, обеспечивая стабильный и гибкий способ управления звуком. Он используется по умолчанию во многих приложениях и может быть настроен через графический интерфейс или командную строку. Понимание того, как настроить PulseAudio в Linux Mint, необходимо для получения максимальной отдачи от системы и обеспечения плавного и надежного воспроизведения звука.
Установка PulseAudio в Linux Mint
Вы можете установить PulseAudio в Linux Mint как через командную строку, так и через графический интерфейс. Откройте окно терминала и выполните следующую команду:
sudo apt-get install pulseaudio
Он загружает и устанавливает пакет PulseAudio вместе с любыми необходимыми зависимостями. После завершения установки может потребоваться перезагрузка системы, чтобы изменения вступили в силу.
Кроме того, PulseAudio можно установить и через графический интерфейс. Для этого откройте «Менеджер программ» и найдите «PulseAudio». Выберите пакет из результатов поиска и нажмите на кнопку «Установить», чтобы начать процесс установки. Менеджер ПО выполнит установку, и только в самом начале вам будет предложено ввести пароль для авторизации.
После установки PulseAudio автоматически запустится и будет работать в фоновом режиме. Вы можете убедиться, что PulseAudio запущен, открыв приложение «PulseAudio Volume Control», которое доступно в категории «Sound & Video» меню Mint. Это приложение предоставляет отдельный интерфейс для настройки параметров и устройств PulseAudio.
Настройка устройств вывода по умолчанию
PulseAudio позволяет вам установить устройство вывода по умолчанию для воспроизведения аудио — устройство, на которое аудио будет направляться по умолчанию. Чтобы настроить устройство вывода по умолчанию, сначала необходимо определить доступные устройства вывода в вашей системе.
Откройте приложение «PulseAudio Volume Control», чтобы определить доступные устройства вывода. Перейдите на вкладку «Output Devices», чтобы просмотреть список доступных устройств вывода. Вы должны увидеть список таких устройств, как «Динамики», «Наушники», «Выход HDMI» или другие аудио периферийные устройства, подключенные к вашей системе.
Чтобы установить устройство вывода по умолчанию, просто нажмите на зеленый значок галочки рядом с устройством, которое вы хотите установить по умолчанию. Это отметит устройство как выход по умолчанию, и звук будет автоматически направляться на это устройство, если не указано иное. Вы также можете настроить уровень громкости и баланс каждого устройства с помощью ползунков.
Примечание: Некоторые приложения могут переопределять устройство вывода по умолчанию и использовать собственные настройки звука. Чтобы обеспечить постоянное использование устройства вывода по умолчанию, настройте параметры звука в отдельных приложениях.
Настройка устройств ввода по умолчанию
Помимо настройки устройства вывода по умолчанию, PulseAudio позволяет задать устройство ввода по умолчанию для записи звука. Чтобы настроить устройство ввода по умолчанию, сначала необходимо определить доступные устройства ввода в вашей системе.
Откройте приложение «PulseAudio Volume Control», чтобы определить доступные устройства ввода. Перейдите на вкладку «Устройства ввода», чтобы просмотреть список доступных устройств. Вы должны увидеть такой список, как «Внутренний микрофон», «Внешний микрофон» или другие аудио периферийные устройства, подключенные к вашей системе.
Чтобы установить устройство ввода по умолчанию, нажмите на значок зеленой галочки рядом с устройством, которое вы хотите установить по умолчанию. При этом устройство будет отмечено, и аудио будет автоматически записываться с этого устройства, если не указано иное. Вы также можете настроить уровень громкости и баланс каждого устройства с помощью ползунков.
Примечание: Некоторые приложения могут переопределять устройство ввода по умолчанию и использовать собственные настройки звука. Чтобы обеспечить постоянное использование устройства ввода по умолчанию, настройте параметры звука в отдельных приложениях.
Управление уровнями громкости
Помимо настройки устройств ввода и вывода по умолчанию, PulseAudio также предоставляет возможность управления уровнями громкости для устройств и отдельных приложений. Чтобы настроить громкость входного или выходного устройства по умолчанию, откройте приложение «PulseAudio Volume Control» и перейдите на вкладку «Output Devices» или «Input Devices», в зависимости от того, что вы хотите настроить.
Найдите устройство, которым вы хотите управлять, и используйте ползунок для увеличения или уменьшения громкости. Вы также можете настроить баланс между левым и правым каналами для стереоустройств.
Чтобы управлять громкостью отдельных приложений, откройте вкладку «Воспроизведение» или «Запись» в приложении «PulseAudio Volume Control». Там находится список приложений, которые в данный момент воспроизводят или записывают звук. Используйте ползунки для регулировки громкости каждого приложения. Также можно отключить звук отдельных приложений, нажав на значок динамика рядом с названием приложения.
Помимо графического интерфейса, PulseAudio также предоставляет инструмент командной строки под названием «pactl», который можно использовать для управления уровнями громкости. Чтобы увеличить громкость устройства вывода по умолчанию на 10%, вы можете выполнить следующую команду:
pactl -- set-sink-volume 0 +10%
Программное обеспечение для редактирования аудио помогает редактировать аудио в музыку путем перестановки звуков, элементов мелодии, гармонии и ритма.
Расширенные конфигурации
Хотя базовых настроек PulseAudio в Linux Mint должно быть достаточно для большинства пользователей, для тех, кому требуется большая настройка и гибкость, доступны более продвинутые опции.
Одной из продвинутых конфигураций является установка сетевого сервера PulseAudio. Это позволяет воспроизводить аудио с одного компьютера на динамиках другого. Чтобы настроить сетевой сервер PulseAudio, необходимо настроить сервер и клиентские компьютеры на использование сетевого аудиоустройства. Это можно сделать через приложение «PulseAudio Volume Control» или путем редактирования конфигурационных файлов вручную.
Еще одна расширенная возможность — настройка звуковых эффектов. PulseAudio позволяет добавлять звуковые эффекты к аудиовыходу, например, регулировать уровни низких и высоких частот или добавлять реверберацию. Для настройки звуковых эффектов используйте приложение «PulseAudio Equalizer», которое предоставляет интуитивно понятное меню для настройки этих параметров звука. Кроме того, звуковые эффекты можно настроить с помощью команды «pactl» в терминале.
Управление настройками эквалайзера — еще одна расширенная конфигурация в PulseAudio. Эквалайзер PulseAudio» позволяет регулировать настройки эквалайзера для аудиовыхода, например, изменять уровни усиления для различных частотных диапазонов. Это может быть особенно полезно для пользователей, которым необходимо настроить аудиовыход под конкретные жанры музыки или условия прослушивания.
Как было описано ранее, хотя базовых настроек будет достаточно для большинства пользователей, расширенные настройки, включая сетевое аудио, звуковые эффекты и настройки эквалайзера, пригодятся тем, кому требуется больше возможностей для настройки.
Интеграция с другими приложениями
PulseAudio может быть легко интегрирован с другими приложениями Linux Mint, такими как Skype, Discord или музыкальные плееры. Настроив эти приложения на использование PulseAudio, можно гарантировать, что аудиовыход будет соответствовать настройкам, заданным в PulseAudio.
Чтобы настроить приложение на использование PulseAudio, необходимо установить его локально в системе. После установки приложения откройте приложение «PulseAudio Volume Control» и перейдите на вкладку «Воспроизведение» или «Запись».
Затем запустите приложение и воспроизведите аудио или начните запись, после чего приложение должно появиться в списке приложений в разделе «Регулировка громкости».
Если приложение не отображается в списке, вручную настройте его на использование PulseAudio. Обычно это можно сделать через настройки приложения, в которых можно выбрать PulseAudio в качестве устройства вывода или ввода звука.
В некоторых случаях могут потребоваться дополнительные настройки, чтобы приложение правильно использовало PulseAudio. В некоторых музыкальных проигрывателях может потребоваться настроить плагин вывода на использование PulseAudio или выбрать правильное аудиоустройство в меню настроек.
Заключение
Настройка PulseAudio в Linux Mint может значительно улучшить Ваши аудио впечатления и дать Вам больше контроля над этими настройками. Следуя шагам, описанным в этой статье, Вы можете легко настроить устройства вывода и ввода по умолчанию, управлять уровнем громкости и даже интегрировать PulseAudio с другими приложениями.
Мы также рассмотрели расширенные конфигурации, такие как настройка сетевого сервера PulseAudio, настройка звуковых эффектов и управление настройками эквалайзера. Благодаря гибким конфигурациям и интуитивно понятному интерфейсу вы можете легко использовать PulseAudio для точной настройки параметров звука в конкретных случаях использования.
PulseAudio (Русский)
Состояние перевода: На этой странице представлен перевод статьи PulseAudio. Дата последней синхронизации: 2 октября 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.
- PulseAudio/Примеры
- PulseAudio/Решение проблем
- PipeWire (Русский)
PulseAudio — это многофункциональный звуковой сервер, предназначенный для работы в качестве прослойки между приложениями и аппаратными устройствами через ALSA или OSS. Он также с лёгкостью может передавать аудио по сети между локальными устройствами, используя Avahi, если тот доступен. Несмотря на то, что основная цель заключена в простоте настройки звука, его модульная архитектура позволяет более опытным пользователям настраивать демон в соответствии со своими нуждами.
Примечание: Между ALSA и PulseAudio может возникнуть путаница. В состав ALSA входят компонент ядра Linux с драйверами звуковых карт и библиотека libasound , работающая в пространстве пользователя.[1] PulseAudio работает поверх компонентов ядра, но обеспечивает совместимость с libasound через pulseaudio-alsa .[2]
Установка
Некоторые модули PulseAudio были отделены от основного пакета и должны быть установлены самостоятельно, если требуются:
- pulseaudio-alsa для работы PulseAudio с ALSA, смотрите раздел #ALSA
- pulseaudio-bluetooth : поддержка Bluetooth (Bluez), смотрите статью Bluetooth наушники
- pulseaudio-equalizer : эквалайзер устройств вывода (qpaeq)
- pulseaudio-jack : определение устройств вывода, источников JACK и jackdbus
- pulseaudio-lirc : инфракрасный контроль громкости (LIRC)
- pulseaudio-zeroconf : поддержка Zeroconf (Avahi/DNS-SD)
Интерфейсы
Существует множество интерфейсов для управления демоном PulseAudio:
Консольные
- ncpamixer — Микшер на базе ncurses, вдохновлённый pavucontrol.
- pacmixer — Микшер, похожий на Alsamixer.
- PAmix — Микшер на базе ncurses, похожий на to pavucontrol.
- pamixer — Интерфейс командной строки.
- pavolume — Простой регулятор громкости командной строки с сообщениями libnotify.
- Ponymix — Интерфейс командной строки.
- pulseaudio-ctl — Управление громкостью PulseAudio из командной оболочки или с помощью сочетаний клавиш.
- pulsemixer — Микшер CLI и curses.
Графические
- KMix — KDE-приложение для регулировки громкости, поддерживающее несколько платформ, в том числе PulseAudio, настраиваемый апплет в системном трее.
- MicTray — Лёгкое приложение для системного трея, позволяющее управлять состоянием и громкостью микрофона с помощью PulseAudio.
- pa-applet — Апплет системного трея с панелью громкости.
- pasystray — Апплет системного трея.
- plasma-pa — Апплет KDE Plasma для управления громкостью звука с помощью PulseAudio
- PulseAudio Equalizer — Многополосный эквалайзер на основе LADSPA.
- PulseAudio Graph Control — Интерфейс управления громкостью и графом, основанный на Electron.
- PulseAudio Manager — Простой GTK фронтенд. Разработка прекращена.
- PulseAudio Preferences — Простой диалог конфигурации GTK.
- PulseAudio Volume Control — Простой GTK-инструмент управления громкостью («микшер»).
- PulseAudio Volume Control (Qt) — Микшер для PulseAudio (Qt-порт pavucontrol).
- PulseAudio Volume Control (Sandsmark) — Лёгкий форк pavucontrol из LXQt, в котором реализованы недостающие функции pavucontrol, исправлены ошибки и удалены ненужные зависимости.
- PulseAudio Volume Meter — Простой GTK-измеритель громкости для PulseAudio. Разработка прекращена.
- PulseEffects — Аудиоэффекты для приложений PulseAudio.
- Volctl — Апплет для управления громкостью отдельных приложений.
- Xfce PulseAudio Panel Plugin — Плагин PulseAudio для панели Xfce 4.
- pa-notify — Демон уведомления о громкости для PulseAudio или PipeWire.
Настройка
По умолчанию 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), благодаря чему передискретизация будет выполняться только один раз.
Важно: Включение этой функции может привести к искажению звука, поэтому по умолчанию она отключена. Подробнее в примечаниях к выпуску.
Примечание: Поведение значения по умолчанию, иногда, может сбивать с толку, и некоторые приложения не зная об этой функции, могут регулировать свою громкость к 100% при запуске, потенциально создавая неожиданно громкий звук. Для восстановления классического поведения (ALSA), установите это значение в no .
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 установите пакет dcaenc AUR и включите его:
/etc/asound.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
Для знакомства со всеми доступными настройками доступен исходный код.
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. Они оба должны воспроизводить звук одновременно.
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-plugins AUR , если нужная вам программа использует старую реализацию 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-legacy AUR или pulseeffects-legacy-git AUR ).
Для работы плагинов может понадобиться установка дополнительной зависимости 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) Степень снижения усиления, применяемая к входному сигналу, в децибелах. Плагин Calf
Есть более профессиональный компрессор от Calf Studio Gear. Установите calf-ladspa AUR и измените конфигурацию следующим образом:
~/.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: , создайте файл:
/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.
- 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.0
- TeamSpeak:
- Tools -> Options -> Capture
- Отключите: ‘Typing attenuation’, ‘Remove background noise’, ‘Echo cancellation’ и ‘Echo reduction (Ducking)’
- Firefox: смотрите Firefox/Tweaks#Disable WebRTC audio post processing
- Steam:
- В окне «Список друзей» -> Настройки списка друзей (шестерёнка) -> Голосовые чаты -> Дополнительные настройки
- Отключите: «Эхоподавление», «Шумоподавление», «Автоматическая регулировка звука и усиления»
- Skype:
- 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-deb AUR или cadmus-appimage AUR ).
Другой альтернативой является noisetorch AUR , который также построен на базе RNNoise. Здесь есть шумоподавление не только входа, но и выхода.
Приложения
QEMU
Обратитесь к QEMU#Creating an audio backend для детального описания настройки pulseaudio в QEMU.
AlsaMixer.app
Сделайте alsamixer.app AUR dockapp для использования pulseaudio windowmaker AUR , например:
$ 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
$ nyxmms2 server config output.plugin alsa
Для того, чтобы xmms2 использовал другое устройство вывода, например:
$ nyxmms2 server config pulse.sink alsa_output.pci-0000_04_01.0.analog-stereo.monitor
Смотрите также официальное руководство [13].
Рабочая область 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)
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]:
-
Добавьте пользователя pulse. Демон PulseAudio будет переключаться на него после запуска.
# useradd -d /var/run/pulse -s /usr/bin/nologin -G audio pulse
# usermod -aG bluetooth pulse
# groupadd pulse-access
# 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. Но переключение вручную может быть неудобным, и вы можете использовать для этого следующую команду:
$ 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