GrabDuck

Ubuntu 14.04 и PulseAudio. Звук на 192000 Hz

:

Ubuntu 14.04 и PulseAudio. Звук на 192000 Hz Звук в Linux по сравнению с Windows всегда был отвратительный. Справедливости ради стоит заметить, что в Windows он тоже не отличается кристальностью, но лишь до установки драйвера с сайта производителя звуковой карты. Печально, но за последние пять лет мне не попадались проприетарные драйверы под Linux от производителей железа.

Лично для меня стал откровением тот факт, что PulseAudio в Ubuntu "из коробки" может воспроизводить звук с частотой, выше чем 44100 Hz. А стало быть и качество звука на слух в Linux может быть лучше, чем звук будильника в кастрюле. Надо лишь внести небольшую правку в конфигурационный файл.

Установив драйвер в Windows, пользователю обычно достаточно открыть графический интерфейс и указать в нём то значение, которое ему нужно. Если из железа нельзя выжать больше, чем до установки драйвера от производителя, то эти значения от пользователя будут скрыты. И удобно и защита от дурака. В Ubuntu же по "доброй" традиции Canonical таких настроек нет вовсе. С каждым новым релизом мне всегда интересно, что же ещё они убрали из Settings "для удобства пользователя" и как ещё урезали выбор, заменив его "правильной" безальтернативностью в самой свободной операционной системе. Но я не об этом. Звук...

Для того, чтоб заставить PulseAudio воспроизводить звук более чётко, нужно подправить конфигурационный файл daemon.conf по адресу /etc/pulse воспользовавшись какой-нибудь консольной утилитой, например Nano.

sudo nano /etc/pulse/daemon.conf

В файл нужно либо добавить, либо раскомментировать следующие строки, выделенные на скриншоте. Для наглядности файл у меня открыт в gedit. Там же и строки для многоканального звука, если у вас 5.1, например.

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

В моём случае идеально работает следующая конфигурация:


default-sample-format = float32ne
default-sample-rate = 192000
alternate-sample-rate = 48000
default-sample-channels = 2
default-channel-map = front-left,front-right
default-fragments = 2
default-fragment-size-msec = 125
resample-method = soxr-vhq
enable-lfe-remixing = no
high-priority = yes
nice-level = -11
realtime-scheduling = yes
realtime-priority = 9

Для применения изменений нужно перезапустить PulseAudio (~$ pulseaudio --kill) или сессию.

Таким образом звук у меня теперь 32 bit с частотой 192000 Hz. По умолчанию он - 16 bit и 44100 Hz. Ощутимая разница. Если прикрутить эквалайзер, то будет ещё лучше.

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

default-sample-channels и default-channel-map в моём случае указывают на двухканальную (стерео) конфигурацию. Уберите эти строки, если у вас больше двух каналов. Для 5.1, например ,следует указать нечто подобное:

default-sample-channels = 6
enable-lfe-remixing = yes

Если же после правки daemon.conf PulseAudio у вас всё же отвалился, то всегда можно закомментировать ту или иную строку для использования параметра по умолчанию и попробовать запустить PulseAudio снова. Основные подозреваемые в то, что PulseAudio умер, следующие строки:

default-sample-format = float32ne
default-sample-rate = 192000
resample-method = soxr-vhq

В default-sample-format (endian, обратный порядок байт) можно указать le (little-endian), или be (big-endian) в зависимости от CPU. Однако процессоры x86, x86-64 (практически все десктопные ПК, ноутбуки и прочее) имеют little-endian. Поэтому целесообразно указать значение le. Так же в этой строке можно прописать s24-32le (помогает там, где звук на 32 бит не работает), или float32le, или float32be, однако перед этим нужно убедиться в том, что ваша машина физически в состоянии воспроизводить 32-х битный звук.
default-sample-rate = 192000 - работает не всегда и не везде. Конфигурация может работать, но параметр будет игнорироваться (встречается на Ubuntu); параметр может препятствовать запуску PulseAudio (в Debian)... Тут следует установить максимальное рабочее значение. Например 48000. В любом случае 192000Hz - это максимальное значение, и если 192000Hz работает в Windows, то не факт, что заведётся в Linux по неясным мне причинам.
soxr-vhq в resample-method может так же быть причиной. Параметр может иметь другое значение для лучшего результата в вашей конфигурации. Например speex-float-9 или speex-fixed-9. Значение float на большинстве десктопных CPU даёт лучшую производительность и качество. Девятка же на конце отвечает за качество. Значение может быть от 0 до 9 (от худшего к лучшему).

Подробнее об этих значениях можно узнать здесь .

~$ pulseaudio --start запустит PulseAudio или сообщит об ошибке, если конфигурации не работает на вашем ПК.

___
Tatyana K.