Pulire le registrazioni vocali dalla riga di comando?


28

Ho usato Audacity per rimuovere il rumore dalle registrazioni prima, tuttavia ha un utilizzo molto limitato della riga di comando. Ho ~ 100 brevi video di lezioni che guarderò nei prossimi mesi e vorrei un modo semplice per pulirli tutti in una volta o secondo necessità prima di guardarli.

Esiste uno strumento da riga di comando o una libreria di lingue popolari che posso usare per fare questo?

Risposte:


17

Date un'occhiata al sox

Citando 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).

Quindi, dovrebbe essere una buona scelta come alternativa alla riga di comando di compagno di audaciy!


Per quanto riguarda l'effettivo compito di pulire le registrazioni, dai un'occhiata al filtro noiseredper il quale è uguale al filtro di riduzione del rumore 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
           [...]

7
Sfortunatamente trovo la descrizione che sox usa nella manpage molto rumorosa da leggere - il gioco di parole è inteso. Non c'è un modo molto più semplice, con un solo comando da solo per destreggiarsi tra i rumori?
Shevy,

Certo, nessun problema - scrivi in ​​una semplice frase cosa vuoi cambiare - ma abbastanza preciso per essere tecnicamente chiaro ... Ok, non funzionerà così perché devi capire cos'è il rumore e quale delle parti di il rumore che si desidera rimuovere, che è possibile ridurre e che cosa può ridurre la qualità del suono, altrimenti facendo la riduzione del rumore. Per destreggiarsi con la riduzione del rumore, è necessario conoscere i club di giocoleria - i tipi di rumore da destreggiarsi e come possono essere bilanciati quando si scontrano a mezz'aria. Quindi, sox è la tua cassetta degli attrezzi e kit di pronto soccorso!
Volker Siegel,

12

La risposta accettata non fornisce un esempio pratico (vedere il primo commento ad essa), quindi sto cercando di fornirne uno qui. Su Ubuntu con apt è necessario installare soxe supportare i formati audio

sox

Prima installazione soxe supporto per i formati (incluso mp3):

sudo apt install sox libsox-fmt-*

Quindi, prima di eseguire il comando sul file / file, è necessario creare un profilo, creare un campione di rumore, questa è la parte più importante che è necessario selezionare il momento migliore in cui si verifica il rumore, assicurarsi di non farlo avere la voce (o la musica / il segnale che si tenta di conservare) in questo esempio:

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

Ora crea un profilo da quella fonte:

sox noisesample.wav -n noiseprof noise_profile_file

E infine esegui la riduzione del rumore sul file:

sox source.mp3 output.mp3 noisered noise_profile_file 0.31

Dov'è noise_profile_fileil profilo ed 0.30è il valore. I valori vanno meglio tra 0,20 e 0,30, oltre 0,3 è molto aggressivo, sotto 0,20 è un po 'morbido e funziona bene per audio molto rumorosi.

Prova a giocarci e se trovi altri trucchi di impostazione e commenta con i risultati e le impostazioni di ottimizzazione.

come elaborarli in batch

Se il rumore è simile, puoi utilizzare lo stesso profilo per tutti gli mp3

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

o se esiste una struttura di cartelle:

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

1
se è un audio parlato e canali separati destra-sinistra è inutile, quindi è possibile aggiungere remix -al mix-down di tutti i canali di ingresso mono
Jake Berger

2
@EduardFlorinescu La tua risposta è esatta. Ho avuto una registrazione statica del rumore sullo sfondo di ogni registrazione. Ho letto la tua risposta e, usato i primi 2 secondi dal mio file audio per creare un profilo e, infine, l'ho usato per rimuovere il rumore dalla registrazione. Grazie mille per questo.
Abrar Hossain,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.