Czyścisz nagrania głosowe z wiersza poleceń?

28

Wcześniej korzystałem z Audacity do usuwania szumów z nagrań, jednak użycie linii poleceń jest bardzo ograniczone. Mam ~ 100 krótkich wykładów wideo, które będę oglądać w ciągu najbliższych kilku miesięcy i chciałbym w łatwy sposób wyczyścić je wszystkie na raz lub w razie potrzeby przed obejrzeniem.

Czy istnieje narzędzie wiersza polecenia lub biblioteka popularnych języków, których można użyć do tego celu?

Annan
źródło

Odpowiedzi:

17

Spojrzeć na sox

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

Powinno być więc dobrym wyborem jako towarzysząca linia poleceń alternatywa dla audaciy!


Jeśli chodzi o rzeczywiste zadanie czyszczenia nagrań, spójrz na filtr, noisereddla którego odpowiada filtr redukcji szumów 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
źródło
7
Niestety uważam, że opis używany przez sox na stronie podręcznej jest bardzo hałaśliwy do przeczytania - zamierzony kalambur. Czy nie ma prostszego sposobu, używając tylko jednego polecenia, aby pogodzić się z redukcją szumów?
shevy
Jasne, nie ma problemu - po prostu napisz w jednym prostym zdaniu, co chcesz zmienić - ale wystarczająco precyzyjnie, aby było technicznie jasne ... Ok, to nie zadziała tak, ponieważ musisz zrozumieć, co to jest hałas i która z części hałas, który chcesz usunąć, który możesz zmniejszyć, a co może obniżyć jakość dźwięku, w przeciwnym razie redukując hałas. Aby żonglować z redukcją szumów, musisz znać swoje żonglujące kluby - rodzaje żonglowanych dźwięków oraz sposoby ich zrównoważenia, gdy zderzą się w powietrzu. Zatem sox to zestaw narzędzi i apteczka!
Volker Siegel
12

Przyjęta odpowiedź nie daje praktycznego przykładu (patrz pierwszy komentarz do niej), więc próbuję ją tutaj podać. Na Ubuntu z apt należy zainstalować soxi obsługiwać formaty audio

sox

Pierwsza instalacja soxi obsługa formatów (w tym mp3):

sudo apt install sox libsox-fmt-*

Następnie, zanim uruchomisz polecenie na pliku / plikach, musisz najpierw zbudować profil, zrobić próbkę hałasu, jest to najważniejsza część, którą musisz wybrać najlepszy czas, kiedy hałas ma miejsce, upewnij się, że nie mieć głos (lub muzykę / sygnał, który próbujesz zachować) w tej próbce:

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

Teraz utwórz profil z tego źródła:

sox noisesample.wav -n noiseprof noise_profile_file

I wreszcie uruchom redukcję szumów na pliku:

sox source.mp3 output.mp3 noisered noise_profile_file 0.31

Gdzie noise_profile_filejest profil i 0.30wartość. Wartości idą najlepiej gdzieś pomiędzy 0,20 a 0,30, powyżej 0,3 jest bardzo agresywny, poniżej 0,20 jest trochę miękki i działa dobrze w przypadku bardzo głośnych dźwięków.

Spróbuj się z tym pogodzić, a jeśli znajdziesz inne sztuczki z ustawieniami, i skomentuj wyniki oraz ustawienia tuningu.

jak je przetwarzać wsadowo

Jeśli hałas jest podobny, możesz użyć tego samego profilu dla wszystkich plików mp3

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

lub jeśli istnieje struktura folderów:

tree -fai . | grep -P ".mp3$" | xargs -L1 -I{} sox {}  {}_noise_reduced.mp3  noisered noise_profile_file 0.31
Eduard Florinescu
źródło
1
jeśli jest to wypowiedziane audio i oddzielne kanały lewo-prawo jest konieczne, można dołączyć remix -do mix-down wszystkich kanałów wejściowych mono
Jake Berger
2
@EduardFlorinescu Twoja odpowiedź jest na miejscu. Miałem statyczny zapis szumu na tle każdego nagrania. Przeczytałem twoją odpowiedź i wykorzystałem pierwsze 2 sekundy z mojego pliku dźwiękowego, aby utworzyć profil, a na koniec użyłem go do usunięcia szumu z nagrania. Wielkie dzięki za to.
Abrar Hossain