Speex

Speex est un codec libre et sans brevets. Il compresse avec perte de données (comme MP3 et Vorbis) et est spécialisé et optimisé pour la voix humaine.

Speex, projet né indépendant, a été intégré au projet Ogg le . Pour rappel, Ogg est un format de fichier qui contient des flux audio et/ou vidéo. Un fichier Ogg peut donc contenir un flux Speex comme un flux Vorbis.

Il obtient pour tout ce qui est parole, des rapports qualité et de taille bien supérieurs aux formats de compression similaires conçus pour la compression musicale. À  la qualité est correcte pour tout type de conversation.

Il est présent dans une large base de logiciels, notamment grâce à des  et des filtres. Il est supporté par des logiciels de téléconférence, de flux de données, de traitement du son, de lecture multimédia, de P2P, des jeux.

Speex est devenu obsolète avant 2014, car le format opus est plus performant.

Description 
À la différence de la plupart des autres codecs dédiés à la parole, Speex n'est pas fait pour une utilisation sur téléphone portable mais plutôt pour la VoIP et la compression dans des fichiers.
Les principaux buts ont été de créer un codec optimisé pour la parole, qui associe une bonne compréhension du dialogue transmis, ainsi qu'un fort taux de compression des données possibles.
Speex peut utiliser de nombreux débits et bande passante possibles. Conçu pour une utilisation en VoIP, Speex gère bien la perte de données dans le transport, mais il ne gère pas les paquets corrompus car le protocole de transfert UDP assure que les paquets transmis sont intacts (ils ne sont pas transmis s'ils sont altérés).
La méthode retenue par le codec Speex, est le CELP (). La raison principale est que CELP s'est avéré capable de s'adapter à des débits bas (comme mis en évidence par DoD CELP à ), aussi bien qu'aux débits plus hauts (comme pour le G.728 à ).
Les caractéristiques principales peuvent être résumées comme suit :
 Logiciel libre/open-source, Libre de tous brevets et 
 Intégration d'une bande passante restreinte à normale dans un même flux de données
 Grande variété de débits disponibles (de  à )
 Changement de débit dynamique et codage à débit variable
 VAD () (intégré dans le codage à débit variable)
 Complexité variable
 Mode Bande passante étendue ( à plus de )
 Option d'encodage stéréo par réglage du volume de chaque canal (au lieu d'utiliser un délai entre les deux canaux)

Fonctionnalités 
Fréquence d'échantillonnage  Speex est conçu de manière à être utilisé dans trois fréquences d'échantillonnage différentes :  (Comme pour la transmission des appels téléphoniques), , 
Qualité  L'encodeur Speex est contrôlé par un paramètre de qualité compris entre 0 et 10. En mode CBR, le paramètre de qualité est un nombre entier, en mode VBR, c'est un nombre à virgule flottante
Complexité (variable)  Avec Speex, il est possible de gérer la complexité de l'encodeur par un paramètre réglable entre 1 et 10 et qui définit la zone de recherche de l'encodeur. Un peu comme les options -1 à -9 de l'utilitaire de compression de données gzip. Pour une utilisation normale, le niveau de bruit pour une complexité de 1 est comprise entre 1 et  de plus qu'avec le réglage de complexité de 10. Mais les ressources CPU nécessaires pour une complexité de 10 sont 5 fois supérieure à celle nécessaire à une complexité de 1. En pratique le meilleur réglage est compris entre 2 et 4, des paramètres supérieurs sont utilisés plutôt pour des sons autres que la parole (comme pour le codage DTMF () ou pour un encodage qui n'a pas besoin d'être en temps réel.
Débit variable ( (VBR))  Le mode de codage à débit variable (VBR) permet au codec de changer de débit dynamiquement pour s'adapter à une source audio plus difficile à encoder. Les sons complexes sont codés avec un plus grand débit, et les sons simples avec moins de débit. Le but est que la qualité reste constante en faisant varier le débit. Cependant comme le débit final n'est pas garanti, des problèmes peuvent se poser dans les applications temps réel tel que la VoIP.
Débit de données moyen (ABR) ()  Le principe du débit de données moyen, résout un des problèmes du codage à débit variable, en ajustant dynamiquement la qualité du codage VBR de manière à obtenir un débit de données cible spécifique. La qualité obtenue est en conséquence inférieure au codage à débit variable.
 (VAD)  Quand cette option est activé, le VAD détecte quand l'audio encodé est du dialogue ou du silence/bruit de fond. VAD est toujours implicitement activé en encodage VBR, donc cette option est utile uniquement en mode non VBR. Dans ce cas Speex détecte les périodes sans dialogue et les encode avec le strict minimum de bits pour reproduire le bruit de fond. Cette fonction est appelée  (CNG).
Transmission Discontinues ( (DTX))  La transmission discontinue est une fonctionnalité qui s'ajoute aux opérations de VAD et de VBR, qui permet de couper la transmission complètement quand le bruit de fond est stationnaire. Dans un fichier,  sont utilisés pour chaque  manquante (correspondant à )
Perfectionnement perceptible  Le perfectionnement perceptible est une partie du décodeur qui quand il est activé, tente de réduire la perception du bruit produit par le processus de codage/décodage. Dans la plupart des cas, le perfectionnement perceptible crée un son différent de l'original (avec un rapport signal sur bruit différent), mais  le son semble finalement meilleur à l'écoute.
Délai Algorithmique  Chaque codec introduit un délai dans la transmission, pour Speex, ce délai est égal à la taille d'une , plus un peu de temps nécessaire au traitement de chaque . Pour une bande passante de , le délai est d'environ , et pour une bande passante de , ce délai monte à . Ces valeurs ne comprennent pas le temps de calcul processeur nécessaire à l'encodage et au décodage de chaque .

Quelques logiciels supportant le format Speex (voir la page  du site officiel) :

 bibliothèques de traitement de son : , OpenACM, OpenH323 (ce qui implique une multitude de logiciels)
 binding de langage (API) : C, Python, Java, Delphi
 Téléconférence, PBX, VoIP : QuteCom, , , Ekiga, Asterisk, Linphone
 Lecteurs multimédia et  : Songbird, VLC, Winamp, XMMS, ogg123, foobar2000, JRoar
 Traitement de son : Audacity, Psycle, Sweep, CoolEdit
 Jeux : Marathon: Aleph One ou via TeamSpeak, Façade
 P2P : GNUnet, eMule, aMule, xMule
 Téléphone: l'application de l'iphone Siri

Étymologie 
Speex est un jeu de mots avec  qui signifie en anglais « (il) parle ».

Notes et références

Voir aussi 
 César MAKAMONA MBUMBA SHEALTIEL, Applicative Note, SPEEX CODEC IMPLEMENTATION ON THE RX210 MICROCONTROLLER : http://dirac.epucfe.eu/projets/wakka.php?wiki=P12AB10/download&file=P12AB10_Sujet2.pdf

 Speex Encoder/Player sur RX210 : http://dirac.epucfe.eu/projets/wakka.php?wiki=P12AB10

Liens externes 
 
  La page 

Codec audio
Algorithme de compression avec perte
Logiciel libre sous licence BSD
Logiciel du projet GNU
Format ouvert