Comment Fourier fait taire les vuvuzelas
Innovation technique sur Canal + :
A partir d’aujourd’hui, Canal+ sera la seule chaîne française en mesure de proposer l’ensemble des matchs de la coupe du Monde sans le fond sonore des vuvuzelas. (…). Un nouveau procédé technique exclusif (…) qui permet de gommer certaines fréquences sonores perturbantes sans pour autant altérer l’ambiance générale du stade. Canal+ sera ainsi le seul diffuseur en France à retransmettre l’ensemble des matchs de la coupe du monde dans des conditions d’écoute optimum.
Procédé technique exclusif, vraiment ? Tentative d’explication du monde merveilleux du traitement du signal via le pays magique des espaces vectoriels. (et pour lire cet article en appréciant le doux son des vuvuzela, cliquez ).
Comment encoder une position
Commençons par nous replonger dans vos cours de géométrie au collège. Vous avez tous appris à vous repérer dans le plan : pour un point donné, on définit une position le long de l’axe x (qu’on appelle “abscisse”) et une position le long de l’axe y (qu’on appelle “ordonnée”). Techniquement, vous venez de réaliser un encodage très simple : vous avez encodé la position de chaque point grâce à deux nombres (qu’on appelle coordonnées). Deux directions particulières, de “base”, ont été choisies pour réaliser cet encodage : les directions horizontales et verticales. On peut montrer mathématiquement que :
- tout “encodage” de la position d’un point dans le plan doit reposer sur la définition de deux directions de bases non parallèles
- qu’une fois ces directions définies et une fois un élément de référence de longueur 1 défini, les coordonnées de chaque point dans ces directions de bases sont uniques
Mathématiquement, le plan est ce qu’on appelle un “espace vectoriel”. Comme il y a deux directions de bases, on dit qu’il est de dimension 2. Une position donnée est un couple de coordonnées, qu’on peut appeler aussi “vecteur”. Notez bien que le choix des directions de bases horizontales et verticales impose les valeurs des coordonnées, et donc la façon dont la position est encodée.
Comment encoder une image
Encoder une position, on l’a vu, est assez facile. Mais c’est très intéressant de voir que les mêmes notions d’espaces vectoriels, de “direction de base”, de coordonnées, etc… peuvent être appliquées à à peu près n’importe quel type de signal.
Examinons par exemple l’image noir et blanc ci-dessus. Cette image peut-être assimilée à un vecteur dans le sens suivant :
- les directions de base sont les différents pixels
- les coordonnées sont les niveaux de gris de chaque pixel (un entier compris entre 1 et 256)
On peut s’en convaincre en regardant un détail de l’image (ci-dessous)
On voit bien que chaque pixel correspond à un seul niveau de gris. On peut donc dire que chacun des niveaux de gris correspond à la coordonnée pour cette image dans la direction de base définie par ce pixel. Notez que l’espace vectoriel ainsi défini est gigantesque : il a autant de dimensions que de nombres de pixels (ici, plus de 100 000 dimensions).
On peut généraliser cette notion aux images couleurs en multipliant le nombre de directions de base par 3 : au lieu d’encoder pour chaque pixel une coordonnée correspondant à un niveau de gris, on associe à chaque pixel trois nombres, correspondant respectivement au rouge (R), au vert (G comme green) et au bleu (B). Voici par exemple l’image couleur originale :
Et voici les images en niveau de gris correspondant dans l’ordre au rouge, au vert et au bleu :
Une fois qu’on a défini ces différentes coordonnées (correspondant à des niveaux de gris), il est possible de faire des tas de transformations amusantes sur un vecteur (i.e. une image) donné. Une catégorie de transformations intéressantes est ce qu’on appelle les transformations linéaires. Pour faire simple, nous ne considérerons qu’un seul type de telles transformations : ce qu’on appelle des “projections”. Concrètement, cela signifiera ici qu’on remplacera les coordonnées de l’image pour certains pixels par 0 .
Par exemple voilà l’image précédente si l’on met pour chaque pixel les coordonnées correspondant au vert à zéro :
Retenons donc les choses suivantes :
- un “signal” (une position ou une image) peut se décomposer sur des directions de bases (horizontal/vertical ou pixels donnés) définissant ainsi un ensemble de coordonnées indépendantes
- il est possible de faire ensuite des transformations sur ces coordonnées, par exemple, mettre un ensemble de coordonnées à 0
Nous sommes maintenant parés pour supprimer nos vuvuzelas.
Comment encoder un son
Fondamentalement, le son est une onde. Lorsqu’une onde sonore “passe” en un point (par exemple votre oreille), elle exerce une pression locale variable en fonction du temps. Bref, un son peut être assimilé, du point de vue de l’auditeur à une variation de la pression au cours du temps, i.e. simplement une fonction (au sens mathématique du terme) variant avec le temps.
L’idée pour encoder le son est fondamentalement simple : il s’agit de décomposer le signal sonore sur un ensemble de directions de base indépendantes (comme les directions horizontales ou verticales pour une position, ou comme les pixels pour une image). La technique la plus classiquement utilisée porte le nom de transformation de Fourier, inventée par Joseph Fourier en 1822. Le choix de la transformée de Fourier est de prendre comme directions de base un ensemble (infini) de fonctions trigonométriques, par exemple de la forme sin(f*t) ou cos(f*t) où t est le temps et f un nombre qui correspond à ce qu’on appelle une fréquence d’oscillation. Les coordonnées d’une fonction dans ces directions de base forment ce qu’on appelle les “coefficients de Fourier” : ce sont là encore des nombres qui expriment le “poids” de chaque fonction sinusoidale (i.e. de chaque fréquence) dans le signal sonore.
L’image ci-dessus représente un signal temporel en haut (en l’occurence ici une mesure d’un sismographe, tirée de ce site ), et en bas une représentation de sa transformation de Fourier. L’axe horizontal de la figure du haut est le temps, celui de la figure du bas est la fréquence : en fait, pour chaque fréquence, on a reporté les coordonnées du signal du haut pour la fréquence donnée. Ainsi, si un signal est une fonction du temps, sa transformée de Fourier est une fonction de la fréquence.
Ce qui frappe immédiatement dans cet exemple est que le signal en haut a l’air assez aléatoire, mais sa transformation de Fourier a au contraire de très grands pics. Ces pics ont une signification physique : s’il y a un très grand pic, cela signifie que dans le signal de départ, il y a une très forte composante correspondant à cette fréquence. Bref, la transformée de Fourier permet de mettre en évidence facilement des périodicités “cachées” dans un signal, qui correspondent aux fréquences dont les pics sont élevés.
Deux points à noter à ce stade :
- la plupart des sons “complexes” – voix, notes de musiques, etc…- sont générés par des vibrations ou oscillations mécaniques (cordes vocales, vibration de la vuvuzela …). Ces vibrations sont transmises à l’air et se propagent jusque nos oreilles, faisant ainsi osciller rapidement nos récepteurs auditifs. Du coup, la transformée de Fourier est assez naturelle pour analyser ces sons complexes, car elle va permettre d’isoler facilement les fréquences des vibrations mécaniques ayant généré le son. L’unité de fréquence est le Hz, qui est l’inverse d’un temps. Un son à environ 235 Hz (la fréquence du son des vuvuzelas) signifie que la vibration mécanique générant le son a lieu 235 fois par seconde.
- et l’évolution est bien faite car notre cerveau, notre oreille font spontanément des transformées de Fourier tous les jours. La notion de “fréquence” correspond en effet à la notion de “hauteur” d’un son : les sons aigus ont une haute fréquence, les sons graves ont une basse fréquence. Une façon de voir que vous faites une transformée de Fourier (i.e. décomposez les sons en fréquences différentes) est par exemple d’écouter un accord de musique (e.g. do-mi-sol), qui correspond à un son complexe superposition de trois sons à 3 fréquences différences. Vous ne percevez pas une bouillie ou une moyenne des trois notes, mais bel et bien les trois notes “en même temps” [1]
Maintenant cela devient très simple de supprimer les vuvuzelas : la transformée de Fourier nous dit que les sons d’ambiance de stades sont une somme des sinusoides aux fréquences des sons “intéressants” et aux fréquences des vuvuzelas. Le but du jeu est alors de se débarrasser des sinusoides aux fréquences des vuvuzelas; comme dans l’exemple des images ci-dessus où on a mis à 0 la couleur verte de certains pixels, pour supprimer les vuvuzelas, il suffit de mettre à 0 les directions de base correspondant à leur son.
La vidéo ci-dessus montre comment faire cela avec un logiciel de traitement de signal (voir ce site).
Concrètement, on prend la transformée de Fourier du son (on sait faire ça très rapidement, en temps réel). On connaît a priori les fréquences des vuvuzelas : selon korben fréquence de base à environ 233 Hz, puis quelques harmoniques – fréquences moins importants- à 466, 932 et 1864 Hz (notez que ce sont des multiples de la fréquence de base, mais c’est une autre histoire). Il suffit de mettre à 0 ces coordonnées dans le signal transformé. On voit bien que notre ingénieur du son ci-dessus réduit considérablement une fonction, qui s’appelle le gain (cette action correspond à une transformation linéaire similaire à ce qu’on a décrit plus haut dans le cas des images), et de faire ce qu’on appelle la transformée de Fourier inverse pour, miracle, générer un son sans vuvuzela !
[1] Notons qu’en vieillissant, on perçoit de moins en moins bien les hautes fréquences, ce qui a permis à quelques esprits tordus de fabriquer des “repousseurs” de jeunes, j’en avais parlé lors de la dernière coupe du monde !.
Billets similaires:
- Mais au fait, comment ça marche une sonde Pitot ? Il semble donc que des sondes Pitot défectueuses soient peut-être à l’origine du crash vu vol AF 447. Sondes Pitot, sondes Pitot … mais qu’est-ce donc ? Petit rattrapage pour ceux qui n’ont jamais été en TD de mécanique des fluides avec moi. Quand j’étais petit, lors des longs trajets en voiture, j’adorais entrouvrir la [...]...
- Comment gagner à “Questions pour Un Champion” Vous le savez peut-être, la fameuse “cagnotte” du jeu télévisé “Questions pour un champion” (QPUC) vient de tomber. Il se trouve que la championne en question, Sophie, est une bonne copine, qui a agi en très bonne scientifique pour remporter la victoire. Retour sur THE stratégie gagnante. Prendre ou ne pas prendre la main, l’un des [...]...
- McGyver fait des radios Des physiciens américains viennent de montrer comment transformer un simple rouleau de scotch … en source de rayons X ! Le stockage et la conversion d’énergie mécanique en lumière est l’un des phénomènes les plus fascinants de la physique. Vous connaissez peut-être la sonoluminescence : l’émission de lumière par implosion de bulles de gaz dans [...]...
Categorie(s): Foot, Physique, Sciences 18 commentaires »









