Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Выравнивание громкости в системе  (Прочитано 9711 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн 87dv

  • Автор темы
  • Участник
  • *
  • Сообщений: 211
    • Просмотр профиля
Выравнивание громкости в системе
« : 12 Августа 2014, 21:24:04 »
Плохо, что со временем в темах исчезает кнопка "ответить"
Вот тема до сих пор актуальна.

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

Не на Винде, не на Линуксе ничего такого нет.

Такую нормализацию встречал только на звуковых картах Creative и только на Винде

 :-\
Asus X54HY (K54LY), Manjaro XFCE x64

Оффлайн altwazar

  • Активист
  • *
  • Сообщений: 430
    • Просмотр профиля
Re: Выравнивание громкости в системе
« Ответ #1 : 12 Августа 2014, 21:43:17 »
Можно повесить компрессор на вывод звука.
Если используется jack, то это проще простого. Просто ставиться компрессор в цепочку.
С дефолтным pulseaudio это точно тоже возможно, но сам я не пробовал. Можно погуглить "pulseaudio compressor", есть разные советы. Например такой: http://askubuntu.com/questions/31580/is-there-a-way-of-leveling-compressing-the-sound-system-wide

Если же это нужно только для видео, то такой фильтр есть в VLC (Аудио->Фильтры->Сжатие).
Что оно примерно из себя представляет:
Пороговый уровень (threshold) - уровень, выше которого применяется компрессия.
Коэфициент - коэфициент сжатия.
Подъем уровня (makeup gain) - на сколько поднимается уровень всего сигнала. Чем ниже пороговый уровень и выше компрессия, тем выше можно сделать makeup gain без артефактов.

Суть в том, что сжимая (снижая) сигнал после определенного уровня можно затем увеличить общий уровень и тем самым уменьшить разницу по громкости между тихими и громкими звуками. Там же можно погуглить на эту тему "vlc compressor":
http://www.geekality.net/2013/11/01/settings-for-vlc-dynamic-range-compression/

Под нормализацией понимается несколько иное значение, когда сигнал просто увеличивается на фиксированную величину до определенного уровня.
« Последнее редактирование: 12 Августа 2014, 22:02:45 от altwazar »

Оффлайн 87dv

  • Автор темы
  • Участник
  • *
  • Сообщений: 211
    • Просмотр профиля
Re: Выравнивание громкости в системе
« Ответ #2 : 12 Августа 2014, 22:23:50 »
Больше всего используется браузер с видео-аудио воспроизведением: flash, html5
Это всё через PulseAudio работает? Можно пробовать первый вариант?

И как бы это дело включать/выключать когда надо? На постоянно не требуется (наушники в основном)

Пользователь решил продолжить мысль 12 Августа 2014, 22:40:33:
Вот тут товарищ вроде сделал то, что надо

Как бы это на Убунте провернуть?
« Последнее редактирование: 12 Августа 2014, 22:40:33 от 87dv »
Asus X54HY (K54LY), Manjaro XFCE x64

Оффлайн altwazar

  • Активист
  • *
  • Сообщений: 430
    • Просмотр профиля
Re: Выравнивание громкости в системе
« Ответ #3 : 13 Августа 2014, 06:33:27 »
Да, по умолчанию весь звук в Ubuntu выводится через pulseaudio.

Как бы это на Убунте провернуть?

В Ubuntu эти плагины:
sudo apt-get install swh-plugins
Pavucontrol:
sudo apt-get install pavucontrol
Остальная часть связана с pulseaudio и от дистрибутива не зависит. В комментариях там народ пишет, как собрать эти плагины под Ubuntu. Но это нужно только в том случае, если нужен лимитер на один канал, как в примере у автора. Но я не знаю, зачем для этого нужен именно mono limiter.

Я не пробовал это делать с pulseaudio, но по идее все должно быть просто. Достаточно просто создать sink с компрессором и при желании еще и с лимитером.
Что бы их подгружал pulseaudio автоматически можно создать файл ~/.pulse/default.pa с примерно таким содержимым:

(Нажмите, чтобы показать/скрыть)

"#!/usr/bin/pulseaudio -nF" - Не загружать файл по умолчанию, загружаться будет только этот файл.
".include /etc/pulse/default.pa" - Включить содержимое файла по умолчанию в этот.

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

load-module с ladspa_output.dysonCompress - собственно sink с компрессором. То, ради чего все это и затевается.

load-module с ladspa_output.fastLookaheadLimiter - sink с лимитером. Можно обойтись и без него, тогда нужно убрать master="ladspa_output.fastLookaheadLimiter" в строке с компрессором.

set-default-sink 3 - установить по умолчанию вывод звука через третьего sink. Там нужно указать номер или название нужного sinka, а можно и убрать вообще (если по умолчанию компрессор не нужен).

set-sink-volume 3 35000 - установить изначальный уровень громкости для третьего sinka. Аналогично пункту выше, можно не использовать вообще. 100% = 65536.

Если где-нибудь не ошибся, то результат будет примерно как по ссылке: https://www.bfccomputing.com/dynamic-range-compression-for-pulseaudio/



Оффлайн 87dv

  • Автор темы
  • Участник
  • *
  • Сообщений: 211
    • Просмотр профиля
Re: Выравнивание громкости в системе
« Ответ #4 : 13 Августа 2014, 12:02:20 »
altwazar,
Отлично! Все звуки слышно! К примеру видео снято любительской камерой: голос оператора и голос дающего интервью на расстоянии - одинаковой громкости (а не еле слышно, как по умолчанию)
То что надо!

Только остался вопрос, как его включать и отключать? В pavucontrol нет опции, как у того мужика на видео
« Последнее редактирование: 13 Августа 2014, 12:05:42 от 87dv »
Asus X54HY (K54LY), Manjaro XFCE x64

Оффлайн altwazar

  • Активист
  • *
  • Сообщений: 430
    • Просмотр профиля
Re: Выравнивание громкости в системе
« Ответ #5 : 13 Августа 2014, 12:12:43 »
Только остался вопрос, как его включать и отключать? В pavucontrol нет опции, как у того мужика на видео

По идее можно еще переключать командой "pactl set-default-sink 1". Без кавычек и в место единицы название родного выхода карточки или его номер, но скорее всего он будет под номером один. И скорее всего можно выбрать выход в настройках звука ubuntu, но на счет этого не уверен. Посмотреть список sinkoв можно через "pacmd list-sinks".

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

p.s.: Под рукой нет pulseaudio для проверки. В крайнем случае можно просто удалить "~/.pulse/default.pa" и перезапустить pulseaudio: "pulseaudio -k". Значит можно просто сделать скрипт для запуска и остановки. Первый создает этот файл и перезапускает pulseaudio, второй удаляет с перезапуском. Костыль и извращение, но как крайний случай должно работать :)
« Последнее редактирование: 13 Августа 2014, 12:21:38 от altwazar »

