Existem algumas possibilidades:
-
Aplique uma normalização simples (por exemplo, normalização de pico ou RMS ). Isso só alterará o ganho em todo o arquivo, portanto, você ainda experimentará variações entre partes altas e suaves. Não é realmente recomendado para o seu caso de uso.
-
Use a compactação dinâmica com o filtro
compand
. Isto reduzirá a gama dinâmica (isto é, a diferença entre partes suaves e barulhentas) ao longo da gravação. Você tem que encontrar um limite adequado no qual a compressão entra em ação, e você provavelmente obterá sinais bastante ruidosos para as partes suaves. -
Use o filtro
dynaudnorm
, que “permite aplicar ganho extra ao 'silêncio seções do áudio, evitando distorções ou cortando as seções "barulhentas". No seu caso, essa seria a opção preferida.
Basicamente, você só precisa baixar uma versão estática recente do ffmpeg aqui e, em seguida, executar:
ffmpeg -i input.wav -filter:a "dynaudnorm" output.wav
Você provavelmente precisará ajustar as opções de filtro para seu caso de uso específico. Use os exemplos fornecidos para o compand
filter como ponto de partida:
Make music with both quiet and loud passages suitable for listening to in a noisy environment:
compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
Another example for audio with whisper and explosion parts:
compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
Aqui, as opções do segundo exemplo são especificamente:
attacks=0|0
decays=1|1
points=-90/-900|-70/-70|-30/-9|0/-3
soft-knee=6
gain=0
volume=0
delay=0
Você pode ajustar o ganho para manter o mesmo processamento dinâmico, mas ajustá-lo ao seu nível de entrada de linha de base.
Além disso, como uma alternativa gráfica ao ffmpeg, você pode usar o Audacity e seu compressor incorporado , que atinge o mesmo efeito que o filtro compand
no ffmpeg. O wiki também tem uma boa explicação para as opções.