AccueilPsychoacoustique & Perception sonoreMasquage psychoacoustique

👂 Masquage psychoacoustique

Un son fort relève le seuil d'audition pour les fréquences voisines, dissimulant les sons plus faibles sous une courbe de masquage — le principe exact exploité par la compression MP3 pour éliminer les données inaudibles.

Psychoacoustique & Perception sonore2DModéré60 IPS
psychoacoustic-masking ↗ Ouvrir en autonome

Comment ça marche

Lorsqu'un ton masqueur à la fréquence f_m et au niveau L_m est joué, il relève le seuil d'audition effectif dans une région autour de f_m sur la carte fréquentielle de la cochlée. Cette région est mieux décrite sur l'échelle de Bark, qui redimensionne la fréquence de sorte que chaque unité (1 Bark) corresponde à peu près à une largeur de bande critique du banc de filtres auditifs. Le seuil relevé — la courbe de masquage — est abrupt du côté des basses fréquences et bien plus doux du côté des hautes fréquences, si bien que les sons graves masquent vers le haut plus efficacement que les sons aigus ne masquent vers le bas (l'asymétrie du masquage).

Un ton sonde à la fréquence f_p et au niveau L_p n'est prédit audible que si L_p dépasse le seuil masqué à f_p : le plus élevé entre le seuil normal d'audition silencieuse et la courbe d'étalement du masqueur évaluée à la distance en Bark Δz entre f_p et f_m. Cette simulation implémente une fonction d'étalement linéaire par morceaux simplifiée basée sur le modèle utilisé dans les premiers codages audio perceptuels MPEG — un substitut utile et honnêtement approximatif de la forme réelle, lissée, du filtre auditif mesurée dans les laboratoires de psychoacoustique.

Échelle de Bark : z(f) = 13·atan(0.00076f) + 3.5·atan((f/7500)²)
Seuil silencieux (Terhardt 1979) : T_q(f) = 3.64(f/1000)^-0.8 − 6.5·e^(−0.6(f/1000−3.3)²) + 0.001(f/1000)^4 dB SPL
Fonction d'étalement SF(Δz,L_m), Δz = z(f_p) − z(f_m) :
−3≤Δz<−1: 17Δz − 0.4L_m + 11
−1≤Δz<0: (0.4L_m+6)Δz
0≤Δz<1: −17Δz
1≤Δz≤8: (0.15L_m−17)Δz − 0.15L_m
Seuil masqué : T_m(f_p) = max(T_q(f_p), L_m + SF(Δz,L_m))
Largeur de bande critique (Zwicker 1961) : CB(f) = 25 + 75·(1+1.4(f/1000)²)^0.69 Hz

Questions fréquentes

Qu'est-ce que le masquage psychoacoustique ?

Le masquage psychoacoustique est le phénomène par lequel un son plus fort (le masqueur) relève le seuil d'audition effectif pour d'autres sons plus faibles (la sonde) proches en fréquence et dans le temps. Si le niveau de la sonde est inférieur à ce seuil relevé, elle devient inaudible alors qu'elle serait parfaitement audible dans le silence.

Pourquoi le masquage est-il asymétrique — les sons graves masquent-ils davantage les aigus que l'inverse ?

Oui. La courbe de masquage a une pente basse fréquence abrupte (environ -27 dB par Bark en dessous du masqueur) et une pente haute fréquence beaucoup plus douce. Cela signifie qu'un masqueur grave se propage vers le haut et masque les fréquences plus élevées plus efficacement qu'un masqueur aigu ne masque les fréquences plus basses, une propriété appelée asymétrie du masquage ou propagation ascendante du masquage.

Comment la compression MP3 et AAC exploite-t-elle le masquage ?

Les codecs audio perceptuels calculent un seuil de masquage à travers le spectre pour chaque court bloc audio, puis allouent moins de bits de quantification (voire aucun) aux composantes de fréquence situées sous ce seuil, puisqu'un auditeur ne pourrait de toute façon pas entendre le bruit de quantification ajouté à cet endroit. Cela permet au codec d'éliminer ou d'encoder grossièrement les informations inaudibles, réduisant la taille du fichier avec une perte de qualité perçue minimale.

