Help

Difference between revisions of "SoX"

Line 40: Line 40:
 
WAV_IN=$1
 
WAV_IN=$1
 
WAV_OUT=$2
 
WAV_OUT=$2
FADE_IN_L="0:0.3"
+
FADE_IN_L="0:0.3"
FADE_OUT_L="0:0.4"
+
FADE_OUT_L="0:0.4"
  
 
LENGTH=`soxi -d $WAV_IN`
 
LENGTH=`soxi -d $WAV_IN`

Revision as of 22:41, 14 January 2019

Dependencies

  • SoX - Sound eXchange, the Swiss Army knife of audio manipulation
  • FFmpeg - ffmpeg video converter
    • -ss: the time offset from beginning. (h:m:s.ms).
    • -t duration: record or transcode duration seconds of audio/video.

Denoise

Extract noise file from silence + room’s noise

Given a file with silence in it’s first 0.3sec. :

# sox in.ext out.ext trim {start: s.ms} {duration: s.ms}
sox audio.wav noise-audio.wav trim 0 0.300     
# or :
ffmpeg -i audio.wav -vn -ss 00:00:00 -t 00:00:00.300 noise-audio.wav

Generate a noise profile in sox:

sox noise-audio.wav -n noiseprof noise.prof

Clean the noise from the audio

Single file :

sox audio.wav audio-clean.wav noisered noise.prof 0.21

Batch of files:

mkdir -p ./clean;
for file in ./*.wav;do key=$(basename "$file" .wav); sox "$file" ./clean/"$key".wav noisered ./noise.prof 0.21; done;

According to source :

Change 0.21 to adjust the level of sensitivity in the sampling rates (I found 0.2-0.3 often provides best result).

Sources

Fades

To fade-in on 0.3s and out in 0.4s, you can use a simple ./fadeWav.sh bash script, such as:

#! /bin/bash
WAV_IN=$1
WAV_OUT=$2
FADE_IN_L="0:0.3"
FADE_OUT_L="0:0.4"

LENGTH=`soxi -d $WAV_IN`

sox $WAV_IN $WAV_OUT fade $FADE_IN_L $LENGTH $FADE_OUT_L

soxi -d returns the length of the wav file. See sox documentation for more on soxi.

You can run this bash script as follows:

./fadeWav.sh input.wav faded.wav

Sources

See also