Windows 10 как включить поддержку звука в wsl2

Pulseaudio — переводим в системный режим

Переходим в каталог

1 cd etcpulse

Там находится четыре файла

12 ls *
client.conf  daemon.conf  default.pa  system.pa

client.conf — настройки для клиентской части звукового сервера.
daemon.conf — настройки Pulseaudio в режиме службы
default.pa — настройка модулей в режиме пользователя
system.pa — настрока модулей в системном режиме

В звуковом сервере нас интересуют файлы daemon.conf и system.pa

Открыаем файл daemon.conf
#Включаем режим сервиса

1234567 #Отключить загрузку модулей пользователем
allow-module-loading = no#Запретить запросы пользователя
allow-exit = no
cpu-limit = no#Приоретет поцесса — устанавливаем наивысший
high-priority = yes

В файл system.pa добавляем:

123 #Загружаем модуль для доступа по сети и настраиваем доступ из локальной сети
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.016
load-module module-zeroconf-publish

запускаем звуковой сервер Pulseaudio, напоминая что настройка ведется из под пользователя root:

1 pulseaudio —system -D

PulseAudio через сеть

Одна из уникальных функций PulseAudio — возможность передачи аудио клиентам через TCP к серверу, запущенному PulseAudio демоном в сети.

Чтобы достичь этого, нужно включить module-native-protocol-tcp.

Поддержка TCP (звук через сеть)

Чтобы включить TCP модуль, добавьте это (или ракомментируйте, если уже есть) в на клиенте и сервере:

load-module module-native-protocol-tcp

Чтобы это работало, клиент и сервер должны разделять общий cookie. Убедитесь, что клиент и сервер разделяют один cookie файл в

Не важно, чей файл они используют (клиента/сервера), просто удоствоверьтесь, что это один и тот же файл.

Поддержка TCP с анонимными клиентами

Если копировать каждый cookie файл клиентам слишком долго, анонимные клиенты пошут получать доступ к серверу, если добавить следующий параметр в module-native-protocol-tcp на сервере(в ):

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

Измените дрес подсети клиента, чтобы они могли подключится.

Zeroconf (Avahi)

Чтобы удалённый PulseAudio сервер появился в списке устройст PulseAudio (), загрузите нужные подули zeroconf и вкючите Avahi daemon.

На обоих машинах выполните:

$ systemctl start avahi-daemon
$ systemctl enable avahi-daemon

на сервере, добавьте в , на клиенте — в . Теперь перенаправляйте любой звук на удалённый PulseAudio сервер,выбрав нужное устройство.

Если вы испытываете проблемы с удалёнными устройствами на клинте, попробуйте перезапустить демона Avahi на сервере и переотправить доступные интерфейсы.

Переключение PulseAudio сервера используя локальные клиенты Х

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

$ pax11publish -e -S foo

И чтобы вернутся обратно:

$ pax11publish -e -r

Вместо того чтобы сообщать серверу PulseAudio потоковую передачу аудио (как описано выше), это будет редактировать переменные PulseAudio на корневом окне X11, которое будет инструктировать клиентские библиотеки PulseAudio для подключения к серверу PulseAudio, кроме . Таким образом, программы, больше не будут взаимодействовать с местным процессом , который затем может быть остановлен. Такие программы, как , или также будут работать с окружением/переменным X, управляя удалённым сервером PulseAudio.

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

Если всё остальное не работает

На сервере:

 $ paprefs 

В Network Access -> Включите доступ к локальным устройствам звука (Также включите ‘Allow discover’ и ‘Don’t require authentication’).

На клиенте:

 $ export PULSE_SERVER=server.ip && mplayer test.mp3

Обзор

Для начала давайте посмотрим что у нас есть: какие объекты определены в 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: ...

Управление громкостью

Громкость в 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

System directory versus separate directory installations

By default, libraries from are installed into a separate directory, in
order to hide them from all applications.

Most applications in the wild, that support both PulseAudio and ALSA, try to
autodetect which sound system is used. First, applications try to start with
PulseAudio. Original client libraries fail early if no PulseAudio daemon is
running or can be started. Then they switch to ALSA. Decision is made once, at
the beginning. It works fine with PulseAudio, but doesn’t work with
. Latter has no daemons, it happily says that everything is fine, and
it’s capable of playing audio. Applications then try to call more functions, and
eventually touch unimplemented parts, often with crashes. So, libraries are
hidden, and become visible only when a program is called through
wrapper script.

