Автоматически регулировать громкость в зависимости от содержимого?

51

В разных аудиоисточниках уровень звуков различен. Очень неприятно устанавливать уровень звука практически для каждого медиа контента. Иногда, когда раньше у вас было что-то тихое, вам приходилось регулировать это громче, и через некоторое время вы хотите воспроизвести другой медиа - удар! это неожиданно ломает ваши наушники, звук такой громкий!

Итак, есть ли какой-нибудь плагин / функция, которая может автоматически регулировать уровень звука на каждом медиа-контенте?

Мегас
источник

Ответы:

39

Регулировка уровня звука с помощью плагина LADSPA

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

Как минимум, нам нужен плагин компрессора, такой как dysonCompressor из плагинов swh, Установите SWH-плагины который необходимо установить, если он еще не установлен.

После того, как узнал название нашей раковины по умолчанию с

pacmd list-sinks

и точное имя плагина в том виде, в котором он хранится /usr/lib/ladspa/(с моей системой здесь dyson_compress_1403), мы можем выполнить следующую команду

pacmd load-module module-ladspa-sink sink_name=ladspa_sink master=<alsa_output> plugin=dyson_compress_1403 label=dysonCompress control=0,1,0.5,0.99

Замените <alsa_output>на точное имя выходного приемника (в моей системе это было alsa_output.pci-0000_00_14.2.analog-stereo).

Сжатый выходной сигнал теперь можно услышать во вновь созданном выходном приемнике, ladspa_sinkдоступном из меню « Настройки звука» .

введите описание изображения здесь

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

Чтобы избежать ограничения воспроизведения, мы также можем комбинировать этот плагин с ограничителем после сжатия. Мы можем использовать fast_lookahead_limiterдля этого мастер-приемник, который теперь является только что созданным lasdpa_sink сверху:

pacmd load-module module-ladspa-sink sink_name=ladspa_normalized master=ladspa_sink plugin=fast_lookahead_limiter_1913 label=fastLookaheadLimiter control=10,0,0.8

Источник: вышеуказанные настройки были адаптированы к pulseaudio из блога Брайена о неудачах

Takkat
источник
очень круто! Выбрав выходную запись выше, мы сразу услышим разницу! Кстати, cmd, чтобы удалить их только для испытаний pacmd unload-module module-ladspa-sink, и выбрать нормализованный приемникpacmd set-default-sink ladspa_normalized
Aquarius Power
Я испытываю сбой, громкость внезапно становится слишком тихой, как будто она была изменена, чтобы предотвратить громкость, и затем мне нужно увеличить громкость на один шаг, чтобы услышать, что говорят люди, но затем она становится немного громкой ... Интересно если бы у нас был какой-то «нормализатор эквалайзера», где все частоты динамически управляются, чтобы позволить нам слышать музыку, звуковые эффекты и речь людей, все должным образом нормализовано и никогда не будет очень громким. Любой совет / идея?
Водолей Power
1
@ AquariusPower Я думаю, это потому, что плагин пытается заранее угадать, какой объем может быть ... это кажется жестко закодированным в течение 5 мс. Вы можете попробовать использовать другой ограничитель, например, из набора TAP: tap-plugins.sourceforge.net/ladspa/limiter.html с задержкой 12,5 мс или другим компрессором (например, MLT mltframework.org/bin/view/MLT/FilterLadspa-1072. ) ... не пробовал, однако.
Таккат
ммм ... Я должен добавить, что проблема, с которой я столкнулся, кажется, возникла только на одном видео на YouTube, которое, к счастью, я играл сразу после применения ladspa; это отлично работает для всего остального, включая игры! Спасибо за эти другие советы, я проверю их!
Водолей Power
1
Измените controlпараметр для отражения, control=-12,1,0.5,0.99используя -12 вместо 0. Это означает, что только звук выше -12 дБ будет сжат (смягчен), что обычно включает в себя что-то громче, чем голоса / разговор. Внесите это изменение, если обнаружите, что во время просмотра фильмов (например, RED 2 на NetFlix) вокал по-прежнему слишком тихий по сравнению со взрывами.
Джонатан Нойфельд
15

Решение Takkat хорошо, но вот вариант, который является более простым и постоянным.