Оффлайн 87dv

  • Автор темы
  • Участник
  • *
  • Сообщений: 211
    • Просмотр профиля
Re: Выравнивание громкости в системе
« Ответ #6 : 13 Августа 2014, 12:21:30 »
Стоп, а всё есть! И ещё круче, чем ожидал!

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



Супер!

Кстати, на Винде есть такая опция Realtek тонкомпенсация. Я просто забыл. Но на моём ноутбуке её просто нет.

А на Линуксе теперь есть :)

Этот рецепт надо добавить в вики и FAQ!

Пользователь решил продолжить мысль 13 Августа 2014, 12:23:26:
altwazar,
Огромное спасибище за помощь! :coolsmiley:
« Последнее редактирование: 13 Августа 2014, 12:23:26 от 87dv »
Asus X54HY (K54LY), Manjaro XFCE x64

Оффлайн altwazar

  • Активист
  • *
  • Сообщений: 430
    • Просмотр профиля
Re: Выравнивание громкости в системе
« Ответ #7 : 13 Августа 2014, 13:32:01 »
87dv,
np :)

В принципе все это можно привести в удобоваримый и простой вид, этот гайд подробный и прояснил пару вопросов. Правда такой способ подходит только для 2-х канального звука, и еще кто бы описал используемые параметры для компрессора и лимитора. А то документация там просто зашибись:
Цитировать
Fast compression ratio
I have no clear idea what this controls.

Compression ratio
I have no clear idea what this controls.
Моё понимание так же заканчивается на том, что этот компрессор как то там сжимает, а лимитер как то там лимитирует. Если этот лимитер я еще немного понимаю, то параметры для этого компрессора для меня - магические числа.

Оффлайн 87dv

  • Автор темы
  • Участник
  • *
  • Сообщений: 211
    • Просмотр профиля
Re: Выравнивание громкости в системе
« Ответ #8 : 13 Августа 2014, 14:33:19 »
set-default-sink 3

set-sink-volume 3 35000
Вот это удалил

set-default-sink 3 - по умолчанию, при загрузке системы, включался компрессор
set-sink-volume 3 35000 - при загрузке громкость устанавливалась на этот уровень (т. е. не запоминало предыдущие установки)
Asus X54HY (K54LY), Manjaro XFCE x64

