O ffmpeg não possui nenhum filtro de áudio decente para redução de ruído embutido. O Audacity tem um filtro NR razoavelmente eficaz, mas foi projetado para ser usado com operação de 2 passagens com uma amostra apenas do ruído e, em seguida, a entrada .
Os comentários no topo do link explicam como funciona. (basicamente: suprime todos os bin FFT que estão abaixo do limite. Então, só permite que os sinais sejam mais altos do que o ruído nessa faixa de freqüência. Ele pode fazer coisas incríveis sem causar problemas. É como um filtro band-pass que se adapta Como a energia do ruído está espalhada por todo o espectro, apenas a passagem de algumas faixas estreitas reduzirá a energia total do ruído a MUITO.
Veja também Redução de ruído de áudio: como A audácia se compara a outras opções? para obter mais detalhes sobre como ela funciona e que as bandejas de limiar de FFT, de uma maneira ou de outra, também são a base dos típicos filtros comerciais de redução de ruído.
Portar esse filtro para o ffmpeg seria um pouco estranho. Talvez implementá-lo como um filtro com duas entradas, em vez de um filtro de duas passagens, funcionaria melhor. Como só precisa de alguns segundos para obter um perfil de ruído, não é como se ele tivesse que ler todo o arquivo. E você NÃO deve alimentar todo o fluxo de áudio como uma amostra de ruído, de qualquer forma. Ele precisa ver uma amostra de JUST noise para definir limites para cada caixa FFT.
Então, uma segunda entrada, em vez de 2pass, faria sentido. Mas isso torna muito menos fácil de usar do que a maioria dos filtros ffmpeg. Você precisaria de um monte de vodu com extração de fluxo / intervalo de tempo. E, claro, você precisa de intervenção manual, a menos que tenha uma amostra de ruído em um arquivo separado que seja apropriado para vários arquivos de entrada. (uma amostra de ruído do mesmo microfone / configuração deve estar bem para todos os clipes daquela configuração).