Nettoyage des enregistrements vocaux à partir de la ligne de commande?

28

J'ai utilisé Audacity pour supprimer le bruit des enregistrements auparavant, mais son utilisation en ligne de commande est très limitée. J'ai ~ 100 courtes vidéos de conférences que je regarderai au cours des prochains mois et je voudrais un moyen facile de les nettoyer toutes en même temps ou au besoin avant de les regarder.

Existe-t-il un outil en ligne de commande ou une bibliothèque de langues populaires que je peux utiliser pour ce faire?

Annan
la source

Réponses:

17

Jeter un coup d'œil à sox

Citant man sox:

SoX - Sound eXchange, the Swiss Army knife of audio manipulation

[...]

SoX is a command-line audio processing  tool,  particularly  suited  to
making  quick,  simple  edits  and to batch processing.  If you need an
interactive, graphical audio editor, use audacity(1).

Donc, cela devrait être un bon ajustement en tant qu'alternative de ligne de commande compagnon à audaciy!


En ce qui concerne la tâche réelle de nettoyage des enregistrements, jetez un œil au filtre noiseredpour lequel est égal au filtre de réduction du bruit Audacity :

man sox | less -p 'noisered \['

           [...]
   noisered [profile-file [amount]]
           Reduce noise in the audio signal by profiling and filtering.
           This effect is moderately effective at  removing  consistent
           background  noise such as hiss or hum.  To use it, first run
           SoX with the noiseprof effect on a  section  of  audio  that
           ideally  would  contain silence but in fact contains noise -
           such sections are typically found at the  beginning  or  the
           end  of  a recording.  noiseprof will write out a noise pro‐
           file to profile-file, or to stdout if no profile-file or  if
           `-' is given.  E.g.
              sox speech.wav -n trim 0 1.5 noiseprof speech.noise-profil
           To  actually remove the noise, run SoX again, this time with
           the noisered effect; noisered will reduce noise according to
           a  noise  profile  (which  was generated by noiseprof), from
           profile-file, or from stdin if no profile-file or if `-'  is
           given.  E.g.
              sox speech.wav cleaned.wav noisered speech.noise-profile 0
           How  much  noise  should be removed is specified by amount-a
           number between 0 and 1 with a default of 0.5.   Higher  num‐
           bers will remove more noise but present a greater likelihood
           of removing wanted components of the audio  signal.   Before
           replacing  an  original  recording with a noise-reduced ver‐
           sion, experiment with different amount values  to  find  the
           optimal one for your audio; use headphones to check that you
           are happy with the results, paying particular  attention  to
           quieter sections of the audio.

           On  most systems, the two stages - profiling and reduction -
           can be combined using a pipe, e.g.
              sox noisy.wav -n trim 0 1 noiseprof | play noisy.wav noise
           [...]
Volker Siegel
la source
7
Malheureusement, je trouve la description que sox utilise dans la page de manuel très bruyante à lire - jeu de mots voulu. N'y a-t-il pas un moyen beaucoup plus simple, avec une seule commande seule pour jongler avec la réduction de bruit?
shevy
Bien sûr, pas de problème - écrivez simplement en une phrase simple ce que vous voulez changer - mais suffisamment précis pour être techniquement clair ... D'accord, cela ne fonctionnera pas comme ça parce que vous devez comprendre ce qu'est le bruit, et laquelle des parties de le bruit que vous souhaitez supprimer, que vous pouvez réduire, et ce qui peut réduire la qualité du son, sinon faire la réduction du bruit. Pour jongler avec la réduction du bruit, vous devez connaître vos clubs de jonglage - les types de bruit à jongler et comment ils peuvent être équilibrés lorsqu'ils entrent en collision dans les airs. Alors, sox est votre boîte à outils et trousse de premiers soins!
Volker Siegel
12

La réponse acceptée ne donne pas d'exemple pratique (voir le premier commentaire), j'essaie donc d'en donner un ici. Sur Ubuntu avec apt, vous devez installer soxet prendre en charge les formats audio

sox

Première installation soxet prise en charge des formats (y compris mp3):

sudo apt install sox libsox-fmt-*

Ensuite, avant d'exécuter votre commande sur le ou les fichiers, vous devez d'abord créer un profil, faire un échantillon de bruit, c'est la partie la plus importante que vous devez sélectionner le meilleur moment lorsque le bruit se produit, assurez-vous de ne pas avoir la voix (ou la musique / le signal que vous essayez de garder) dans cet exemple:

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

Faites maintenant un profil à partir de cette source:

sox noisesample.wav -n noiseprof noise_profile_file

Et enfin exécutez la réduction du bruit sur le fichier:

sox source.mp3 output.mp3 noisered noise_profile_file 0.31

noise_profile_fileest le profil et 0.30la valeur. Les valeurs vont mieux entre 0,20 et 0,30, plus de 0,3 est très agressif, moins de 0,20 est un peu doux et fonctionne bien pour les audios très bruyants.

Essayez de jouer avec cela et si vous trouvez d'autres astuces de réglage et veuillez commenter les résultats et les paramètres de réglage.

comment les traiter par lots

Si le bruit est similaire, vous pouvez utiliser le même profil pour tous les mp3

ls -r -1 *.mp3 | xargs -L1 -I{} sox {}  {}_noise_reduced.mp3  noisered noise_profile_file 0.31

ou s'il existe une structure de dossiers:

tree -fai . | grep -P ".mp3$" | xargs -L1 -I{} sox {}  {}_noise_reduced.mp3  noisered noise_profile_file 0.31
Eduard Florinescu
la source
1
si c'est de l'audio parlé et des canaux gauche-droite séparés, ce n'est pas nécessaire, alors vous pouvez ajouter remix -le mixage de tous les canaux d'entrée en mono
Jake Berger
2
@EduardFlorinescu Votre réponse est parfaite. J'ai eu un enregistrement de bruit statique sur le fond de chaque enregistrement. J'ai lu votre réponse et j'ai utilisé les 2 premières secondes de mon fichier son pour créer un profil et finalement je l'ai utilisé pour supprimer le bruit de l'enregistrement. Merci beaucoup pour cela.
Abrar Hossain