m1gin

#sox #audioprocessing #ubuntu #noisereduction

http://linux.die.net/man/1/sox

ffmpeg v1.1+ sürümü ile aynı biçimli dosyalar dönüştürülmeden birleştirilebilmektedir.

Change sample rate:

  • sox mix22k.wav -r 44100 mix44k.wav
  • sox mix22k.wav mix44k.wav rate 44100

http:// desteklenmektedir:

  • sox https://ssl.gstatic.com/dictionary/static/sounds/de/0/dormitory.mp3 -c 2 url.wav

WAV dosyaları art arda birbirine eklemek

  • sox --combine concatenate au1.wav au2.wav au_joint.wav
  •  sox --combine sequence rec2.wav back.wav mix.wav --norm

Aralara boşluk ekleyebilmek için, öncelikle istenen uzunlukta sessiz bir dosya oluşturulup aralara eklenebilir.

 3 sn uzunluklu, stereo bir sessizlik oluşturma:

  • sox -n -r 44100 -c 2 silence3.wav trim 0.0 3.0

Daha sonra şu şekilde birleştirme yapılabilir:

  • sox --combine concatenate au1.wav silence3.wav au2.wav silence3.wav au3.wav au_joint.wav

Çok sayıda dosyayı gruplayarak ve aralara sessizlik ekleyerek birleştirmek…

  • sox -n -r 44100 -c 1 /tmp/silence.wav trim 0.0 1.1; c=; for i in {1..2000..10}; do echo $c: $i ; sox -G $(for f in 2-$c[0-9].mp3; do echo -n "$f /tmp/silence.wav "; done) -r 44100 -C 128 /media/win/sil/ing/bbcwm/2-$c.mp3 ; c=$(( c+1 )); done;

Wav dosyalarını üstüste bindirerek mix yapmak 

  •  sox --combine merge rec2.wav back.wav mix.wav
  •  sox --combine mix rec2.wav back.wav mix.wav --norm
  •  sox --combine mix-power rec2.wav back.wav mix.ogg --norm

-v çarpan ile dosyalarda ses yükseltme/düşürme yapılabilir. Böylece arkada fon müziği kullanılmış olunur.

  • sox --combine mix -v 3 rec2.wav -v 0.5 back.wav mix.wav --norm
  •  sox --combine merge -v 1.4 rec2.wav -v 0.3 back.wav mix.wav

Zaman aralıklı olarak mix yapmak…

sox -m kullanıldığında, pad ile verilen saniyede ilgili ses devreye girmektedir.

sox --combine concatenate kullanıldığında, pad ile verilen değer, boşluk olmaktadır.

  • sox -m f1.wav "|sox f2.wav -p pad 4" "|sox f3.wav -p pad 8" out.wav
  • sox -m m.ogg "|sox h.ogg -p pad 14" hm.ogg
  • sox -m -v 0.6 h.wav -v 0.4 "|sox m.wav -p pad 13.51" hm.wav --norm -V
  • sox --combine concatenate -v 1 altitude.mp3 "|sox -v 1.2 arraignment.mp3 -p pad 4" "|sox -v 2 apprehend.mp3 -p pad 12" mix.mp3



MP3 format desteği için:

sudo apt-get install libsox-fmt-mp3 libsox-fmt-all

  • sox --combine concatenate -v 1 altitude.mp3 -v 1.2 arraignment.mp3 -v 2 apprehend.mp3 joint.ogg
  • sox --combine concatenate -v 1 altitude.mp3 silence3.wav -v 0.8 arraignment.mp3 silence3.wav -v 0.9 apprehend.mp3 mix.wav delay 0.02

Örnek Uygulama: 22KHz frekanslı birçok kelimeyi birleştirmek ve 44KHz frekanslı müziği fon olarak kullanıp Stereo (-c 2) çıktı almak:

  • sox --combine concatenate -v 1 altitude.mp3 silence3.wav -v 0.8 arraignment.mp3 silence3.wav -v 0.9 apprehend.mp3 -r 44100 joint.wav
  • sox --combine merge -v 1 joint.wav -v 0.3 ../../Mega_Hafiza_Ingilizce_Egitim_Seti/cd3/04.mp3 -c 2 mixed.mp3

Yukarıdaki iki ayrı komut yerine, aşağıdaki tek komut kullanılabilir…

Aşağıdaki komutta ek olarak, kelimelerin başlayacağı zamanı ayarlamak da mümkün: (pad 11):

  • sox --combine mix -v 0.4 ../../Mega_Hafiza_Ingilizce_Egitim_Seti/cd3/04.mp3 "|sox --combine concatenate -v 0.9 altitude.mp3 silence3.wav -v 0.8 arraignment.mp3 silence3.wav -v 0.9 apprehend.mp3 -r 44100 -p pad 11" -c 2 mixed.mp3

