Décoder un fax

L’année dernière, à cause d’un de mes CD, je me suis posé une question : comment décoder la partie audio d’un fax pour obtenir une image ? Je l’avais expliqué rapidement dans le post, je détaille (un peu) ici, avec quelques exemples.

Bon, les fax disparaissent quand même bien en Europe depuis quelques années, mais quelques pays utilisent encore beaucoup la technologie (le Japon, au hasard). C’est d’ailleurs un problème : la disparition des lignes physiques rend l’envoi et la réception de fax compliquées. En effet, les fax ne sont pas très amis avec les lignes VoIP et sauf à utiliser un appareil qui prend en charge le T.38, vous aurez des soucis. On peut bidouiller les codecs si votre adaptateurs VoIP le permet (je l’ai fait là) mais ce n’est pas une évidence sur une Box d’opérateur, par exemple.

Avant de décoder, j’ai cherché des enregistrements de fax… et j’ai eu du mal. En gros, j’ai mon CD et deux pages de chez Gough Lui. J’ai cherché sur Google, sur YouTube, dans des banques de données de sons… sans rien trouver d’exploitable. Dans le meilleur des cas, on récupère le bruit de la machine elle-même ou le début de la communication, mais pas celui de la transmission elle-même. Je ne serais pas étonné si d’autres CD contiennent de l’audio comme celui que j’ai, mais je n’ai pas trouvé d’exemples.

Avant même de tenter le décodage, il faut adapter les fichiers. Il faut en effet une source mono avec un taux d’échantillonage de 8 kHz. Avec Audacity, il faut donc séparer l’audio en deux (si vous avez du stéréo) en cliquant sur l’icône 🔽 puis en choisissant Séparer la stéréo vers des mono. Ensuite, il faut supprimer un des deux canaux. Dans certains cas, ils sont identiques, dans d’autres (comme les enregistrements de Gough Lui), il faut évidemment garder celui qui contient les données. Toujours dans Audacity, il faut changer la valeur d’échantillonnage en bas à gauche de la fenêtre et passer sur 8 kHz. Enfin, il faut exporter le tout en WAV (la quantification importe peu).

Séparer


Passer en 8 kHz

Le décodage

Pour décoder les images, je suis passé par un programme qui s’appelle spandsp, qu’il faut compiler avec une syntaxe précise. Dans mon cas, j’ai des erreurs à la fin, mais le programme dont j’ai besoin – qui fait partie de la panoplie d’outils du programme – est compilé. Attention, j’utilise la commande make -k pour passer outre certaines erreurs. Il y a des dépendances possibles (sox, notamment) mais comme j’avais déjà compilé le programme sur mon Mac il y a un an (et que je n’ai pas noté), je ne peux pas vous le dire avec certitude.

git clone https://github.com/freeswitch/spandsp
cd spandsp
./autogen.sh
./configure --enable-tests
make -k

Une fois que c’est fait, le programme fax_decode est dans le dossiers tests.

cd tests
./fax_decode nom_du_wav

Si vous avez une erreur sur le fichier audio directement, la raison probable est qu’il n’est pas en mono ou pas en 8 kHz. Si tout va bien, le programme va ensuite générer une image TIFF avec le contenu du fax. J’ai testé sur les trois fichiers de cette page et voici les résultats. Ceux de cette autre page fonctionnent aussi, ce sont des rapports météo (je vous en mets un ici). Attention à un truc : certains programmes ne gèrent pas bien les différentes pages en TIFF. Aperçu m’affiche tout, pas Pixelmator, par exemple.

Test.


Un test automatique



Un fax d’un datasheets



Un truc de météo (reconstruit)

La méthode est évidemment artisanale mais elle fonctionne… si vous avez un jour besoin de décoder un fax. Et il faut bien avouer que ça n’arrivera probablement jamais.