Automatycznie dostosowywać głośność na podstawie zawartości?

51

W różnych źródłach audio poziom dźwięku jest różny. Bardzo denerwujące jest ustawienie poziomu dźwięku w prawie każdej zawartości medialnej. Czasami, kiedy wcześniej miałeś coś cichego, musiałeś to regulować głośniej, a po pewnym czasie chcesz odtwarzać inne media - huk! niespodziewanie psuje słuchawki, dźwięk jest tak głośny!

Czy jest więc jakaś wtyczka / funkcja, która może automatycznie regulować poziom dźwięku w każdej zawartości multimedialnej?

megas
źródło

Odpowiedzi:

39

Regulacja poziomu dźwięku za pomocą wtyczki LADSPA

Aby uzyskać dość znormalizowany poziom wyjściowy dźwięku niezależnie od poziomu wejściowego, możemy użyć wtyczki LADSPA do filtrowania wyjściowego dźwięku przez PulseAudio.

Jako minimum potrzebujemy wtyczki kompresora, takiej jak dysonCompressor z wtyczek swh,Zainstaluj wtyczki SWH które należy zainstalować, jeśli jeszcze nie są obecne.

Po znalezieniu nazwy naszego domyślnego zlewu za pomocą

pacmd list-sinks

i dokładną nazwę wtyczki, w jakiej jest ona przechowywana /usr/lib/ladspa/(tutaj w moim systemie dyson_compress_1403), możemy wydać następujące polecenie

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

Zamień <alsa_output>na dokładną nazwę ujścia wyjściowego (w moim systemie było to alsa_output.pci-0000_00_14.2.analog-stereo).

Skompresowane wyjście można teraz usłyszeć na nowo utworzonym zlewie wyjściowym ladspa_sinkdostępnym z menu Ustawienia dźwięku .

wprowadź opis zdjęcia tutaj

Ustawienia sterowania dla wtyczki kompresora są następujące: limit szczytowy, czas zwolnienia, szybki współczynnik, współczynnik . Zobacz w dokumentacji wtyczki więcej szczegółów, wartości domyślnych i minimalnych lub maksymalnych wartości dla tych kontrolek.

Aby uniknąć przesterowania odtwarzania, możemy również połączyć tę wtyczkę z ogranicznikiem po kompresji. Możemy użyć fast_lookahead_limiterdo tego z głównym zlewem, który jest teraz naszym właśnie utworzonym lasdpa_sink z góry:

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

Źródło: powyższe ustawienia zostały dostosowane do pulseaudio z bloga brien o błędach

Takkat
źródło
bardzo fajny! wybierając powyższy wpis wyjściowy, możemy natychmiast usłyszeć różnicę! btw, cmd, aby usunąć je tylko do testów pacmd unload-module module-ladspa-sinki wybrać znormalizowany zlewpacmd set-default-sink ladspa_normalized
Aquarius Power
Występuje usterka, głośność nagle staje się zbyt cicha, jakby została zmodyfikowana, aby zapobiec głośności, a następnie muszę zwiększyć głośność o jeden krok, aby usłyszeć, co mówią ludzie, ale potem robi się nieco głośniej .. Zastanawiam się gdybyśmy mogli mieć jakiś „korektor normalizujący”, w którym wszystkie częstotliwości są dynamicznie zarządzane, abyśmy mogli słyszeć muzykę, efekty dźwiękowe i mowę ludzi, wszystkie odpowiednio znormalizowane i nigdy nie bardzo głośno. Wszelkie wskazówki / pomysły?
Wodnik Moc
1
@AquariusPower Myślę, że dzieje się tak, ponieważ wtyczka próbuje z góry zgadnąć, jaki może być wolumin ... wydaje się, że jest zakodowany na stałe przez 5 ms. Możesz spróbować z innym ogranicznikiem, np. Z zestawu TAP: tap-plugins.sourceforge.net/ladspa/limiter.html, który ma opóźnienie 12,5 ms lub inny kompresor (np. MLT mltframework.org/bin/view/MLT/FilterLadspa-1072 ) ... nie próbowałem tego jednak.
Takkat
mmm ... Muszę dodać, że problem, na który natrafiłem, zdaje się występować tylko na jednym filmie na youtube, który na szczęście grałem zaraz po zastosowaniu ladspa; działa świetnie dla wszystkich innych elementów, w tym gier! dzięki za te inne wskazówki, sprawdzę je!
Aquarius Power
1
Zmień controlparametr, aby odzwierciedlał, control=-12,1,0.5,0.99używając -12 zamiast 0. Oznacza to, że tylko dźwięk powyżej -12 dB zostanie skompresowany (zmiękczony), co zwykle obejmuje coś głośniejszego niż głosy / konwersację. Dokonaj tej zmiany, jeśli okaże się, że podczas oglądania filmów (np. RED 2 na NetFlix) wokale są nadal zbyt ciche w porównaniu do wybuchów.
Jonathan Neufeld
15