Ancak birleştirilen dosyaların tümü ya mono yahut stereo yahut aynı sayıda kanala sahip olmalıdır. Bunu önlemek için aşağıdaki yöntem kullanılabilir. 

Ayrıca pad kullanılıp boşluk bırakılabildiğinden, silence.wav dosyası kullanmaya gerek kalmamaktadır. 

  • sox --combine concatenate "|sox -v 0.5 wager.mp3 -c 1 -p pad 2" "|sox -v 0.9 wager.mp3 -c 1 -p pad 3" "|sox -v 0.8 resurrection.mp3 -c 1 -p pad 3" "|sox -v 0.9 respiratory.mp3 -c 1 -p pad 5" "|sox -v 0.8 ravage.mp3 -c 1 -p pad 3" -c 2 mix.wav

Ve, son olarak çıktı almak yerine pipe yapılıp, fon müziği ile birleştirme yapılırsa…

  • sox --combine concatenate "|sox -v 0.3 wager.mp3 -c 2 -r 44100 -p pad 2" "|sox -v 0.9 wager.mp3 -c 2 -r 44100 -p pad 3" "|sox -v 0.8 resurrection.mp3 -c 2 -r 44100 -p pad 3" "|sox -v 0.9 respiratory.mp3 -c 2 -r 44100 -p pad 5" "|sox -v 0.8 ravage.mp3 -c 2 -r 44100 -p pad 3" -c 2 -r 44100 -p pad 11 | sox --combine mix -v 0.4 ../../Mega_Hafiza_Ingilizce_Egitim_Seti/cd3/09.mp3 -v 0.9 - -c 2 -r 44100 mixed.mp3


sox ile çok sayıda efekt de verilebilmektedir.

  • sox in.wav mix.wav --norm echo 0.8 0.9 1000 0.3
  • sox in.wav mix.wav --norm chorus 0.7 0.9 55 0.4 0.25 2 -t
  • sox in.wav mix.wav chorus 0.5 0.9 50 0.4 0.25 2 -t 60 0.32 0.4 2.3 -t 40 0.3 0.3 1.3 -s
  • sox in.wav mix.wav gain -3 pad 0 3 reverb
  • sox in.wav mix.wav compand 0.3,1 6:-70,-60,-20 -5 -90 0.2
  • sox --help-effect trim

Get Info:

 sox mix.wav -n stat

Get part of audio

sox Input.wav part.wav trim 30:00 10:00



Record test (no file)
rec -n

Play a file (effect can be tested)

play mix.wav 

play mix.wav echos 0.8 0.7 700 0.25 900 0.3

play mix.wav reverb

play mix.wav reverse



sox ile gürültü giderme:

# Create background noise profile from mp3 and then remove noise from mp3 using profile

  • sox noise.mp3 -n noiseprof noise.prof
  • sox input.mp3 output.mp3 noisered noise.prof 0.21
  • sox 2456.wav 2456_nn.wav noisered noise.prof 0.40
  • for f in *.wav; do sox -V "$f" -C 128 "mp3/${f%.wav}.mp3" noisered noise.prof 0.30; done

# Remove silence from mp3

/usr/bin/sox input.mp3 output.mp3 silence -l 1 0.3 5% -1 2.0 5%

# Remove noise and silence in a single command

/usr/bin/sox input.mp3 output.mp3 noisered noise.prof 0.21 silence -l 1 0.3 5% -1 2.0 5%

# create noise profile for each file by piping…

  • for f in *.flac; do sox "$f" -n noiseprof | sox -V "$f" -C 128 "mp3/${f%.flac}.mp3" noisered - 0.11; done;


sox Örnek Uygulama: 

Sample Rate dğeri 44100 Hz olmayan mp3 dosyalarını toplu olarak düzeltmek:

  • for f in *.mp3; do sr=$(soxi -sr "$f"); if [ "$sr" -ne "44100" ]; then echo $sr : $f; sox $f --norm -r 44100 -c 2 -C 192 "convert/$f"; mv $f convert/sil/$f; fi; done;

soxi -c ile bir ses dosyasının kanal sayısı (stereo/mono) elde edilebilir. 


Audacity ile Noise Removal

Audacity - File - Apply Chain ile toplu işlemler yapılabilmektedir.
Noise Removal efektini bu şekilde kullanmak mümkün, ancak öncesinde ses profili oluşturulmalıdır. Bunun için örnek dosya (noise.flac) açılıp, gürültü kısmı seçilir ve "Get Noise Profile" butonona basılır. Sonrasında Noise Removal içeren bir Chain çok sayıda dosyaya uygulanabilir. 

Bilgi: http://manual.audacityteam.org/o/man/noise_removal.html

Add to: