Si vous disposez d'ouvrages ou d'articles de référence ou si vous connaissez des sites web de qualité traitant du thème abordé ici, merci de compléter l'article en donnant les références utiles à sa vérifiabilité et en les liant à la section « Notes et références ».
Le logiciel SoX (SOund eXchange, en français : « échange de son ») est un utilitaire pour Unix (dont Linux), MacOS et Windows, en ligne de commande permettant la manipulation de sons et leur conversions dans différents format audio. Il est en ce sens similaire à ImageMagick pour les images ou FFmpeg pour la vidéo.
Fonctionnalités
SoX peut lire et enregistrer des sons depuis la majorité des plateformes en accédant aux périphériques audio.
Le Processeur de signal numérique (ou DSP) peut être utilisé pour l'accélération du traitement, sous Linux, l'interface ossdsp est utilisée via l'option -t ossdsp /dev/dsp, où /dev/dsp est le périphérique DSP à utiliser[2],[3].
Il peut appliquer différents effets aux sons qu'il traite, notamment à l'aide du support des plugins LADSPA[4]. Il peut fonctionner en multithread, afin d'accélérer les calculs d'effets[5] et peut générer des scripts pour répondre aux effets des filtres, à l'aide de Gnuplot ou de GNU Octave[6].
Les effets intégrés sont les suivants, ladspa servant à executer un plugin d'effet LADSPA[7] :
EFFECTS: allpass band bandpass bandreject bass bend biquad chorus channels compand contrast dcshift deemph delay dither divide+ downsample earwax echo echos equalizer fade fir firfit+ flanger gain highpass hilbert input# ladspa loudness lowpass mcompand noiseprof noisered norm oops output# overdrive pad phaser pitch rate remix repeat reverb reverse riaa silence sinc spectrogram speed splice stat stats stretch swap synth tempo treble tremolo trim upsample vad vol
* Deprecated effect + Experimental effect # LibSoX-only effect
EFFECT OPTIONS (effopts): effect dependent; see --help-effect
Il a un système de ré-échantillonnage avancé, permettant par exemple ed ré-échantillonner du débit DAT au format CD[8].
SoX peut également encoder et décoder dans les formats les plus courants de fichiers audio : aac, avi, flac, Opus, mp3, ogg, wav, wmv. Il permet de convertir les fichiers .au en .wav. La liste complète des formats supportés de la version peut-être obtenue par sox --help. Par exemple la version 14.4.2, pour Arch Linux, donne en :
AUDIO FILE FORMATS: 8svx aif aifc aiff aiffc al amb amr-nb amr-wb anb au avr awb caf cdda cdr cvs cvsd cvu dat dvms f32 f4 f64 f8 fap flac fssd gsm gsrt hcom htk ima ircam la lpc lpc10 lu mat mat4 mat5 maud mp2 mp3 nist ogg opus paf prc pvf raw s1 s16 s2 s24 s3 s32 s4 s8 sb sd2 sds sf sl sln smp snd sndfile sndr sndt sou sox sph sw txw u1 u16 u2 u24 u3 u32 u4 u8 ub ul uw vms voc vorbis vox w64 wav wavpcm wv wve xa xi
PLAYLIST FORMATS: m3u pls
AUDIO DEVICE DRIVERS: alsa ao oss ossdsp pulseaudio
La partie AUDIO DEVICE DRIVERS dépend du système d'exploitation.
SoX permet aussi d'ajouter des filtres lors de la conversion, de concaténer et de mixer plusieurs fichiers.
Bibliothèque
En dehors de son utilisation en ligne de commande permettant de l'utiliser dans des scripts shell, le logiciel comprend une bibliothèque nommée libSox permettant l'intégration de toutes les fonctionnalités dans d'autres logiciels en langage C[9] et des wrappers dans différents langages de programmation :
Pour le langage Lua, il est possible d'utiliser les pipes shell pour échanger entre SoX et le module Luasynth[14]
Exemples de fonctionnement
La gestion des différents format de fichiers audio est transparente et détectée automatiquement pas SoX via l'extension du fichier (entrée et sortie), ou contenu (entrée).
La commande sox fichier lit le fichier audio. Cependant avec certains serveurs de son comme PulseAudio, il faut parfois contourner pour préciser le flux audio à utiliser. Pour Pulseaudio, par exemple, il faut passer par padsp (PulseAudioDSP)[2] : padsp sox fichier -t ossdsp /dev/dsp
Pour enregistrer l'entrée son du système vers un fichier audio, il suffit d'inverser sortie et entrée : padsp sox -t ossdsp /dev/dsp fichier
La syntaxe pour convertir un fichier .au en .wav : sox fichiersource.au nouveaufichier.wav
Historique
SoX fut créé en par Lance Norskog et posté sur le groupe Usenet alt.sources sous l'appellation Aural eXchange: Sound sample translator. Norskog continua de maintenir et de sortir SoX via Usenet, ftp et le web, jusqu'au début de 1995.
En 1996, Chris Bagwell lance sa propre sortie du programme patché après avoir effectué le portage sous Linux et Sun.
Ce programme est sous licence GPL. La dernière version au est la 14.4.2[4], mais le développement est toujours actif en 2020.