June 22nd, 2010 at 20:11
[...] This post was mentioned on Twitter by rosselin, Olivier Leguay and Wandrille Vallet, Tom Roud. Tom Roud said: AutoRT [blog] tentative d'explication sur la technique mathématique derrière la suppression du son des vuvuzelas http://bit.ly/a4gSkz [...]
June 23rd, 2010 at 04:23
L’explication est limpide. Mais en écoutant la vidéo, je trouve qu’on entend toujours un peu les vuvuzelas après le traitement du signal, même si c’est beaucoup moins qu’avant. Je ne pense pas que ce soit à cause d’harmoniques supplémentaires – il me semble qu’on entend le “reste” du son des vuvuzelas à la même hauteur que précédemment. Donc j’imagine que c’est parce que les milliers de vuvuzelas ne sont pas parfaitement accordées entre elles. De fait, on a parfois l’impression d’une fluctuation de la hauteur du son des vuvuzelas, disons, à la louche, au quart de ton autour du si bémol. Donc, je pense que ca marcherait mieux en supprimant la bande de fréquence 230-236Hz et les harmoniques correspondantes. Tiens, je vais essayer sur GarageBand…
[Reply]
HollyDays Reply:
June 23rd, 2010 at 12:22
Il est également possible que cela soit dû à la présence résiduelle des fréquences multiples de la fréquence fondamentale des vuvzelas (~233 Hz)
En effet, l’oreille et le cerveau humains sont capables de reconstituer un son même lorsqu’il lui manque son harmonique fondamentale. Les études des chercheurs sur la perception auditive (IRCAM, CCRMA de Stanford, MIT, Bell Labs, …) ont montré que c’est typiquement ce qui se passe lorsqu’on écoute la radio sur un vieux poste de radio dont le haut-parleur est de mauvaise qualité : que les fréquences basses et moyennes soient coupées n’empêchent pas l’oreille de reconnaître un son de piano, de violon, de flûte, de trompette, …
[Reply]
June 23rd, 2010 at 09:43
@anne : En effet le monde n’est pas parfait et ce que tu propose “parait” mieux. Par contre si tu veux en effet supprimer les “harmoniques suivantes” cela te fait des bandes de plus en plus larges : si la première harmonique est supposée dans 230-236Hz alors la deuxième serait dans 460-472Hz, etc.
Et je ne suis pas convaincu (c’est à tester, je fais peu de son :p) qu’un filtre de ce genre ne crée pas des perturbations audiibles et plus gênantes que le vuvuzuela. Car une des très importantes hypothèse de ce genre de traitement est que dans la bande de fréquence considérée il n’y a pas grand chose a part les vuvuzuela. Ceci est bien sur faux (rien que le public doit être dans toute la transformée de Fourier) et ne reste une bonne hypothèse que dans le cas de petites zones fréquentielles coupées…
[Reply]
quentin Reply:
June 23rd, 2010 at 10:32
@adp
Je ne pense pas parce que l’audition fonctionne aussi de manière logarithmique, on entend la même différence de hauteur entre deux sons quand il y a le même rapport entre les fréquences (et non pas la même différence), donc si les plages sont de plus en plus grandes en terme de fréquence, elles ont toujours la même “taille” pour l’audition.
[Reply]
AdP Reply:
June 23rd, 2010 at 10:38
Info interressante, merci! Comme je disais, je ne connais pas très bien le son.
[Reply]
June 23rd, 2010 at 18:46
[...] This post was mentioned on Twitter by . said: [...]
June 23rd, 2010 at 18:50
“Notez que l’espace vectoriel ainsi défini est gigantesque : il a autant de dimensions que de nombres de pixels (ici, plus de 100 000 dimensions).”
Vous confondez taille de l’image et dimension de l’espace vectoriel. Pour une image en noire et blanc d’une taille donnee, le’space vectoriel qui la decrit sera de dimension 3 : 2 dimensions pour reperer le pixel sur l’image, une dimension pour l’information “niveau de gris”. En d’autres termes, chaque pixel est defini par le triplet (abscisse, ordonnée, niveau de gris).
[Reply]
Tom Roud Reply:
June 23rd, 2010 at 19:23
Non je ne crois pas; je fais comme MATLAB où une image est encodée par une matrice, de même taille que celle de l’image. Chacun des vecteurs de base correspond à un pixel. Une image 2×2 est un élément d’un espace vectoriel de dimension 4, le vecteur e_11 correspond par définition au pixel en haut à gauche, le vecteur e12 au pixel en haut à droite, etc…
Ex :
la matrice [1 1; 1 1] correspond à une image 2×2 toute blanche, la matrice [0.5 1;1 0.5] correspond à une diagonale grise sur une image 2×2 toute blanche.
[Reply]
June 23rd, 2010 at 20:08
Bravo! Mais le plus simple est encore de ne pas regarder les matchs
[Reply]
June 23rd, 2010 at 23:11
En fait vous avez raison tous les deux.
On peut voir une image comme une fonction f(x,y) à 2 variables de R^2 dans R, d’où une représentation dans R^3.
On peut aussi voir l’image comme une matrice de taille NxM, donc des coefficients dans l’espace R^(NxM)…
Pareil en 1D… Tu as une fonction f(x) de R dans R, sa représentation est dans un espace de dimension R^2, après tu peux représenter cette fonction (discrétisée) comme un vecteur de N coefficients et là l’espace de dimension devient R^N
Il n’est pas très bon de mélanger les maths continus et discrètes…
[Reply]
Tom Roud Reply:
June 23rd, 2010 at 23:28
En fait c’est plus une question “pratique” à mon avis. Je vois pas mal d’avantages à considérer une image comme une matrice; l’un d’eux est que si l’on a une convention sur l’ordre des pixels, on n’a pas besoin d’encoder leurs positions, ce qui fait gagner pas mal de place au stockage. Au niveau de la compression, c’est aussi assez intéressant : si on se met d’accord sur l’ordre des pixels, une image devient une liste (d’entiers en 256 couleurs), donc on peut facilement compresser des régularités. Je pense aussi qu’au niveau des diverses décompositions, il doit y avoir pas mal d’avantages.
[Reply]
June 24th, 2010 at 12:33
Ce traitement a un inconvénient: à 233 hz il y a une partie du spectre vocal humain qui est présent, on peut d’ailleurs l’entendre dans la vidéo même si c’est très léger et que ça gêne pas.
En réalité, si les TV étaient dotées d’égaliseur (fin là il faut qu’il soit super précis), on pourrait déjà pas mal réduire le bruit de ces petites bêtes.
Toutefois, j’ai analyser le spectre (winoscillo le fait très bien et gratuitement) de quelques vidéos youtube et celui qui voudrait supprimés les vuvuzelas de telles vidéos aurait un peu de mal car ça varie pas mal et comme le dit anne, il faudrait filtrer plus largement.
Article très intéressant!
[Reply]
June 24th, 2010 at 23:10
[...] tant mieux ! Car ici, vous trouverez ici une explication très didactique. Un peu longue peut-être, mais je vous invite à faire l’effort de tout lire. Pour ceux qui [...]
June 25th, 2010 at 16:06
Une contrib sur le sujet sur Matlab Central
http://www.mathworks.fr/matlabcentral/fileexchange/27912-vuvuzela-sound-denoising-algorithm
[Reply]
July 5th, 2010 at 16:44
J’apprécie vos articles, et je suis étonné que vous ayez utilisé cet affreux “encoder” au lieu du plus correct “coder” (comme dans “codage préfixe”, “codage de Huffman”, “roue codeuse”, etc.) qu’on utilisait jusqu’à ces dernières années, avant que ce jargon lié aux conversions de son (MP3) et de vidéo (DivX et compagnie) se répande.
[Reply]
Tom Roud Reply:
July 5th, 2010 at 16:51
Ah, j’ai bien peur qu’il ne s’agisse d’une déformation professionnelle (et de mon immersion linguistique) ! Cela dit, comme l’explique bien la page wikipedia :
http://fr.wikipedia.org/wiki/Encodage
encoder/encodage est en fait un néologisme informatique s’opposant à décoder/décodage.
Personnellement, j’utiliserais “coder” dans le sens “écrire du code”, là où “encoder” est vraiment convertir une information en un code prédéfini. Donc ce mot permet d’introduire une nuance appréciable.
[Reply]
OlivierJ Reply:
July 7th, 2010 at 18:01
Merci pour cette réponse détaillée.
Je suis justement dans le milieu informatique, j’ai une quarantaine d’années et j’ai vu apparaître ce jargon “encoder”/”encodage” avec l’apparition de la compression sonore et vidéo (comme je le disais). Je n’ai absolument rien contre l’anglais que j’aime bien parler, mais je suis un peu allergique au jargon et aux anglicismes.
Comme l’explique la page WP de “Codage” : « La transformation d’une source vidéo ou sonore en un format informatique déterminé. Coder en MP3, en AVI, etc. Dans ce cas, il ne s’agit en fait pas d’un codage, car il ne s’agit plus d’une opération mathématique bijective (réversible) ; malgré cela, l’expression encodage numérique est utilisée. »
J’utilise “coder” pour parler d’écriture de code (déformation d’informaticien), tout comme quand il s’agit de convertir en un code donné (code Morse, etc.), ce qui est le sens initial. Pour ce qui est des transformations audio ou vidéo je parle toujours de convertir (pourquoi dit-on “[en]coder en DivX”, ça m’a toujours dépassé).
[Reply]