Sox et conversion 32 bits / 16 bits

Posté le 17 mai   |   Linux for dummies      

Récemment, j'ai eu à convertir un fichier .wav 32 bits en un fichier mp3. Habituellement j'utilise lame dans une console comme convertisseur mp3, mais avec un wav 32 bits en input ça ne semblait pas marcher :

$ lame file.wav 
Unsupported data format: 0x0003

Allons bon, lame va pas bien, c'est pas grave, on va faire du ogg :

$ oggenc file.wav 
Omition d'un tronçon de type « JUNK » et de longueur 4042
Ouverture avec le module wav : WAV file reader
Encodage de "file.wav" 
         en "file.ogg" 
à la qualité 3,00
        [ 22,7%] [ 0m42s remaining] - ^C

Ça marche avec le ogg, pas la peine d'attendre que ce soit fini. N'empêche que j'ai toujours pas mon mp3 parce que lame ne veut pas traiter du wav 32 bits. Solution de secours : utiliser sox, packagé dans sox :

$ aptitude search sox
(...)
c   sox                             - Swiss army knife of sound processing

Et maintenant passons à la conversion du wav 32 bits en wav 16 bits, à 44,1kHz :

                                              
$ sox file.wav -b 16 ~/tmp/file2.wav rate -I 44100 dither -s
sox WARN dither: dither clipped 23 samples; decrease volume?

Remarquez le dernier message : le fichier son a clippé (saturé) sur 23 échantillons. On va refaire la conversion, mais cette fois-ci en diminuant le gain de 1dB :

$ sox file.wav -b 16 ~/tmp/file2.wav gain -1 rate -I 44100 dither -s
$

Cette fois c'est parfait ! plus qu'à passer une couche de lame et ça marche sans souci.

La discussion continue ailleurs

URL de rétrolien : http://blog.guiling.fr/index.php?trackback/54

Fil des commentaires de ce billet