Есть только два шага:

  1. apt-get install swh-plugins
  2. Вырежьте и вставьте следующее в файл ~ / .config / pulse / default.pa :

    .nofail
    .include /etc/pulse/default.pa
    load-module module-ladspa-sink  sink_name=ladspa_sink  plugin=dyson_compress_1403  label=dysonCompress  control=0,1,0.5,0.99
    load-module module-ladspa-sink  sink_name=ladspa_normalized  master=ladspa_sink  plugin=fast_lookahead_limiter_1913  label=fastLookaheadLimiter  control=10,0,0.8
    set-default-sink ladspa_normalized
    

При следующем входе в систему (или запуске pulseaudio -k) нормализация будет автоматически включена по умолчанию.

hackerb9
источник
Каков эффект пропуска параметра «master»? Что в этом случае настроено как мастер раковины?
Николай Дойчев
Привет, Николай: Мое чтение исходного кода показывает, что строка NULL совпадает с "@ DEFAULT_SINK @". (См. Также строку 216 или около того namereg.c). Но почему ты спрашиваешь? Если с моим решением возникнут проблемы, я бы хотел их исправить.
hackerb9
Привет, я начал использовать решение в этом ответе, чтобы иметь возможность переключаться между динамиками и наушниками, не отключая их, и на панели управления звуком я получаю только отфильтрованные выходы для динамиков. Есть идеи о том, как заставить это работать и для выхода на наушники?
user1738984
Я не уверен, но, возможно, вам нужно запустить два фильтра, по одному для каждого выхода. Или, возможно, нормализация должна произойти после разделения наушников / колонок на отдельные выходы.
hackerb9
На самом деле, я был неправ, извиняюсь за это: что происходит, если я выбираю отфильтрованный выход, у меня звук идет через наушники и динамики, что мне не нужно. Я не понял, как его отделить
user1738984
3

Нормализация громкости присутствует в SMPlayer. Перейдите в центр программного обеспечения и скачайте этот потрясающий плеер, затем включите нормализацию громкости в настройках аудио :)

aishu
источник
1

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

Исправление аудио VLC Fix / Audio Out of Sync VLC Fix

Панкадж Кумар
источник
2
Добро пожаловать в Спросите Ubuntu! Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить здесь основные части ответа и предоставить ссылку для справки.
Кевин Боуэн
0

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

Из руководства:

 2.37  Dyson compressor (dysonCompress, 1403)
Peak limit (dB)
Controls the desired limit of the output signal in dB's.
Release time (s)
Controls the time taken for the compressor to relax its gain control over the input signal.
Fast compression ratio
I have no clear idea what this controls.
Compression ratio
I have no clear idea what this controls. 

http://plugin.org.uk/ladspa-swh/docs/ladspa-swh.html#tth_sEc1.1

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

Сам плагин предлагает контроль = 0,0.25,0.5,0.5

$ analyseplugin /usr/lib/ladspa/dyson_compress_1403.so

Plugin Name: "Dyson compressor"
Plugin Label: "dysonCompress"
Plugin Unique ID: 1403
Maker: "Steve Harris <steve@plugin.org.uk>"
Copyright: "GPL"
Must Run Real-Time: No
Has activate() Function: Yes
Has deactivate() Function: No
Has run_adding() Function: Yes
Environment: Normal or Hard Real-Time
Ports:  "Peak limit (dB)" input, control, -30 to 0, default 0
    "Release time (s)" input, control, 0 to 1, default 0.25
    "Fast compression ratio" input, control, 0 to 1, default 0.5
    "Compression ratio" input, control, 0 to 1, default 0.5
    "Input" input, audio
    "Output" output, audio

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

load-module module-ladspa-sink  sink_name=ladspa_sink  plugin=sc4_1882 label=sc4  control=0,101.125,401,0,1,3.25,0
fullmooninu
источник
Этот альтернативный компрессор звучит лучше для меня, но параметры управления, перечисленные в ответе, похоже, не оказывают никакого влияния. Пороговый уровень установлен на 0 (никогда не сжимается), а отношение установлено на 1 (даже если он сжат, он будет использовать 1: 1, что не изменит сигнал). Вместо этого вы можете использовать что-то вроде control = 0,101.125,401, -22,10,3.25,0, чтобы все, что выше -22dB, сжималось 1:10. Это намеренно несколько экстремальные значения, чтобы можно было услышать эффект фильтра и затем точно настроить значения.
Золтан