It’s possible to install apulse libraries to . Wrapper script won’t
be required, but then all applications will try to use PulseAudio API, despite
they can use ALSA.

Консольные инструменты

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-Колонка)

Пример работы:
Посмотреть список Sink’ов. Текущий Sink выделен символом >:

ootync@rtfm ~ $ patricks ls sinks
>Sink#0 <alsa_output.pci-0000_00_1b.0.analog-stereo>
 Sink#1 <alsa_output.pci-0000_00_2b.0.hdmi-stereo>

Внимательнее присмотретсья к Sink #0:

ootync@rtfm ~ $ patricks ls sink 
Sink# <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 <module-alsa-card>
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 <alsa_output.pci-0000_00_1b.0.analog-stereo.monitor>
Id: 
Name: alsa_output.pci-0000_00_1b.0.analog-stereo
Proplist: 33 items

Внимательнее посмотреть на список портов Sink #0:

ootync@rtfm ~ $ patricks ls sink  ports
>#0 analog-output: "Analog Output" prio=9900
 #1 analog-output-headphones: "Analog Headphones" prio=9000

Переключить Sink #0 на следующий порт

ootync@rtfm ~ $ patricks set sink  port next
Sink# <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# <alsa_output.pci-0000_00_1b.0.analog-stereo>: default sink

Installing and Running

Method 1: System-Wide Installation Under /usr/local

This is the simplest method. The drawback is that it will affect the whole system: the self-compiled version will be used everywhere instead of the distribution’s version of PulseAudio. The development version should be pretty stable in general, though, so replacing the distro version isn’t really a big deal (the distribution version will still exist in the system, but it just won’t be used).

Two commands:

Uninstalling the self-compiled version is a matter of deleting all pulseaudio files under the /usr/local hierarchy (TODO: the exact rm commands would be nice here). «sudo make uninstall» works too, but it will only remove the files that were installed by the last «sudo make install» command, so if you over time install many versions without uninstalling in between, the old installations may have files that are not included in the latest install, and in such case «sudo make uninstall» will not remove everything. Also, if «sudo make install» installed something in the same place where the distribution installs files, then those are removed too, and that may cause trouble (such trouble should be fixable by forcing a reinstall of the distribution’s pulseaudio packages).

Also note that some system-installed files (udev and systemd user units) will be overwritten.

Method 2: Installing to a Custom Directory

You need to use the instructions from «Building to install to a custom location» above. With that done, you can install to the prefix you chose with:

That’s it, the binaries, modules and configuration are all installed in the prefix path.

Note that certain files that involve interaction with the system will not take effect (at the moment this includes udev rules, systemd user units, and bash/zsh completion).

Uninstalling in this setup can be done with a «make uninstall» or simply deleting the prefix directory (assuming you have nothing else of value there).

Method 3: Running From the Build Tree Without Installing

