Sprachaufnahmen von der Kommandozeile aus bereinigen?

28

Ich habe Audacity schon früher zum Entfernen von Rauschen aus Aufzeichnungen verwendet, es hat jedoch nur eine sehr eingeschränkte Befehlszeilenverwendung. Ich habe ~ 100 kurze Vorlesungsvideos, die ich mir in den nächsten Monaten ansehen werde, und möchte eine einfache Möglichkeit, sie alle auf einmal oder nach Bedarf zu reinigen, bevor ich sie mir anschaue.

Gibt es ein Befehlszeilentool oder eine beliebte Sprachbibliothek, mit der ich dies tun kann?

Annan
quelle

Antworten:

17

Schauen Sie sich an sox

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

Es sollte also eine gute Alternative zu audaciy sein!


Werfen Sie einen Blick auf den Filter, noiseredder dem Rauschunterdrückungsfilter entspricht. 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
quelle
7
Leider finde ich die Beschreibung, die sox in der Manpage verwendet, sehr laut zu lesen - pun beabsichtigt. Gibt es nicht einen viel einfacheren Weg, mit nur einem einzigen Befehl mit Geräuschreduzierung herumzuspielen?
Shevy
Klar, kein Problem - schreibe einfach in einem einfachen Satz, was du ändern willst - aber genau genug, um technisch klar zu sein ... Ok, das wird so nicht funktionieren, weil du verstehen musst, was Rauschen ist und welche Teile davon das Rauschen, das Sie entfernen möchten, was Sie möglicherweise reduzieren, und was die Klangqualität verringern kann, wenn Sie die Rauschunterdrückung nicht ausführen. Um mit der Geräuschreduzierung zu jonglieren, müssen Sie Ihre Jonglierclubs kennen - die Geräuscharten, die Sie jonglieren müssen, und wie sie ausgeglichen werden können, wenn sie in der Luft kollidieren. Dann ist sox Ihr Werkzeugkasten und Erste-Hilfe-Kasten!
Volker Siegel
12

Die akzeptierte Antwort gibt kein praktisches Beispiel (siehe ersten Kommentar dazu), daher versuche ich, hier ein Beispiel anzugeben. Unter Ubuntu mit apt sollten Sie installieren soxund Audioformate unterstützen

sox

Erstinstallation soxund Unterstützung für Formate (einschließlich MP3):

sudo apt install sox libsox-fmt-*

Bevor Sie dann Ihren Befehl für die Datei (en) ausführen, müssen Sie zuerst ein Profil erstellen und eine Geräuschprobe erstellen. Dies ist der wichtigste Teil, den Sie auswählen müssen, um die beste Zeit für das Auftreten des Geräusches auszuwählen. Stellen Sie sicher, dass Sie dies nicht tun Haben Sie Stimme (oder die Musik / das Signal, das Sie behalten möchten) in diesem Beispiel:

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

Machen Sie jetzt aus dieser Quelle ein Profil:

sox noisesample.wav -n noiseprof noise_profile_file

Und schließlich führen Sie die Rauschunterdrückung für die Datei aus:

sox source.mp3 output.mp3 noisered noise_profile_file 0.31

Wo noise_profile_fileist das Profil und 0.30ist der Wert. Werte liegen am besten zwischen 0,20 und 0,30, über 0,3 ist sehr aggressiv, unter 0,20 ist etwas weich und eignet sich gut für sehr laute Audios.

Versuchen Sie, damit zu spielen, und wenn Sie andere Einstellungstricks finden, kommentieren Sie bitte die Ergebnisse und die Einstellungseinstellungen.

wie man sie stapelweise verarbeitet

Wenn das Rauschen ähnlich ist, können Sie für alle MP3s dasselbe Profil verwenden

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

oder wenn es eine Ordnerstruktur gibt:

tree -fai . | grep -P ".mp3$" | xargs -L1 -I{} sox {}  {}_noise_reduced.mp3  noisered noise_profile_file 0.31
Eduard Florinescu
quelle
1
wenn es gesprochene Audio-und eine separate Links-Rechts - Kanäle ist nicht erforderlich ist , dann kann man anhängen Mono aller Eingangskanäle Abmischungremix -
Jake Berger
2
@EduardFlorinescu Ihre Antwort ist genau richtig. Ich hatte eine statische Geräuschaufnahme auf dem Hintergrund jeder Aufnahme. Ich habe Ihre Antwort gelesen und die ersten 2 Sekunden aus meiner Audiodatei verwendet, um ein Profil zu erstellen und schließlich das Rauschen aus der Aufnahme zu entfernen. Vielen Dank dafür.
Abrar Hossain