Encodage des sons
Historique
19 décembre 2012 : Restructuration d'une page de l'ancien site de Païou.
Difficulté
Pour : un esprit un peu curieux. Mais le sujet n'est pas simple
Introduction
En fait, tout a commencé lorsque je me suis demandé quels greffons de gstreamer je devrais installer.
Le son, la vidéo sont les composants essentiels des fichiers multimédia.
Lorsqu'il s'agit de choisir un lecteur multimédia, il est judicieux de se demander ce qu'il doit effectivement lire.
Les sons, c'est comment ?
Intéressons-nous aux sons pour commencer.
Vous trouverez, sur une autre page, quelques notions relatives aux sons :
sensation, onde, signal électronique, échantillonnage ...
La page qui traite de la physique et de l'électronique : 
L'échantillonnage
Pour pouvoir être traité par un ordinateur, le son doit d'abord être converti en signal numérique. Pour ceci, le signal analogique est découpé en échantillons et la grandeur de chaque échantillon est numérisée (succession de 0 et 1).
Plus vous augmentez la fréquence des échantillos et/ou la finesse de la conversion analogique/numérique, plus les données ainsi produites vont avoir un volume important, trop important. Ceci conduit, lors de la transmission de flux audio, à un débit binaire incompatible avec les liaisons internet.
La même page qui traite de l'échantillonnage : 
L'encodage
L'encodage caractérise la façon dont sont produits les échantillons et la façon dont le signal numérique est codé.
Différentes caractéristiques doivent être précisées par l'encodage :
- la fréquence de l'échantillonnage (peut être constante ou variable),
- la finesse de l'échantillonnage (nombre de bits),
- échantillonnage avec un pas linéaire ou logarithmique
- la représentation numérique du signal digital : valeur signée, non signée, à virgule flottante,
- le traitement numérique du signal : le fichier peut être compressé (type de compression), la compression peut être avec perte de la qualité ou non ...
Il existe donc une grande variété de codages. Certains d'entre eux comprennent également une compression du signal numérique produit par l'échantillonnage.
Les techniques de compression sont basées sur des concepts mathématiques assez ardus. Pour cette raison, les techniques utilisées sont simplement mentionnées avec chaque type d'encodage
Pour les curieux, la page qui traite de la compression : 
De nombreuses techniques d'encodage existent. Voici une liste non exhaustive de types de codage ou codecs.
- PCM (Pulse Code Modulation) Domaine public.
Encodage audio par échantillonnage et codage binaire de la valeur des échantillons.
Cet encodage comprend plusieurs sous-catégories, correspondant à différents types de codage de la valeur des échantillons :
- LPCM (Linear Pulse Code Modulated Audio.) Codage sans pertes
Découpage linéaire, fréquence d'échantillonnage fixe.
Amplitude codées sur 8 à 32 bits (selon les applications)
Il est d'un usage courant : disques compacts audio (CD), bandes DAT, disques optiques à haute capacité.
Ex. CD audio : 2 canaux, échantillonnage 44,1 kHz, 16 bits..
- PCM IEEE 754 (Pulse Code Modulated Audio). Codage sans pertes.
L'échantillonnage est identique à celui du codage LPCM.
La seule différence concerne la représentation numérique de la valeur des échantillons. Il s'agit d'un format à 32 bits, à virgule flottante. Ce n'est pas une compression à proprement parler, mais une représentation qui consomme moins de volume.
- DPCM (Differential Pulse Code Modulated Audio). Codage sans pertes.
L'échantillonnage est identique à celui du codage LPCM.
Mais ici on code la différence d'amplitude entre deux échantillons successifs au lieu d'en coder la valeur (ce qui permet de gagner 1 octet, en général).
Ne pas confondre avec ADPCM.
- ADPCM (Adaptive Differential Pulse Code Modulation.) Avec compression et pertes.
Utilise un schéma de prédiction et code l'écart entre le signal réel et la prédiction.
L'Interactive Multimedia Association (IMA) a développé un algorithme ADPCM conçu pour être utilisé dans les jeux multimédia. Il est particulièrement rapide (encodage et décodage) et n'exige pas d'opération en virgule flottante. L'implémentation par les différents constructeurs est sensiblement la même, mais pas l'intégration dans les fichiers.
Il est codé sur 4 bits et les pertes sont surtout sensibles aux fréquences élevées. Voici quelques exemples :
- ADX (CRI Middleware) codec propriétaire et fermé, avec compression et pertes
Découpage linéaire ou logarithmique, 4 bits. Utilisé par plusieurs consoles de jeux, telle Dreamcast de Sega. Fichier .adx (haute qualité) ou .ahx (haute compression)
- YADPCM (Yamaha) codec propriétaire et fermé, avec compression et pertes
4 bits, mono (fichier .yadpcm) ou mono/stéréo (fichier .wav), échantillonnage de 5125 à 44100 Hz.
- ADPCM MS (Microsoft) codec propriétaire, avec compression et pertes
4 bits, mono ou stéréo, échantillonnage à 11025, 22050, ou 44100 Hz.
- ADPCM DVI ou ADPCM IMA (Intel) codec propriétaire, avec compression et pertes
3 ou 4 bits, mono ou stéréo, échantillonnage à 8000, 11025, 22050 ou 44100 Hz.
- QuickTime IMA ADPCM (Apple) codec propriétaire
Impossible de trouver les caractéristiques. Un échantillon 16bit 44100 Hz, stéréo est converti avec ffmpeg.
En travaux
- L'Union internationale des télécommunications (ITU) a utilisé, à l'usage de la compression de la voix, des encodages basés sur PCM ou ADPCM, avec plusieurs variantes :
- g.711 A-Law
ITU Codage PCM logarithmique, avec compression et pertes, 8 bits, multicanaux, échantillonnage 8000 (normal), 11025, 22050 ou 44100 Hz. Utilisé en Europe pour les télécommunications (faible bande passante). Dans fichier .aifc, .au, .wav
- g.711 Mu-Law
ITU Codage PCM logarithmique, avec compression et pertes, 8 bits, multicanaux, échantillonnage 8000 (normal), 11025, 22050 ou 44100 Hz. Utilisé en Amérique du nord et au Japon pour les télécommunications (faible bande passante). Dans fichier .aifc, .au, .wav
- g.721 (ITU)
Codage ADPCM avec compression et pertes, 4 bits, mono, échantillonnage 8000 Hz, débit 32 kb/s. Est obsolète et remplacé par g.726 avec débit 32 kb/s
- g.723 (ITU)
Codage ADPCM avec compression et pertes, 3 ou 5 bits, mono, échantillonnage 8000 Hz, débit 24 ou 40 kb/s. Complétait g721, mais est également obsolète et remplacé par g.726 avec débit 24 ou 40 kb/s
- g.726
ITU Codage ADPCM avec compression et pertes, 3, 4 ou 5 bits, mono, échantillonnage 8000 Hz, débit 24, 32 ou 40 kb/s. Remplace g.721 et g.723
- gsm 6.10
Initialement, deux codecs ont été utilisés, baptisés Half Rate (5,6 kbit/s) et Full Rate (13 kbit/s). Il s'agit d'un système basé sur le codage prédictif linéaire (LPC).
GSM a été amélioré en 1997, avec l'Enhanced Full Rate (EFR) codec, un codec à 12,2 kbit/s qui est un codec Full Rate.
Enfin, avec le développement de l'UMTS, l'EFR a été remaniée avec un codec à taux variable, appelé codec AMR-Narrowband.
Il est utilisé dans les téléphones mobiles.
- AAC (Advanced Audio Coding)
Devrait devenir le successeur du MP3. Généralement, AAC délivre une meilleure qualité de son que MP3, pour un même débit, particulièrement en-dessous de 192 kb/s.
AAC est le format par défaut de iPhone, iPod, iTunes (Apple), ainsi que le format utilisé pour iTunes Store audio (avec une extension relative à un DRM (Digital Rights Management) propriétaire.
AAC est également le format audio standard pour la PlayStation 3 de Sony et pour le standard vidéo MPEG-4. HE-AAC fait partie des standards des radios digitales telles que DAB+ et Digital Radio Mondiale.
Voir, plus bas, la description de MPEG-2 AAC, MPEG-4 AAC et HE-AAC.
Fichiers .aac. et divers conteneurs .m4a, .mp4
- AC3 (Audio Coding 3, Dolby Digital).
Utilise un modèle psycho-acoustique et la transformée de Fourier, max 6canaux
DVD et fichiers .ac3,
- ALE ou ALAC (Apple Lossless Encoder ou Apple Lossless Audio Codec)
propriétaire et fermé, encodage sans pertes, utilisant un codage prédictif linéaire (LPC), avec codage Golomb-Rice de la différence.
Supporte les formats : 44,1/16, 44,1/24, 48/16, 48/24 (kHz/bits).
Cet encodage est logé dans un fichier conteneur .m4a (MPEG-4), .m4b ou .m4p
- ALS (MPEG-4 Audio Lossless Coding)
propriétaire, encodage sans pertes, utilisant un codage prédictif linéaire (LPC), avec codage Golomb-Rice ou un codage Shannon-Fano (également appelé Block Gilbert Moore Coding BGMC) de la différence. Plusieurs variantes de compression sont possibles.
Supporte les formats d'entrée PCM jusqu'à 32 bits et le 32-bit IEEE floating point. Toutes fréquences d'échantillonnage. Multicanaux. Permet le Streaming. Permet le marquage.
Cet encodage est souvent logé dans un fichier conteneur, avec de la vidéo, le .mp4
- ATRAC (ATRAC Advanced Lossless de Sony).
Utilise un flux compressé avec pertes (ATRAC3), complété, dans le même fichier, par un flux de correction, permettant de restituer le son original.
Max 8 canaux (7.1) ou 16 (avec base ATRAC3+)
Fichiers .atrac, .atrac3, .aa3, .at3, .atp(avec DRM), .oma, .omg (avec DRM). Il subsiste un grand flou entre extensions/versions de ATRAC
- FLAC (Free Lossless Audio Codec)
libre et ouvert, encodage sans pertes, souvent logé dans un conteneur .ogg.
Supporte les formats d'entrée avec virgule fixe : 4 à 32 bits, échantillonnage 1 Hz à 1,048,570 Hz, 1 à 8 canaux.
Il utilise un codage prédictif linéaire (LPC), avec codage Rice de la différence.
- MAC (Monkey's Audio Codec)
propriétaire, compression sans pertes, avec support des tags. 5 modes de compression (-c1000, -c2000, -c3000, -c4000, -c5000), de plus en plus performants, mais de plus en plus lents. Utilise la prédiction linéaire et la similitude entre canaux. 2 canaux.
Fichiers .ape, .apl (meta-data)
- MPEG (Moving Picture Experts Group)
Ce groupe de travail de ISO/IEC est chargé du développement de standards d'encodage vidéo et audio. On y trouve notamment :
- MPEG-1 (Standard MPEG 1ère génération)
Premier standard de compression audio et vidéo du groupe. Utilisé par la suite pour les Vidéo CD.
C'est la partie 3 qui concerne la compression audio. Elle comprend 3 encodages différents (layers ou couches), de plus en plus complexes et performants.
Les codages assurent une compatibilité descendante (le décodeur layer 3 peut décoder du layer 2 et 1).
La base est commune et prend en compte les particularités de l'oreille : sa sensibilité varie en fonction de la fréquence du son et les sons de faible puissance peuvent être masqués par un son plus fort. Cette prise en compte se fait à l'aide d'un modèle psychoacoustique. Il s'agit d'une compression avec pertes, en éliminant des composantes peu audibles par l'oreille humaine.
Cela se traduit par un découpage de la bande de fréquences audibles en sous-bandes, à l'aide de filtres (sub-band coding). Chaque sous-bande est traitée d'une façon spécifique, en fonction de la sensibilité de l'oreille.
- MP1 (MPEG-1 Audio Layer I)
c'est un codage assez simple (32 sous-bandes) qui est utilisé. Le modèle psychoacoustique comprend 512 points FFT. La quantification se fait sur 6 bits. Il est suivi par un codage Huffman. Il réduit sensiblement le volume, compression 4:1, avec un débit de 384 kb/s
MP1 est uniquement utilisé par Philips pour les "Digital Compact cassette"
- MP2 (MPEG-1 Audio Layer II)
Il utilise également un codage en 32 sous-bandes. Son modèle psychoacoustique comprend 1024 points. La quantification se fait également sur 6 bits, mais le processus est plus complexe. Il supporte des taux d'échantillonage de 32, 44.1 et 48 kHz et des débits à partir de 32 jusqu'à 320 kb/s.
Débit et compression : 160 à 256 kb/s, compression 6:1 à 10:1. Il est encore utilisé pour la diffusion numérique de radios.
- MP3
MPEG-1 Audio Layer III : il permet des taux de compression encore plus importants. Il est adapté aux plus faibles débits grâce à la plus grande complexité de son codeur (avec notamment, outre la division en 32 sous-bandes principales, une subdivision supplémentaire pour chacune d’entre-elles en 18 sous-bandes soit au total 576) et en enregistrant les autres informations d'une manière plus efficace.
Débit et compression : 112 à 128 kbit/s, compression 12:1 à 14:1. Il est très utilisé pour la diffusion numérique de radios et de musique.
- MPEG-2
Standard MPEG 2ème génération. MPEG-2 définit les aspects compression de l’image et du son et les aspects du transport à travers des réseaux pour la télévision numérique par satellite, câble, réseau de télécommunications ou hertzien (TNT). Il y correspond le conteneur transmission : TS (Transport Stream). MPEG-2 définit également un conteneur pour les supports plus fiables, les DVD et SVCD : PS (Programm Stream).
C'est la partie 3 qui concerne la compression audio. Elle améliore le standard audio de MPEG-1 en offrant
- des débits plus faibles, avec des fréquences d’échantillonnage de 16 - 22,05 et 24 Khz et des débits de 8 à 256kb/s.
- la prise en compte de canaux supplémentaires. Avec MPEG‑2, on passe à des dispositifs de reproduction « surround » comprenant jusqu’à 5 ou 7 canaux audio. On y associe généralement un canal supplémentaire destiné à la seule reproduction des sons les plus graves (LFE pour Low Frequency Effect). Ces dispositifs sont appelés 5.1 ou 7.1, le chiffre 1 faisant référence à ce canal LFE.
MPEG-2 audio est une extension de MPEG-1 audio, tout en restant compatible, d’où la dénomination de MPEG-2 BC (pour Backward Compatible) qui est parfois employée. Un décodeur MPEG-1 décodera la partie stéréo de MPEG-2 et ignorera les données relatives à l’extension multicanaux. MPEG-2 audio n’apporte pas d’amélioration par rapport à MPEG-1 au niveau de la qualité de la restitution.
- MPEG-2 AAC (Advanced Audio Coding)
De nouvelles innovations sont apparues. Elles ne sont pas compatibles avec les versions précédentes. Elles ont pour nom AAC.
- multicanaux : jusqu’à 48 canaux en pleine résolution + 16 canaux en basse fréquence,
- des fréquences d’échantillonnage qui peuvent être comprises entre 8 et 96 Khz.
- des débits aussi bas que 8 Kb/s pour l’enregistrement monophonique de la parole, et jusqu'à 160 kb/s par canal pour des codages de haute qualité.
- performances accrues grâce à l’amélioration de l’efficacité de son codage (1024 filtres au lieu de 576), meilleur codage entropique, amélioration du codage stéréo,
- MPEG-4 (Standard MPEG 4ème génération)
Est conçu pour gérer le contenu de scènes comprenant un ou plusieurs objets audio-vidéo. Contrairement à MPEG-2 qui visait uniquement des usages liés à la télévision numérique (diffusion DVB et DVD), les usages de MPEG-4 englobent toutes les nouvelles applications multimédias comme le téléchargement et le streaming sur Internet, le multimédia sur mobile, la radio numérique, les jeux vidéo, la télévision et les supports haute définition.
Une page Wikipedia qui donne un tableau très complet du contenu du standard MPEG-4
.
C'est la partie 3 qui concerne la compression audio. elle spécifie notamment le format audio AAC, en complétant le format qui existait déjà avec les dernières versions de MPEG-2.
Une autre page qui donne une vision très complète de la partie audio de MPEG audio
.
MPEG-4 AAC
Il intègre certaines caractéristiques de MPEG-2 AAC en y ajoutant des fonctionnalités et des outils supplémentaires, notamment le PNS (Perceptual Noise Substitution) destiné à améliorer la qualité aux débits intermédiaires (32 kb/s) ou bien le Long Term Prediction (LTP), un outil pour la prédiction qui nécessite moins de puissance de calcul que pour MPEG-2 AAC, tout en offrant un résultat qualitatif comparable.
Aujourd’hui, le codage MPEG-4 AAC permet la restitution d’un signal stéréo avec un débit compris entre 96 et 128 kb/s pour une qualité sensiblement comparable avec celle du CD audio. Une restitution surround en 5.1 pourra être obtenue avec un débit de 256 Kb/s.
Deux nouvelles améliorations ont encore été apportées :
- MPEG-4 HE-AAC
SBR (Spectral Band Replication) reconstruit la bande spectrale complète à partir des fréquences basses (il y a une forte corrélation entre les basses et les hautes fréquences, dans un signal audio). Elle permet d’augmenter l’efficacité du traitement de 30 % par rapport au codage AAC seul. Pour une restitution surround en 5.1, elle permet d’obtenir une très bonne qualité avec un débit de 160 Kb/s. HE-AAC est la combinaison de AAC et SBR.
- MPEG-4 HE-AAC v2
Plus tard, la technologie PS (Parametric Stereo) vient encore compléter HE-AAC. La technologie de codage PS consiste à décrire et à coder le signal stéréophonique comme étant un signal monophonique auquel il suffit d’ajouter quelques données complémentaires contenant les informations spécifiques à l’effet stéréophonique.
- RealAudio Lossless (RealAudio 10). Les versions plus anciennes sont lossy.
Différents modes de compression (G728, AC3, ATRAC3, LC-AAC, HE-AAC ...), dont un mode Lossless
Max 6 canaux (5.1)
Fichier .ra
- SHN (Shorten)
propriétaire et ouvert pour un usage non commercial, (SoftSound Limited et etree.org) compression sans pertes, de qualité CD (44.1 kHz 16-bit stéréo PCM). Est peu utilisé. Je n'ai pas trouvé quel est l'algorithme de compression utilisé.
- Vorbis (Vorbis Audio codec)
libre et ouvert, Vorbis est un encodage audio, avec pertes, sous la houlette de Xiph.Org Foundation, destinée à remplacer le codage MP3 en version libre. Il doit être utilisé dans un fichier conteneur, habituellement .ogg et est communément nommé Ogg Vorbis.
Différentes qualités peuvent être obtenues (q1 à q10). Pour une qualité originale de CD audio, cela correspond à 45 à 500 kb/s
- WavPack Lossless.
Utilise une compression hybride : codage prédictif linéaire avec adaptation LMS (least-mean-square) avec codage Golomb de l'écart. Ceci produit deux fichiers, le premier est un signal compressé avec pertes, le second corrige ces pertes. Mono, stéréo et multi-canal.
Fichiers .wvc (correction) + .wv (lossy)
- WMA Lossless (Windows Media Audio). 4 codecs propriétaires, développés par Microsoft, dont un lossless. Utilise un encodage à débit variable (VBR). Jusqu'à 6 canaux.
Fichiers .wma (non différentié par rapport à .wma lossy)
- Musepack
Musepack est un format de compression audio qui privilégie la qualité. Il n'est pas sans pertes. Mais il est conçu pour la transparence, pour que vous ne puissiez pas entendre des différences entre le fichier original et le fichier de MPC beaucoup plus petit.
Il est basé sur les algorithmes MPEG 1 Layer 2 / (MP2).
Compressé, lossless, lossy
De ce fait, il devient nécessaire de compresser le signal digital, par des traitements mathématiques, afin de pouvoir réduire le débit binaire (bitrate).
En résumé, les différents codecs sont, ici, simplement énumérés, mais regroupés en 3 catégories : brut, sans pertes, avec pertes.
données non compressées, sans pertes
Ce codage est surtout utilisé lors d'acquisition brute de données audio. Les fichiers générés ont une taille très importante. Vous avez intérêt à compresser ensuite les données.
PCM, LPCM, PCM IEEE 754, DPCM
données compressées, sans pertes
La qualité du son est totalement conservée, mais les fichiers ont une taille nettement plus réduite.
ALAC (Apple Lossless Audio Codec), ATRAC/ALS (ATRAC Advanced Lossless de Sony), Monkey (Monkey's Audio APE), FLAC (Free Lossless Audio Codec), RealAudio Lossless (RealAudio 10), SHN (Shorten), WavPack Lossless, WMA Lossless (Windows Media Audio).
données compressées avec pertes
Se distingue par une taille des fichiers nettement plus faible, une partie des informations originales est perdue. Cependant, notre oreille ne perçoit généralement pas la différence. Certains modes de compression sont très performants et les pertes sont négligeables.
AAC (Advanced Audio Coding), AC3 (Audio Coding 3, Dolby Digital), ADPCM (Adaptive Differential Pulse Code Modulation), alaw, mulaw (ITU-T G.711), ATRAC (Adaptive Transform Acoustic Coding de Sony, version lossy), MP3 (MPEG-1/2 Audio Layer 3) et autres MPEG plus anciens, RealAudio lossy, Vorbis (Vorbis Audio codec), WavPack, WMA
Les types de fichiers audio
Le son ainsi codé (on parle de codec) est stocké dans un fichier et le type de fichier est généralement défini par son extension.
Il convient de bien distinguer le contenu du contenant.
En multimédia, il y a les données (flux audio et flux vidéo), codées selon un certain codec, et il y a les fichiers, organisés selon un certain format (le contenant).
Ce qui complique encore la compréhension, c'est qu'il existe des fichiers conteneurs (reconnaissables par leur extension), mais qui peuvent renfermer du son codé selon différents codecs.
La page qui traite des formats : 