Ses kayıtlarının komut satırından temizlenmesi?


28

Audacity'yi daha önce kayıtlardan gelen gürültüyü kaldırmak için kullandım , ancak çok sınırlı komut satırı kullanımı var. Önümüzdeki birkaç ay boyunca izleyeceğim ve kısa bir süre sonra izleyeceğim ve izlemeden önce hepsini bir kerede veya gerektiği gibi temizlemek için kolay bir yol istiyorum.

Bunu yapmak için kullanabileceğim bir komut satırı aracı veya popüler bir dil kütüphanesi var mı?

Yanıtlar:


17

Şuna baksana sox

Alıntı yapmak 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).

Bu yüzden, audaciy'e alternatif bir komuta satırı olarak iyi bir uyum olmalı!


Temizlik kayıtlarının asıl görevi ile ilgili olarak noisered, ses azaltma filtresinin Audacity'ye eşit olduğu filtreye bir göz atın :

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
Ne yazık ki, sox'un manpage'de kullandığı tarifnameyi okumak için çok gürültülü buluyorum - amaçlanan. Gürültü azaltma ile uğraşmak için sadece tek bir komutla daha basit bir yol yok mu?
Shevy

Elbette, sorun değil - sadece basit bir cümleyle ne değiştirmek istediğinizi yazın - ama teknik olarak netleşecek kadar kesin ... Tamam, bu şekilde çalışmaz çünkü hangi gürültünün ne olduğunu ve hangi parçaların ne olduğunu anlamanız gerekir. Sesi kaldırmak istediğiniz, azaltabileceğiniz ve ses kalitesini azaltabilecek sesler varsa, aksi takdirde gürültü azaltma işlemi gerçekleştirilir. Gürültü azaltma ile hokkabazlık yapmak için, hokkabazlık kulüplerinizi - hokkabazlık için gürültü türlerini ve orta havada çarpıştığında nasıl dengelendiğini bilmeniz gerekir. Öyleyse, sox alet çantanız ve ilk yardım çantanızdır!
Volker Siegel

12

Kabul edilen cevap pratik bir örnek vermedi (ilk yorumu görün) bu yüzden burada bir tane vermeye çalışıyorum. Apt ile Ubuntu'da yüklemelisiniz soxve ses formatları desteği

sox

İlk kurulum soxve format desteği (mp3 dahil):

sudo apt install sox libsox-fmt-*

Daha sonra komutunuzu çalıştırmadan önce dosya / dosyalar üzerinde önce bir profil oluşturmanız, bir gürültü örneği yapmanız gerekir, bu gürültü gerçekleştiğinde en iyi zamanı seçmeniz gereken en önemli kısımdır, bu örnekte ses (veya tutmaya çalıştığınız müzik / sinyal) var:

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

Şimdi bu kaynaktan bir profil oluşturun:

sox noisesample.wav -n noiseprof noise_profile_file

Ve son olarak dosyadaki gürültü azaltma işlevini çalıştırın:

sox source.mp3 output.mp3 noisered noise_profile_file 0.31

noise_profile_fileProfil ve 0.30değer nerede . Değerler 0,20 ile 0,30 arasında en iyisidir, 0,3'ün üzerinde çok agresif, 0,20'nin altında yumuşaktır ve çok gürültülü sesler için iyi çalışır.

Bununla oynamayı deneyin ve başka ayar püf noktaları bulursanız, lütfen bulgular ve ayar ayarları ile yorum yapın.

toplu işlem onları nasıl

Gürültü benzer ise, tüm mp3ler için aynı profili kullanabilirsiniz.

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

veya bir klasör yapısı varsa:

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

1
o konuşulan ses ve ayrı sol-sağ kanallar gereksizdir eğer, o zaman ekleyebilirsiniz remix -etmek mix-aşağı tüm giriş kanallarının Mono
Jake Berger

2
@EduardFlorinescu Cevabınız çok açık. Her kaydın arka planında statik bir ses kaydım vardı. Cevabınızı okudum ve ses dosyamdaki ilk 2 saniyeyi bir profil oluşturmak için kullandım ve son olarak da kaydı sesten çıkarmak için kullandım. Bunun için çok teşekkürler.
Abrar Hossain
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.