Rozwiązanie Takkat jest dobre, ale oto wariant, który jest prostszy i trwały.

Są tylko dwa kroki:

  1. apt-get install swh-plugins
  2. Wytnij i wklej następujące elementy do pliku o nazwie ~ / .config / puls / 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
    

Przy następnym logowaniu (lub uruchomieniu pulseaudio -k) automatycznie zostanie włączona normalizacja.

hackerb9
źródło
Jaki jest efekt pominięcia parametru „master”? Co w takim przypadku jest skonfigurowane jako mistrz zlewu?
Nicolay Doytchev
Cześć Nicolay: Mój odczyt kodu źródłowego wskazuje, że ciąg NULL jest taki sam jak „@ DEFAULT_SINK @”. (Zobacz także wiersz 216 lub mniej więcej namereg.c). Ale dlaczego pytasz? Jeśli są jakieś problemy z moim rozwiązaniem, chciałbym je naprawić.
hackerb9
Cześć, zacząłem używać rozwiązania z tej odpowiedzi, aby móc przełączać się między głośnikami i słuchawkami bez odłączania ich, a na panelu sterowania dźwiękiem otrzymuję tylko filtrowane wyjścia dla głośników. Masz pomysł, jak sprawić, by działał również na wyjście słuchawkowe?
user1738984
Nie jestem pewien, ale być może trzeba uruchomić dwa filtry, po jednym dla każdego wyjścia. A może normalizacja musi nastąpić po podzieleniu słuchawek / głośników na osobne wyjścia.
hackerb9
Właściwie się myliłem, przepraszam za to: dzieje się tak, że jeśli wybiorę filtrowane wyjście, słyszę dźwięk dochodzący zarówno przez słuchawki, jak i głośniki, czego nie chcę. Nie wymyśliłem, jak to rozdzielić
użytkownik1738984,
3

Normalizacja głośności jest obecna w SMPlayer. Przejdź do centrum oprogramowania i pobierz ten niesamowity odtwarzacz, a następnie włącz normalizację głośności w opcjach audio :)

aishu
źródło
1

Wcześniej miałem również problemy z normalizacją dźwięku podczas odtwarzania filmów na moim odtwarzaczu VLC Media Player, ale przy kilku wyszukiwaniach przez Internet byłem w stanie znaleźć idealne rozwiązanie tego problemu i udostępniłem go poniżej, abyś mógł z niego skorzystać ...

Normalizacja audio Poprawka VLC / Audio poza synchronizacją Poprawka VLC

Pankaj Kumar
źródło
2
Witamy w Ask Ubuntu! Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
Kevin Bowen
0

Oprócz alternatywy mam kilka uwag do powyższych rozwiązań, które sugerują użycie dysonkompresora.

Z instrukcji:

 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

Autor pakietu nie wie, co kontrolują dwie ostatnie wartości. Jak więc moglibyście powiedzieć, co powinniście wprowadzić jako dwie ostatnie wartości?

Sama wtyczka sugeruje kontrolę = 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 <[email protected]>"
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

Sugerowałbym nawet wypróbowanie jednego z innych kompresorów, które wydają się lepiej udokumentowane, jak 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
źródło
Ten alternatywny kompresor brzmi dla mnie lepiej, ale parametry sterowania wymienione w odpowiedzi nie wydają się mieć żadnego wpływu. Poziom progowy jest ustawiony na 0 (nigdy nie kompresuje), a współczynnik jest ustawiony na 1 (nawet jeśli byłby skompresowany, używałby 1: 1, co nie zmienia sygnału). Zamiast tego możesz użyć czegoś takiego jak control = 0,101.125,401, -22,10,3.25,0, aby wszystko powyżej -22dB zostało skompresowane w stosunku 1:10. Są to celowo nieco ekstremalne wartości, aby można było usłyszeć efekt filtra, a następnie doprecyzować wartości.
Zoltan