Comment supprimer le bruit de fond dans une video avec un script bash

Alors tu as fait une vidéo et tu constates que le bruit de fond est bien présent. Tu te dis que audacity c’est bien mais il faut exporter ta piste audio, enlever le bruit de fond dans audacity et ensuite réimporter le son.

Et forcément bien t’as pas vraiment envie de passer par toutes ces étapes.

J’ai la solution pour toi. Voici quelques scripts à utiliser sans limitations :

Reduction du bruit d’un fichier audio avec SOX

D’abord il faut un échantillon de bruit de fond et faire pour l’extraire, soit le faire avec audacity soit si le bruit de fond est entre la seconde 18 et la seconde 20 :

ffmpeg -i source.mp3 -vn -ss 00:00:18 -t 00:00:20 noisesample.wav

Ensuite faire un profil sox de ce bruit de fond :

sox noisesample.wav -n noiseprof noise_profile_file

Et ensuite appliquer le filtre de réduction de bruit sur notre fichier mp3 source :

sox source.mp3 output.mp3 noisered noise_profile_file 0.31

noise_profile_file est le profil et 0.30 est la valeur. Les valeurs idéales sont entre 0.20 et 0.30. 0.3 est une très agressif, et en dessous de 0.20, c’est très doux.

Si tu veux faire un batch sur un répertoire de fichier audio :

ls -r -1 *.mp3 | xargs -L1 -I{} sox {}  {}_noise_reduced.mp3  noisered noise_profile_file 0.31
tree -fai . | grep -P ".mp3$" | xargs -L1 -I{} sox {}  {}_noise_reduced.mp3  noisered noise_profile_file 0.31

Bon c’est très bien mais maintenant tu veux automatiser tout cela avec ton fichier vidéo de départ.


Avoir des information sur la vidéo avec ffmpeg

ffmpeg -i video.flv -hide_banner

Extraire l’audio de notre fichier vidéo

$ ffmpeg -i video.flv -vn -ar 44100 -ac 2 -ab 192 -f mp3 audio.mp3
$ ffmpeg -i video1.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 audio3.mp3

Intégrer de l’audio dans un fichier vidéo

$ ffmpeg -i audio.mp3 -i video.avi video_audio_mix.mpg

Mettre une image-banière sur un fichier audio

$ ffmpeg -loop 1 -i image.jpg -i mon_fichier_audio.mp3 -c:v libx264 -c:a aac -strict experimental -b:a 192k -shortest output.mp4

Un script de normalisation de l’audio

VIDEO_FILE=$1
VIDEO_FILE_FIXED=${VIDEO_FILE%.}-fixed.${VIDEO_FILE##.}
avconv -i $VIDEO_FILE -c:a pcm_s16le -vn audio.wav
normalize-audio audio.wav
avconv -i $VIDEO_FI

Un script à tester

Pour finir je te mets un script à tester :

for i in *.MOV; do ffmpeg -i "$i" -c:v libx265 -preset veryslow -crf 23 -af "volume=25dB, highpass=f=200, equalizer=f=50:width_type=h:width=100:g=-15" -c:a aac -strict experimental -b:a 192k "${i%.MOV}-ENCODED.MOV"; done
Video quality: -crf 23. Quite good quality. Decreasing this number will increase quality but also logarithmically increase file size. This setting strikes an okay balance between file size and quality. 18 is visually lossless but takes up much space.
Volume gain: volume=25dB
High pass filter >200 Hz: highpass=f=200
EQ notch filter @ 50Hz±100Hz (this should be mitigated by the high pass filter already, but for some reason this seems to remove background noise: equalizer=f=50:width_type=h:width=100:g=-15

$SOX "/tmp/tmp_audio_leveled.wav" -n trim 0 0.5  noiseprof newprofile
$SOX "/tmp/tmp_audio_leveled.wav" $2 noisered newprofile

$SOX "$1" "/tmp/tmp_audio_leveled.wav" \
    remix - \
    highpass 100 \
    norm \
    compand 0.05,0.2 6:-54,-90,-36,-36,-24,-24,0,-12 0 -90 0.1 \
    vad -T 0.6 -p 0.2 -t 5 \
    fade 0.1 \
    reverse \
    vad -T 0.6 -p 0.2 -t 5 \
    fade 0.1 \
    reverse \
    norm -0.5 `    

Vous aimerez aussi...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

fr_FRFrench