Extrait de l'émission CPU release Ex0147 : Codecs du son.
Une fois que le son d'origine est passé par de premiers traitements pour écarter le signal le moins utile, entre réellement en action l'algorithme de compression, lequel va faire des approximations par fréquences proches. Les travaux mathématiques de Joseph Fourier permettent de caractériser
un signal, c'est-à-dire de faire une approximation d'un ensemble de données, que cela soit sur des mesures de températures comme il le fait à la fin du XVIIIème siècle, ou de nos jours sur des images ou du son. D'une courbe sur un axe, on peut en faire une approximation par des sinusoïdes, et reconstituer une forme approchante de cette courbe.
Appliquées au son, ces approximations suppriment certains détails, qui sont en général ignorés par le cerveau ou trop discrets pour être discernables par l'oreille.
La compression avec perte est nettement plus efficace en critère de réduction de taille, réduisant le débit nécessaire d'au moins un facteur 10 jusqu'à 40, mais elle se paie avec une approximation. Approximation qui devient de moins en moins négligeable quand on demande une compression de débit plus importante.
(Effet que nous avons ici volontairement exagéré).
L'algorithme le plus utilisé dans le domaine audio depuis les années 1990s est la MDCT, la transformée en cosinus discrète modifiée, qui se rapproche en fonctionnement des transformées de Fourier, et qu'on retrouve aussi dans la compression image JPEG et de vidéo MPEG.
Bon, y'a plusieurs algos sur ces concepts plus ou moins proches, j'ai juste pris une image très approximative pour vous donner une idée.
L'opération de transformée est délicate car il s'agit de ne pas trop modifier la tessiture, c'est à dire le timbre, la forme d'onde d'un instrument.
L'algo va tenter de repérer des répétitions. Par exemple des fréquences harmoniques calées par rapport à une fréquence principale, ou des échos.
En gros, on prend une petite portion de signal, la partie discrète
(ici ma syllabe a
dans signal
), et le but est d'établir comment le décomposer en ondes sinusoïdales primaires (la primaire de mon exemple est à 715 Hz). Donc en multiples, en sous-multiples, de différentes amplitudes et de phase par rapport à une onde sinusoïdale principale (les sous-multiples de mon exemple sont à 1 577 Hz, 575 Hz, 145 Hz, 282 Hz, 2 586 Hz, 422 Hz par ordre d'intensité).
Oui, je sais, j'explique très mal, et je suis très loin d'avoir le bagage mathématique pour les maîtriser, alors si vous savez mieux l'expliquer, n'hésitez pas à ↓ y laisser des commentaires ↓.
La plupart du temps, les transformées de Fourier marchent bien, elle font le job ; mais sur certaines formes d'ondes pures
de son, comme une onde rectangulaire, la décomposition/recomposition n'est vraiment pas parfaite, et ne peut mathématiquement être parfaite. Ben oui, reproduire les angles droits d'un rectangle qu'avec des ondes sinusoïdales n'est pas parfaitement faisable, donc le son a des espèces de rebonds, de vaguelettes quand on regarde le signal produit de très très près (et cette animation l'explique très bien).
Texte : Da Scritch
Illustration : capture de l'animation Fourier transform time and frequency domains par Lucas Vieira, domaine public