Help

Difference between revisions of "SoX"

Line 7: Line 7:
 
== Denoise ==
 
== Denoise ==
 
=== Extract noise file from silence + room’s noise ===
 
=== Extract noise file from silence + room’s noise ===
Given a file with silence in it’s first 0.3sec. :
+
Given a file with silence in its first 0.3sec. :
  
 
<source lang="bash"># sox in.ext out.ext trim {start: s.ms} {duration: s.ms}
 
<source lang="bash"># sox in.ext out.ext trim {start: s.ms} {duration: s.ms}

Revision as of 08:31, 30 December 2020

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 its 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:

sox input.wav output.wav fade "0:0.3" `soxi -d input.wav` "0:0.3"

Or as a script:

#! /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

Lingua Libre technical helps
Template {{Speakers category}} • {{Recommended lists}} • {{To iso 639-2}} • {{To iso 639-3}} • {{Userbox-records}} • {{Bot steps}}
Audio files How to create a frequency list?Convert files formatsDenoise files with SoXRename and mass rename
Bots Help:BotsLinguaLibre:BotHelp:Log in to Lingua Libre with PywikibotLingua Libre Bot (gh) • OlafbotPamputtBotDragons Bot (gh)
MediaWiki MediaWiki: Help:Documentation opérationelle MediawikiHelp:Database structureHelp:CSSHelp:RenameHelp:OAuthLinguaLibre:User rights (rate limit) • Module:Lingua Libre record & {{Lingua Libre record}}JS scripts: MediaWiki:Common.jsLastAudios.jsSoundLibrary.jsItemsSugar.jsLexemeQueriesGenerator.js (pad) • Sparql2data.js (pad) • LanguagesGallery.js (pad) • Gadgets: Gadget-LinguaImporter.jsGadget-Demo.jsGadget-RecentNonAudio.jsLiLiZip.js
Queries Help:APIsHelp:SPARQLSPARQL (intermediate) (stub) • SPARQL for lexemes (stub) • SPARQL for maintenanceLingualibre:Wikidata (stub) • Help:SPARQL (HAL)
Reuses Help:Download datasetsHelp:Embed audio in HTML
Unstable & tests Help:SPARQL/test
Categories Category:Technical reports