Оффлайн 87dv

  • Автор темы
  • Участник
  • *
  • Сообщений: 211
    • Просмотр профиля
Re: Выравнивание громкости в системе
« Ответ #9 : 10 Сентября 2014, 21:08:26 »
Есть такой баг у этого решения:
Когда подключаешь наушники, то звук в два раза тише, чем установленный в системе. И чтобы стало в норме - надо переключится туда-обратно с нормального на компресс в нормальный или наоборот (если компресс стоял ранее).

Вот такое неудобство. Не знаю, как решить :(
Asus X54HY (K54LY), Manjaro XFCE x64

Оффлайн altwazar

  • Активист
  • *
  • Сообщений: 430
    • Просмотр профиля
Re: Выравнивание громкости в системе
« Ответ #10 : 11 Сентября 2014, 06:25:02 »
87dv,

Я бы после подключения наушников проверил громкость через pacmd list-sinks, а затем сравнил её после переключения туда-обратно.
Если там громкость отображается одинаковая, то заодно глянул бы еще уровень громкости до и после на карточке через alsamixer.
Пока не понятно, из-за чего это может происходить. Особенно если в этот момент стоял обычный выход.

Оффлайн 87dv

  • Автор темы
  • Участник
  • *
  • Сообщений: 211
    • Просмотр профиля
Re: Выравнивание громкости в системе
« Ответ #11 : 12 Сентября 2014, 18:56:18 »
Уточню

Включаю ноут без наушников, звук стоит по умолчанию, переключаюсь на компрессию и громкость снижается. Теперь перехожу с компрессии на дефолт и обратно - на копрессию. Звук в норме, начинает нормализовать. В alsamixer ничего не меняется. pacmd list-sinks тоже всё одинаково.

Если подключить наушники, то там тоже уже всё в норме. Выше я написал про наушники, когда включил ноут, а потом подключил их, и там уже выбирал компрессию.

Получается, это происходит только при включении, в первый раз

У меня двойная загрузка, был один недостаток, который я исправил этим рецептом:
http://localroot.diary.ru/p192230935.htm?from=last&nocache=53dbd043defe3
Не могли ли эти настройки так повлиять?


Кстати, а можно сделать так, чтобы компрессор включался по умолчанию только на внешних динамиках? Или что бы запоминало настройки отдельно: для внешних и для наушников
 
« Последнее редактирование: 12 Сентября 2014, 19:49:17 от 87dv »
Asus X54HY (K54LY), Manjaro XFCE x64

Оффлайн altwazar

  • Активист
  • *
  • Сообщений: 430
    • Просмотр профиля
Re: Выравнивание громкости в системе
« Ответ #12 : 15 Сентября 2014, 06:47:06 »
87dv,

Не знаю, можно ли сделать отдельно настройки для динамиков и наушников. Это получается один и тот же синк.
У тебя в файле уровень громкости у синков стоит 40%. Не знаю по какой причине, но можно попробовать добавить в конец файла ~/.pulse/default.pa это:

set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo 65535
set-sink-volume ladspa_output.fastLookaheadLimiter 65535
set-sink-volume ladspa_output.dysonCompress 65535

По хорошему это должно выставить 100% уровень громкости при загрузке на всех синках.
У "alsa_output.pci-0000_00_1b.0.analog-stereo" можно задать свою громкость по умолчанию, если 100% не устраивает.

Оффлайн 87dv

  • Автор темы
  • Участник
  • *
  • Сообщений: 211
    • Просмотр профиля
Re: Выравнивание громкости в системе
« Ответ #13 : 15 Сентября 2014, 11:33:39 »
87dv,
У тебя в файле уровень громкости у синков стоит 40%.
Это же громкость системная. Меняется в зависимости от установки ползуна в трее на всех синках

А вот это пробовал:
set-sink-volume ladspa_output.fastLookaheadLimiter 65535
set-sink-volume ladspa_output.dysonCompress 65535

На 100% громкость ставит

Не пойдёт

Если дописать set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo "число", то фиксированная громкость будет. Тоже не выход


Пользователь решил продолжить мысль 15 Сентября 2014, 11:38:21:
Если этот глюк только при перезагрузке один раз возникает, то надо копать не громкость, а загрузку. Может оно как-то криво цепляет конфиг ~/.pulse/default.pa только со второго раза - чёрт его знает...
« Последнее редактирование: 15 Сентября 2014, 11:38:21 от 87dv »
Asus X54HY (K54LY), Manjaro XFCE x64

 

Страница сгенерирована за 0.038 секунд. Запросов: 25.