Ajustar automaticamente o volume com base no conteúdo?

51

Em diferentes fontes de áudio, o nível dos sons é diferente. É muito chato definir o nível de som em quase todos os conteúdos de mídia. Às vezes, quando você tinha algo quieto anteriormente, precisava ajustá-lo mais alto e depois de algum tempo queria reproduzir outra mídia - bang! inesperadamente quebra seus fones de ouvido, o som é tão alto!

Então, existe algum plugin / recurso que pode ajustar automaticamente o nível de som em todo conteúdo de mídia?

megas
fonte

Respostas:

39

Ajustando o nível de som com um plug-in LADSPA

Para obter um nível de saída de som razoavelmente normalizado independente do nível de entrada, podemos usar um plug-in LADSPA para filtrar a saída de som através do PulseAudio.

No mínimo, precisamos de um plug-in de compressor, como o dysonCompressor, dos swh-plugins Instalar swh-plugins que precisam ser instalados se ainda não estiverem presentes.

Depois de descobrir o nome do nosso coletor padrão com

pacmd list-sinks

e o nome exato do plug-in como ele é armazenado /usr/lib/ladspa/(com meu sistema aqui dyson_compress_1403), podemos emitir o seguinte comando

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

Substitua <alsa_output>pelo nome exato do coletor de saída (no meu sistema, era esse alsa_output.pci-0000_00_14.2.analog-stereo).

A saída compactada agora pode ser ouvida no coletor de saída recém-criado, ladspa_sinkacessível no menu Configurações de som .

insira a descrição da imagem aqui

As configurações de controle para o plug-in do compressor são as seguintes: limite de pico, tempo de liberação, proporção rápida, proporção . Consulte a documentação do plug - in para obter mais detalhes, padrões e valores mínimos ou máximos para esses controles.

Para evitar o corte da reprodução, também podemos combinar este plugin com um limitador após a compactação. Podemos usar o fast_lookahead_limiterpara isso com o coletor mestre, sendo agora nosso lasdpa_sink recém-criado a partir de cima:

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

Fonte: as configurações acima foram adaptadas ao pulseaudio do blog de brien on miscfits

Takkat
fonte
muito legal! selecionando a entrada de saída acima, podemos ouvir imediatamente a diferença! btw, cmd para removê-los apenas para testes pacmd unload-module module-ladspa-sink, e para selecionar a pia normalizadapacmd set-default-sink ladspa_normalized
Aquarius Poder
Estou com uma falha, o volume de repente fica muito baixo, como se tivesse sido modificado para evitar o volume, e então tenho que aumentar o volume um passo para ouvir o que as pessoas estão falando, mas fica um pouco alto .. se pudéssemos ter algum tipo de "equalizador do equalizador", onde todas as frequências são gerenciadas dinamicamente para nos permitir ouvir música, efeitos sonoros e fala das pessoas, tudo normalizado adequadamente e nunca muito alto. Alguma dica / ideia?
Poder de Aquário
1
@AquariusPower Acho que é porque o plug-in tenta adivinhar antecipadamente qual pode ser o volume ... isso parece ser codificado por 5 ms. Você pode tentar com outro limitador, por exemplo, no conjunto TAP: tap-plugins.sourceforge.net/ladspa/limiter.html com latência de 12,5 ms ou outro compressor (por exemplo, MLT mltframework.org/bin/view/MLT/FilterLadspa-1072 ) ... ainda não tentei isso.
Takkat 13/02/16
mmm ... devo acrescentar que, o problema que experimentei parece ter acontecido apenas em um único vídeo do youtube que, por sorte, eu estava tocando logo após aplicar o ladspa; isso está funcionando muito bem para todo o resto, incluindo jogos! thx nessas outras dicas também, vou verificá-las!
Poder de Aquário
1
Altere o controlparâmetro para refletir control=-12,1,0.5,0.99usando -12 em vez de 0. Isso significa que apenas o som acima de -12 dB será compactado (suavizado), o que normalmente inclui algo mais alto do que vozes / conversas. Faça essa alteração se descobrir que, ao assistir filmes (por exemplo, RED 2 no NetFlix), os vocais ainda estão muito quietos em comparação com as explosões.
Jonathan Neufeld
15

A solução de Takkat é boa, mas aqui está uma variação mais simples e permanente.

Existem apenas duas etapas:

  1. apt-get install swh-plugins
  2. Recorte e cole o seguinte em um arquivo chamado ~ / .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
    

Na próxima vez que você fizer login (ou executar pulseaudio -k), a normalização será ativada automaticamente por padrão.

hackerb9
fonte
Qual é o efeito de omitir o parâmetro "master"? O que está configurado como mestre do coletor nesse caso?
Nicolay Doytchev 27/01
Olá Nicolay: Minha leitura do código fonte indica que uma string NULL é igual a "@ DEFAULT_SINK @". (Veja também a linha 216, mais ou menos, de namereg.c). Mas por que você pergunta? Se houver algum problema com minha solução, eu gostaria de corrigi-lo.
precisa saber é o seguinte
Olá, comecei a usar a solução nesta resposta para poder alternar entre alto-falantes e fones de ouvido sem desconectá-los e, no painel de controle de som, recebo apenas as saídas filtradas dos alto-falantes. Alguma idéia de como fazê-lo funcionar também para a saída de fones de ouvido?
user1738984 15/07
Não tenho certeza, mas talvez você precise executar dois filtros, um para cada saída. Ou talvez a normalização precise ocorrer após a divisão dos fones de ouvido / alto-falantes em saídas separadas.
hackerb9 16/07
Na verdade, eu estava errado, desculpe por isso: o que acontece é que, se eu selecionar a saída filtrada, o som será emitido pelos fones de ouvido e alto-falantes, o que não quero. Eu não descobri como separá-lo
user1738984 24/07
3

A normalização de volume está presente no SMPlayer. Vá para o centro de software e faça o download deste incrível reprodutor e ative a normalização do volume nas opções de áudio :)

aishu
fonte
1

Anteriormente, eu também estava tendo problemas de normalização de áudio enquanto reproduzia filmes no meu media player VLC, mas poucas pesquisas na Internet consegui encontrar uma solução perfeita para isso e a compartilhei abaixo para que você também possa se beneficiar ....

Correção VLC de normalização de áudio / Correção VLC de sincronização de áudio

Pankaj Kumar
fonte
2
Bem-vindo ao Ask Ubuntu! Embora isso possa teoricamente responder à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência.
Kevin Bowen
0

Junto com uma alternativa, tenho alguns comentários para as soluções acima que sugerem o uso do disoncompressor.

Do manual:

 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

O autor do pacote não sabe o que os dois últimos valores controlam. Então, como vocês podem dizer o que devem inserir como os dois últimos valores?

O próprio plugin sugere control = 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

Eu até sugeriria que você experimentasse um dos outros compressores, que parecem melhor documentados, como o 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
fonte
Esse compressor alternativo me parece melhor, mas os parâmetros de controle listados na resposta não parecem ter efeito algum. O nível do limiar é definido como 0 (nunca compacta) e a proporção é definida como 1 (mesmo que compactado, usaria 1: 1, o que não altera o sinal). Você pode usar algo como control = 0,101.125.401, -22,10,3.25,0, para que qualquer coisa acima de -22dB seja compactada 1:10. Esses são intencionalmente valores extremos, de modo que se possa ouvir o efeito do filtro e, em seguida, ajustar os valores.
Zoltan