TODO. (A lot of information can be found here: http://colin.guthr.ie/2010/09/compiling-and-running-pulseaudio-from-git/. It would be good to copy that here.)

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 именно из-за того что выбран не тот порт записи 🙂

Настройка ALSA

и советуют поизучать dmix — это модуль микшера каналов в ALSA — буду смотреть

alsamixer

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

Но настройка в микшере результата не дала.

hdajacksensetest

Следующая полезная утилита — hdajacksensetest. Показывает какие разъемы детектируют подключение внешних устройств.

Ок, я вижу, что мой внешний сабвуфер подключен на порт 0x1a.
Давайте попробуем найти как можно объяснить карте, куда выводить LFO.

hdajackretask

Большинство советов по настройке маппинга указывают на утилиту hdajackretask:

Тут вроде бы все понятно — есть порты, есть маппинг. К сожалению, никакие манипуляции с портом 0x1a к успеху не привели.
Может, после настройки надо явно перезагружать сервисы?
Нет, смотрим дальше.

HDAAnalyzer

Для настройки маппинга есть еще одна утилита:
скачать ее можно в виде python-скрипта(!!!) вот тут.

Выглядит эта штука как прокачанный вариант hdajackretask — она даже умеет строить схему маршрутизации портов графически. Но эксперименты с этой штукой тоже не привели ни к чему, кроме полной потери звука.
Никакого гайда по настройке я не нашел, поэтому пробовал методом проб и ошибок.

Not implemented functions, application crashes

Large portion of PulseAudio API is not implemented. There are functions that do
nothing and return some arbitraty values. Often, if application tries to call
something not implemented, it crashes while trying to dereference a NULL
pointer. By default, tracing level is set to , which means no messages are
printed to standard output. It’s possible to increase that value to , which
shows unimplemented function calls, or to , which shows all function calls.

To change level, use parameter when calling . Something like

Building apulse with trace level 1 won’t fix issues, but will at least help to
identify if crashes are caused by not implemented functions.

What is Windows Subsystem for Linux (WSL)?

Window Subsystem for Linux (WSL) is an optional feature of Windows 10. It enables running unmodified Linux binaries in Windows without creating a virtual machine. It implements a compatibility layer that translates Linux system calls to Windows system calls. Basically, it is like a «wine» on Windows for Linux executables. Therefore, WSL can be very convenient if you need to run some Linux only program in a Windows development environment. You no longer need the overhead to boot up a virtual machine (or even worse, switching between Windows and Linux on a dual boot system).

While many Linux programs runs fine under WSL, it does have its limitations:

  • Because not all system calls have been implemented, not all Linux programs will run flawlessly under WSL. You can track the updates of WSL by following the WSL blog. You can also check this community maintained list of programs that work (and those that don’t) under the WSL.

  • Not all hardware resources are available in WSL. For instance, you cannot access GPUs in WSL. Consequently, numerical computations in WSL can only be done on CPU (actually CPU performance is pretty good in WSL). You can upvote for GPU support here.

  • Disk IO is slower compared with native Linux installations. As a result, compilations feel slower in WSL. Having a SSD may alleviate this issue, but the overall disk performance is not good enough.

Despite the above limitations, WSL is still a very helpful add-on to Windows 10. The WSL team definitely put a lot of hard work into it.

Настройка качества звука в Linux Mint 19.3 через Pulseaudio.

В Linux Mint по умолчанию для Pulseaudio установлен режим производительности, который является режимом низкого качества звука с минимальными накладными расходами для процессора. В обычном случае это работает хорошо и не создаёт никаких проблем, но если целью является получить наилучший звук, который способно выдать имеющееся оборудование, то для такого стандартные настройки не годятся.

Стандартные значения.

Настройка Pulseaudio производится через простой конфигурационный файл:

Вывести список параметров и их значения в терминал:

Значения по умолчанию в Linux Mint 19.3:

Редактирование значений.

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

Текстовые комментарии закомментированы знаком #

Перечисленные в файле параметры закомментированы знаком ;

Чтобы изменить значение параметра, его нужно раскомментировать, убрав ;

Чтобы изменённые параметры вступили в силу, нужно применить конфигурацию Pulseaudio:

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

pulseaudio –kill && pulseaudio –start

Может быть достаточно просто pulseaudio –kill и дальше демон (сервис) запустится автоматически.

Улучшение звука.

Основными параметрами, влияющими на качество звучания, являются resample-method и default-sample-format.

Вывести поддерживаемые оборудованием значения параметров: aplay –device hw /dev/urandom –dump-hw-params

Параметр resample-method.

У resample-method значение по умолчанию auto, что, скорее всего, означает resample-method = speex-float-1, то есть высокая производительность, но низкое качество. Поэтому оптимальнее выбрать конкретный метод. Так же это может помочь решить проблему с «хрипами».

resample-method = speex-float-n — это компромиссный высокопроизводительный метод, где n означает целое число от 1 до 9. Чем выше значение, тем лучше качество звучание, но выше накладные расходы для производительности. В качестве компромиссного варианта рекомендуется значение в диапазоне от 5 до 7. Для максимального качества значение 9.

resample-method = src-sinc-n-quality — — метод предназначенный для звука высокого качества, где n означает best, medium и fastest варианты. Метод создаёт значительную нагрузку на процессор.

resample-method = soxr-n — — метод предназначенный для звука высокого качества, является заменой rc-sinc. Здесь n означает mq, hq и vhq. Метод создаёт значительную нагрузку на процессор.

resample-method = copy — самое высокое качество, но при высокой нагрузке на процессор.

Примечание: При загрузке процессора, близкой к 100%, на высоком уровне качества может появляться «треск».

Параметр default-sample-format .

Значение по умолчанию s16le, что является качеством ниже среднего, но с низкой нагрузкой на процессор.

Для высокого качества, нужно указать следующее значение:

После завершения редактирования конфигурационного файла с сохранением изменений необходимо применить новые значения для параметров:

После выполнения команды изменения тут же вступят в силу. Теперь можно наслаждаться высококачественным звучанием.

A spectacular sound server, specifically designed to be used as an ESOUND drop-in replacement on Linux OSes

What’s new in PulseAudio 13.0:

  • Added support for Dolby TrueHD and DTS-HD Master Audio
  • Improved initial card profile selection for ALSA cards
  • Bluetooth card profile choices aren’t persistent any more by default
  • Added support for SteelSeries Arctis 5 USB headset

Read the full changelog

PulseAudio is an open source networked sound server for Linux and other UNIX-like operating systems. It has been designed from the ground up to provide users with a reliable alternative to the old ESOUND (Enlightened Sound Daemon).

It is a modular sound server

Being a very important part of any computing environment, a sound server is mainly used for software mixing of several audio streams, generic hardware and sound API abstraction, as well as network transparency. It is a modular sound server that incorporates numerous plugin modules for supporting sound protocols, sound devices, X Window System, bluetooth, JACK connectivity, RTP, SAP and SDP transport, volume control, filters, as well as various protocols.

Extendable plugin architecture

Even if its plugin architecture is extendable, it features support for static linking and autoloading of modules, for more than one source or sink, client-side latency interpolation, acceptable low-latency functionality, and sample type resampling and conversion. For sound recording and playback, the project provides very accurate latency measurements. It can be easily embedded into other programs, features a «Zero-Copy» architecture, and a straightforward command-line interface that allows experienced users to set up the daemon while it’s running.

Under the hood

Under the hood, PulseAudio includes a fully asynchronous C API (Application Programming Interface), two synchronous APIs, and several network audio streaming options. The sound server can be used to easily mix multiple sound cards and to synchronize multiple playback streams at the same time. Several open source projects offer support for the PulseAudio sound server, such as ALSA, LiVES, MPD, MPlayer, xine, VLC Media Player and SXEmacs.

Supported on any modern distributions of Linux

At the moment, PluseAudio is supported on any modern Linux distribution, as well as on the FreeBSD, NetBSD, Solaris, Mac OS X and Microsoft Windows (Win32) operating systems. It is also the default sound server of numerous well known Linux OSes, and can be easily configure via the PulseAudio Volume Control and PulseAudio Preferences graphical applications.

Проблемы

Отсутствует звук после установки

Известны случаи, когда звук отключён по умолчанию, и это не отражается в микшере KDE. Для исправления этого запустите (возможно вам потребуется установить его), щёлкните его пиктограмму в лотке и выберите «Регулирование громкости». Убедитесь, что ничего не отключено, даже после того, как вы запустили воспроизведение звука через приложение (это приложение должно отображаться во вкладке «Воспроизводится»).

Если звук по-прежнему не работает или инструменты pulseaudio не действуют, постарайтесь добавить своего пользователя в группы «pulse» и «pulse-access» (Yast > Управление пользователями и группами > > Править > Подробнее > Дополнительные группы). Чтобы эффект возымел действие, вам потребуется выйти и снова войти в систему.

Неполадки при воспроизведении аудио

Отредактируйте /etc/pulse/daemon.conf: раскомментируйте строки default-fragments и default-fragment-size-msec, и измените их значения с умолчательных 4 и 25 на 16 и 21.

Полное отключение pulseaudio (откат к ALSA)

Под openSUSE 11.2 pulseaudio является предпочитаемой аудиоподсистемой для всех приложений GNOME. Это может приводить к различным проблемам сосуществования, особенно по отношению к phonon, звуковой подсистеме KDE, использующей ALSA. Весьма типичный симптом — неспособность аудио ALSA вести планирование в реальном времени (или, точнее, близком к реальному времени), в итоге вызывающая задержки и/или обрывы в звучании. Многие обнаружили, что полное отключение pulseaudio и, таким образом, перевод приложений GNOME на использование ALSA, сработало успешно. Для выполнения этого проделайте следующее:

Отключите pulseaudio:

setup-pulseaudio —disable

  • Удалите все пакеты pulseaudio кроме libpulse-mainloop-glib0 и libpulse0, так как они требуются всем приложениям GNOME (поскольку они по умолчанию компилируются с pulseaudio).
  • Скройте библиотеки, предоставляемые пакетами libpulse-mainloop-glib0 и libpulse0, чтобы заставить приложения GNOME откатиться к ALSA. Для этого передвиньте их, отдав следующие команды от имени root´а (подразумевается openSUSE 11.2 x86_64):

cd /usr/lib64

md HIDDEN
mv *pulse* HIDDEN

ldconfig

Заметьте, что под $HOME/.pulse у вас есть правильно настроенные конфигурационные файлы (например с того времени, когда pulseaudio был задействован), последний из вышеописанных шагов по скрыванию библиотек pulseaudio может не потребоваться. Однако если вы случайно (или намеренно) удалите $HOME/.pulse, приложения GNOME вновь потеряют звук. Независимо от содержимого /etc/asound.conf перемещение библиотек является единственным гарантированным методом принудительного отката на ALSA.

Используйте совместимый с ALSA микшер (например kmix под KDE или alsamixer в терминале) и убедитесь, что все интересующие вас каналы не отключены.

Заметьте, что это обходной путь, а не определённое решение: если пакет libpulse-mainloop-glib0 и/или libpulse0 обновлён, вам придётся снова отдать вышеуказанные команды, чтобы передвинуть библиотеки pulseaudio.

Чтобы настроить PulseAudio 5.0 в Windows, сделайте следующее:

Шаг 1: Загрузите pulseaudio-5.0-rev18.zip

Шаг 2: Распакуйте его и скопируйте содержимое в папку pulse в «C:\pulse».

Шаг 3: Создайте в этой папке файл «config.pa» со следующим содержимым:

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

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

load-module module-waveout sink_name=output source_name=input record=0

Обратите внимание, что из соображений безопасности и конфиденциальности Windows 10 (обновление за Май.), ограничивает доступ к устройствам записи звука. Вы, вероятно, можете как-то переопределить эту функцию, но поскольку мы только хотим слышать звук, просто отключаем запись на сервере PulseAudio, добавляя ‘record = 0’. Шаг 4: «Pulseaudio.exe» — это исполняемый файл для сервера PulseAudio (также называемый демоном), который нужен для наших приложений Linux

Шаг 4: «Pulseaudio.exe» — это исполняемый файл для сервера PulseAudio (также называемый демоном), который нужен для наших приложений Linux.

Откройте PowerShell в папке «c:\pulse» и выполните команду:

.\pulseaudio.exe -F config.pa

При первом запуске pulseaudio.exe вы увидите всплывающее окно с предупреждением брандмауэра Windows, в котором вас спросят, хотите ли вы разрешить другим устройствам подключаться к серверу. Вам следует выбрать «Разрешить доступ». Если вы получаете сообщение о ошибке, сервер немедленно завершает работу. В этом случае перейдите к предыдущему шагу и убедитесь, что вы сделали все правильно.

Шаг 5: Запустите wsl2  и выполните:

export PULSE_SERVER=tcp:$(grep nameserver /etc/resolv.conf | awk '{print $2}');

Теперь проверьте звук в wsl2, и он заработает. На этом можно остановится (Вам придется повторить эти шаги перед каждым запуском WSL2, для воспроизведения звука).

Generic errors in do_connect_pcm

Apulse acts as a generic ALSA client. It tries to open audio device, and
sometimes fails. At its core, apulse does neither audio mixing nor
resampling. Instead, it relies on , , and ALSA plugins,
which are usually enabled by default. These plugins handle multiple audio
sources, performing resampling and mixing transparently. For years now ALSA
comes with those plugins enabled. Audio just works without configuring
anything. But not everybody use default settings.

On custom configurations apulse may fail to output and/or capture audio. There
could be no sound at all, or just a single audio stream playing at a time. It’s
also possible that adapters with hardware mixers, which capable of playing
multiple streams, may still be unable to handle multiple capture
streams. Depending on hardware, you may still need either or
plugins. Or both.

In other words, for apulse to work, your setup should be capable of playing and
capturing multiple streams simultaneously.

четверг, 11 июня 2015 г.

Гайд по настройке PulseAudio. Часть первая.

Вот некоторые возможности PulseAudio:

  • Высококачественное программное микширование нескольких аудиопотоков с поддержкой более одного входа и выхода. Может использоваться для объединения нескольких звуковых карт в одну (с изменением частоты дискретизации).
  • Множество поддерживаемых клиентских библиотек. Приложения, использующие ESD, ALSA, oss, libao и GStreamer, поддерживаются без необходимости внесения каких-либо изменений в них. Модули для работы PulseAudio доступны для xmms и mplayer.
  • Внесение достаточно малых временных задержек и очень точное измерение времени задержки для воспроизведения и записи. Возможность полной синхронизации нескольких потоков воспроизведения.
  • Сетевая прозрачность: приложения могут воспроизводить или записывать звук на компьютере, отличном от того, на котором они выполняются.
  • Расширяемая архитектура с модулями для jackd, multicast-rtp, lirc и avahi, в числе прочих.
  • Раздельная установка уровней громкости для разных программ.
  • Расширяемая модульная система с поддержкой динамически загружаемых библиотек
  • Совместимость со многими популярными аудиоприложениями.
  • Использование технологии zero-copy, сберегающей машинное время.
  • Интерфейс командной строки с возможностью использования сценариев.
  • Демон, перенастраиваемый с помощью командной строки.
  • Встроенное преобразование аудиоформатов.
  • Смешиваемые потоки могут иметь разные частотные характеристики.
  • Эффективный микшер, даже для звуковых плат без микшера, предотвращающий «монополизацию»/«кражу» звукового устройства отдельной программой.

PulseAudio – это не замена звуковой подсистеме ALSA. Он работает поверх ALSA, оперируя потоками. PulseAudio полностью совместим с приложениями ALSA и OSS. Для приложений OSS PulseAudio предоставляет утилиту padsp , создающую файлы типа /dev/dsp , через которые программа работает со звуковым сервером. Здесь я опишу опциональную настройку звукового сервера, способы улучшения качества звука и решение некоторых проблем.

Настройка качества звука.

Внимание : начиная с выпуска Pulseaudio 7, параметр src-sinc заменён на soxr-mq (среднее качество), soxr-hq (высокое качество) и soxr-vhq (очень высокое качество). Если у вас эти методы не работают – установите библиотеку libsoxr0

Перезапустите демон:

pulseaudio -k

Настраиваем буфер звуковой карты.

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

echo autospawn = no >>

/.config/pulse/client.conf pulseaudio -k

Далее получаем значения:

LANG=C timeout –foreground -k 10 -s kill 10 pulseaudio -vvvv 2>&1 | grep device.buffering -B 10 sed -i ‘$d’

Вывод будет примерно таким:

7 комментариев:

После настройки качества звука перестал запускаться PulseAudio . Для запуска PulseAudio после перезагрузки пришлось изменить команду запуска родную на pulseaudio –start

Автоматическое переключение ввода/вывода звука на подключаемое устройство

При подключении наушников в порт наушников карты PCI драйвер ALSA в PulseAudio автоматически отключает порт громкоговорителей, и, если у вас в карте нет порта линейного выхода или у него меньший приоритет, то порт вывода звука автоматически переключается на наушники. Но если вы подключаете наушники или микрофон по USB или Bluetooth, то ввод/вывод звука на них автоматически не переключается. Чтобы настроить автоматическое переключение ввода/вывода звука на подключаемое устройство, можно подключить модуль PulseAudio module-switch-on-connect. Он переключает сток/источник по умолчанию в PulseAudio на новый появившийся сток/источник, соответствующий новому подключённому устройству, а также переключает все каналы вывода в сток / вывода из источника, используемые приложениями, со старого стока/источника по умолчанию на новый. Он идёт в стандартной поставке PulseAudio и подключается редактированием файла /etc/pulse/default.pa, в него нужно добавить:

В случае устройства, подключаемого по USB (например, веб-камеры или USB-наушников), альтернативным решением является настройка udev на автоматический запуск скрипта, который переключает в PulseAudio сток/источник по умолчанию и каналы ввода/вывода, при подключении устройства. Для этого нужно создать следующие файлы:

card1 — название подключаемого устройства, которое можно определить по файлу, появляющемуся в /sys/class/sound при подключении устройства. Скрипт запускает другой скрипт в фон, который, в свою очередь, ждёт 5 секунд, пока появится нужный сток/источник, и затем производит переключение. — имя обычного пользователя, которому нужно выполнить переключение (можно эту строчку повторить несколько раз, меняя только имена пользователей, для переключения нескольким пользователям). — имя стока, соответствующего подключаемому устройству (можно узнать, подключив устройство и выполнив команду pactl list sinks, см. поле name). Если нужно переключить не сток, а источник (подключается не наушники, а микрофон), то вместо set-default-sink будет set-default-source , имя источника можно узнать из вывода команды pactl list sources.

Оцените статью
Рейтинг автора
5
Материал подготовил
Андрей Измаилов
Наш эксперт
Написано статей
116
Добавить комментарий