Il y a quelques jours, j'ai fait un entretien d'embauche pour un poste dans le domaine de la voix sur IP. Ceci a réveillé un vieux projet que j'avais : dépoussiérer le vieux modem-voice Olitec SmartMemory 56000 (déniché dans une brocante d'Amboise) et l'utiliser pour créer des services vocaux, un peu comme ceux que je faisais chez CarpeDiem.

La première étape du développement a été couronnée de succès hier : mon pc sous linux commande le modem, qui m'appelle sur mon portable, et me joue un mp3 avant de racrocher.

Si on regarde sous le capot, voici les commandes AT utilisées :

AT&K3#CLS=8#VBS=4#VLS=0#BDR=16#VRN=255#VRA=45
ATDT014379xxxx
(attendre le retour VCON, qui mets plusieurs secondes à arriver)
AT#VTX
(Ctrl+A J) # cat /tmp/BORISmod.RVO > /dev/ttyS1
           # fg
ATH

Le fichier /tmp/BORISmod.RVO est au format ADPCM 4bits 7200Hz. Il faut bien prendre soin de doubler chaque octet de valeur 0x10 et terminer par les octets 0x10 0x03. Un éditeur hexadécimal fera ca très facilement.

Ce que je dois améliorer :

  • passer du format ADPCM 4bits 7200Hz au format PCM 8bits 11025Hz (c'est le maxi supporté par le modem) : penser à augmenter la vitesse de connexion et celle du port série.
  • essayer d'améliorer la détection du décroché (trop long + bips audibles)

La seconde étape consiste à encoder un flux audio vers le format PCM 8/11025 en temps réel, et le rediriger vers le modem.

La troisième étape, qui rejoint enfin la VoIP, est plus ambitieuse : il s'agit d'ajouter un plugin à Asterisk, le IP-PABX opensource pour faire de la terminaison de Voix sur IP avec la ligne téléphonique gratuite de la Freebox !

PS: Bravo à Olitec pour leur documentation très complète