Qu'est-ce que le masquage temporel (pré-masquage et post-masquage) ?

Le masquage temporel est l'équivalent dans le domaine temporel du masquage simultané. Un son fort peut masquer un son plus faible qui le suit pendant des dizaines à des centaines de millisecondes (post-masquage, ou masquage vers l'avant) et, plus surprenant encore, peut même masquer un son plus faible qui le précède de quelques millisecondes (pré-masquage, ou masquage vers l'arrière) car le système auditif a besoin de temps pour traiter les attaques fortes. Cette simulation se concentre uniquement sur le masquage simultané (dans le domaine fréquentiel).

Pourquoi les bandes critiques et l'échelle de Bark comptent-elles pour le masquage ?

La cochlée se comporte comme une série de filtres passe-bande superposés appelés bandes critiques ; les sons au sein d'une même bande critique interagissent et se masquent bien plus fortement que des sons situés dans des bandes différentes. L'échelle de Bark (24 bandes couvrant la plage audible) redimensionne la fréquence afin que chaque pas unitaire corresponde à peu près à une largeur de bande critique, ce qui explique pourquoi les courbes de masquage sont tracées et calculées sur un axe en Bark plutôt que sur un axe linéaire en Hz.

Pourquoi augmenter le niveau du masqueur élargit-il la plage de fréquences qu'il masque ?

La hauteur de la courbe de masquage évolue directement avec le niveau du masqueur, et sa pente haute fréquence devient également plus douce à mesure que le niveau du masqueur augmente ; ainsi un masqueur plus fort non seulement relève davantage le seuil, mais étend ce seuil relevé sur une plage de fréquences plus large, en particulier vers le haut du spectre.

Pourquoi un casque peut-il révéler des sons que des enceintes dissimulent, ou l'inverse ?

Les différents systèmes de lecture et les différentes pièces modifient les niveaux relatifs et l'équilibre spectral des sons simultanés. Si un changement de matériel modifie le niveau d'un masqueur par rapport à une sonde, un son situé sous le seuil masqué sur un système peut le dépasser sur un autre, rendant soudainement audibles des détails auparavant masqués.

Pourquoi le masquage compte-t-il pour les tests auditifs et l'audiologie ?

L'audiométrie tonale clinique doit présenter un son test à une oreille tout en masquant parfois l'autre oreille avec du bruit, afin d'empêcher cette dernière d'« entendre en croisé » le son par conduction osseuse et de fausser le seuil mesuré. Les audiologistes utilisent des niveaux de bruit de masquage calibrés dérivés des mêmes principes de masquage modélisés dans cette simulation.

Quelle est la fonction d'étalement utilisée dans cette simulation ?

Cette simulation utilise une fonction d'étalement linéaire par morceaux simplifiée sur l'échelle de Bark, basée sur le modèle classique employé dans les premiers codages audio perceptuels MPEG (d'après Schroeder, Atal et Hall). Elle approche la forme de la courbe de masquage avec des pentes différentes en dessous et au-dessus de la fréquence du masqueur, et constitue une approximation de la forme réelle du filtre auditif plutôt qu'une mesure physiologique exacte.

À propos de cette simulation

Ce simulateur trace la courbe d'étalement d'un ton masqueur sur un graphique de niveau de pression sonore à l'échelle de Bark et vérifie si un second ton, plus faible, dépasse le seuil masqué qui en résulte. Faites glisser la fréquence et le niveau du masqueur pour remodeler la courbe, déplacez la sonde vers n'importe quelle fréquence et niveau, puis appuyez sur Lecture pour entendre réellement — grâce à de vrais oscillateurs Web Audio — si la sonde est enfouie sous le masqueur ou se situe clairement au-dessus.

🔬 Ce que ça montre

Un graphique en direct du niveau de pression sonore en fonction de la fréquence combinant le seuil normal d'audition silencieuse avec la courbe d'étalement asymétrique d'un masqueur, plus un marqueur de ton sonde qui devient vert (audible) ou rouge (masqué) selon que son niveau franchit maskedThresholdAt() à sa propre fréquence.

🎮 Comment l'utiliser

Réglez la fréquence f_m et le niveau L_m du masqueur, puis déplacez la fréquence f_p et le niveau L_p de la sonde pour explorer la courbe de masquage. Appuyez sur Lecture pour entendre les deux ensemble via des oscillateurs Web Audio. P met en pause l'animation du canevas, R réinitialise tous les curseurs.

💡 Le saviez-vous ?

Comme la pente haute fréquence de la courbe de masquage est bien plus douce que sa pente basse fréquence, un masqueur riche en graves peut dissimuler une bande bien plus large de détails aigus qu'un masqueur aigu ne peut dissimuler de graves — cette asymétrie est l'une des raisons pour lesquelles les encodeurs MP3 dépensent des bits supplémentaires pour protéger les basses fréquences.

Questions fréquentes

Pourquoi rapprocher f_p de f_m en distance de Bark fait-il basculer le statut de Masqué à Audible ?

dz = bark(fp) − bark(fm) tend vers zéro à mesure que f_p se rapproche de f_m, et spreadingFunction(dz, Lm) est maximale (la moins négative) près de dz = 0, donc maskedThresholdAt() culmine juste autour du masqueur — la sonde doit franchir ce pic, ce qui explique pourquoi de faibles distances en Bark rendent le masquage le plus fort.

Pourquoi augmenter L_m relève-t-il le seuil masqué même à de grandes séparations de fréquence ?

maskedThresholdAt() renvoie Math.max(quietThreshold(f), Lm + spreadingFunction(dz, Lm)), et la fonction par morceaux spreadingFunction() elle-même dépend de Lm à travers des termes comme (0.4·Lm+6)·dz et (0.15·Lm−17)·dz, donc un masqueur plus fort part à la fois d'une base Lm plus élevée et obtient une pente plus douce (moins négative), poussant le seuil vers le haut sur un intervalle de dz plus large.

Pourquoi la courbe de masquage tracée est-elle plus abrupte à gauche de f_m qu'à droite ?

Les branches par morceaux de spreadingFunction() utilisent des pentes très différentes en dessous de zéro (17·dz et (0.4Lm+6)·dz pour dz négatif, c'est-à-dire en dessous du masqueur) par rapport au-dessus de zéro (−17·dz et (0.15Lm−17)·dz pour dz positif), ce qui encode directement le constat réel de l'asymétrie du masquage : la pente basse fréquence de la courbe chute bien plus abruptement que la pente haute fréquence.

Pourquoi criticalBandwidthHz() renvoie-t-elle un nombre bien plus grand à 4000 Hz qu'à 200 Hz ?

criticalBandwidthHz(f) implémente la formule de Zwicker 25 + 75·(1+1.4·(f/1000)²)^0.69, dont le terme (f/1000)² croît de façon quadratique, si bien que les bandes critiques s'élargissent nettement aux fréquences centrales plus élevées — c'est pourquoi l'échelle de Bark comprime les hautes fréquences par rapport aux Hz, regroupant de nombreux kHz dans chaque unité Bark au-delà de quelques kHz.

Pourquoi abaisser L_p jusqu'à 0 dB ne fait-il jamais afficher autre chose que « Masqué » près du masqueur ?

maskedThresholdAt() renvoie toujours au moins quietThreshold(f_p) même lorsque la contribution d'étalement du masqueur est négative, donc le statut ne peut afficher « Audible » que lorsque L_p dépasse le plus élevé du seuil silencieux ou de la courbe du masqueur — abaisser L_p ne fait qu'agrandir l'écart avec ce plancher, pas abaisser le plancher lui-même.

⚙ Sous le capot

Un son fort relève le seuil d'audition pour les fréquences voisines, dissimulant les sons plus faibles sous une courbe de masquage — le principe exact exploité par la compression MP3 pour éliminer les données inaudibles.

auditionpsychoacoustiquecompression audioMP3perception

2D · HTML5 Canvas 2D · 60 IPS cible · fonctionne entièrement côté client, sans installation

Qu'avez-vous trouvé ?

Ajouter des étapes de reproduction (facultatif)