Le monde vu par la fenêtre…

Non, ce n’est pas un billet tiré de “philosophie magazine” ou inspiré par une quelconque mouvance “mindfulness”, quoique… allez savoir !

Je reviens à nos moutons audioprothétiques, et là normalement vous allez vous dire que le rédacteur de ce billet est totalement obsédé par ce sujet de… dynamique vocale !

Oui, je vais encore aborder le sujet car il me semble important, et même crucial de connaître l’état de cette dynamique à l’entrée de l’aide auditive, et à sa sortie. Surtout à sa sortie : une aide auditive qui lisserait les contrastes temporels de la parole par une compression trop importante des “crêtes” ou une amplification exagérée des “vallées” en réduirait le contraste dynamique, réduisant du même coup les chances du malentendant appareillé d’extraire ces informations dans un bruit par nature souvent plus stationnaire que la parole.

Mais puisque l’on parle de “dynamique”, encore faut-il savoir de quoi on parle. Nous avons coutume de considérer que la parole a une dynamique de 30dB environ. C’est à dire que si l’on mesure son niveau par bandes de 1/3 d’octaves à long terme (ex : 1 minute), les crêtes se situent 12dB au-dessus de ce niveau à long terme, et les vallées 18dB en-dessous, environ.

Cette dynamique de 30dB n’est pas “plaquée” autour du LTASS, elle est le résultat d’une analyse statistique de la distribution des niveaux du signal. Dans le cas de la chaîne de mesure in-vivo, pendant toute la durée de la mesure, la chaîne de mesure “classe” les différents niveaux atteints, et va se retrouver avec une courbe de distribution suivant une loi normale (cas de l’ISTS), ou de densité autre (signaux non vocaux par exemple), et dont les niveaux se répartissent autour d’un niveau médian (= dépassé, ou non-atteint 50% du temps), et qui indique, par exemple,  que 10% du temps le signal  a atteint tel niveau, que 30% du temps il a dépassé tel niveau, etc.

C’est une donc ce que l’on appelle l’analyse percentile du signal. Je vous laisse imaginer le calcul processeur nécessaire pour faire cela “à la volée”, mais aussi en parallèle compiler et classer sur le long terme (ex : pendant 45 secondes).

Classer les différents niveaux va permette au final de définir la “dynamique” que nous avons l’habitude de visualiser entre le 30ème percentile (dépassé 70% du temps = les vallées) et le 99ème percentile (dépassé 1% du temps = les crêtes). Et on a coutume de dire que cette dynamique 30/99ème percentile est de 30dB.

Oui… mais pas tout à fait ! Ce calcul est totalement dépendant de la fenêtre temporelle d’analyse du signal. Si on voulait utiliser une analogie avec la photographie ce serait le temps d’ouverture de l’objectif de l’analyseur. En photo, plus longtemps vous “ouvrez”, plus vous faites entrer de photons sur le capteur. Si vous êtes en plein jour et que vous ouvrez très longtemps, votre photo sera “cramée”, c’est à dire blanche…

La chaîne de mesure fonctionne un peu comme un objectif : elle prendra une “photo” selon un temps d’ouverture, et le résultat de l’analyse percentile (et donc la dynamique du signal) sera très dépendant de nombreux facteurs. Parmi ceux ci, il y a la résolution temporelle de la fenêtre de la FFT, et cette dernière peut avoir une influence sur la résolution fréquentielle de la mesure (voir plus loin).

Pour faire savant, si un signal est échantillonné à 44100Hz (Fs) et que la FFT est réalisée avec un bloc de 1024 échantillons (c’est à dire N = 1024 échantillons temporels, correspondant à une taille mémoire imposée par le matériel), la résolution temporelle sera de N/Fs = 1024/44100=23ms, et la résolution fréquentielle sera de Fs/N = 44100/1024=43Hz. N est toujours une puissance de 2 dans les analyseurs physiques. Le principe de la FFT (Fast Fourier Transform) utilisée, entre autres, dans nos chaînes de mesure est donc de prendre ces 1024 échantillons temporels de 23ms et 43Hz de “large” qui vont aller remplir la mémoire de l’analyseur pour ensuite passer dans un algorithme de calcul FFT. Si on voulait avoir une résolution temporelle de 1 seconde, il faudrait remplir une mémoire adéquate avec 44100 échantillons (dans ce cas, le nombre N d’échantillons temporels serait égal à la fréquence d’échantillonnage Fs).

Dans nos chaînes de mesure, il va y avoir, comme dans tout analyseur matériel, plusieurs limitations. L’une est la taille de la mémoire (qui limite le nombre d’échantillons à analyser), l’autre est la vitesse de transmission du port USB qui limite la résolution temporelle de signaux pouvant transiter vers le PC à des blocs de 46ms (donc impossible de faire transiter des informations plus fines en temporel). Ce n’est pas forcément un problème, car l’analyse idéale, définie par la norme IEC 60118-15 (qui régit l’analyse des signaux de mesure in-vivo), souhaiterait que la mesure in-vivo soit réalisée avec une résolution temporelle de 125ms. Mais c’est, pour l’instant, techniquement difficile, car pour y arriver il faudrait, au choix :

  1. diminuer la fréquence d’échantillonnage du signal, et donc sa bande passante (voir la suite)…
  2. ou alors, si on voulait conserver une fréquence d’échantillonnage de 44100Hz afin de ne pas perdre de bande passante mais garder une résolution temporelle de 125ms (0,125sec), effectuer 0,125ms x 44100Hz = 5512,5  blocs temporels pour le calcul de la FFT, soit 5 fois plus qu’actuellement (en fait, ce serait 2 puissance 12 ou 2 puissance 13 blocs temporels pour être exact).

Tout est une question de moyens financiers que l’on veut mettre dans du matériel possédant des capacités aussi importantes… Notez quand même qu’à l’heure actuelle, un matériel distribué en France par la société AURITEC, le Verifit2 d’Audioscan, permet une résolution temporelle de 128ms avec une bande passante (in-vivo et coupleur) de 16kHz, donc 4096 blocs temporels (32000Hz*0,128ms) pour le calcul de la FFT. Il s’agit d’une chaîne autonome (non reliée en USB au PC), tournant sous Linux, avec processeurs dédiés.

Si on applique cette méthode d’analyse idéale (norme IEC 60118-15), donc avec fenêtre de 125ms (donc N=Fs x 0,125ms = 5512,5), pour un signal (ISTS) émis à 65dB SPL, on obtient :

ISTS_30_99_125ms_65dB SPL

En observant l’analyse ci dessus, on constate bien que la dynamique entre les percentiles 30/99 est d’environ 30dB à 3kHz,et d’environ 20dB à 400Hz.

Mais si on avait analysé le signal avec une fenêtre de résolution temporelle 1 seconde (N=44100 échantillons temporels), pour un ISTS toujours à 65dB SPL, on aurait eu :

ISTS_1s

La fenêtre d’analyse étant plus grande, et si on suppose que les zones faibles (comme les fortes) du signal sont très brèves, elles ont été “diluées” en quelque sorte avec les zones moyennes (entre les percentiles 50 et 65), plus représentées statistiquement. La dynamique a été divisée par 2 (env. 15dB à 3kHz). La parole peut être considérée comme un signal stationnaire… (Citation de Franck L. 😉 ).

Poussons le raisonnement à l’inverse, avec une fenêtre de résolution temporelle de 5ms (de l’ordre du phonème, avec N=220,5 écantillons temporels) :

ISTS_5ms

La dynamique du signal passe à 30dB à 400Hz, et environ 37dB à 3000Hz. Mais surtout, vous remarquerez la perte de résolution fréquentielle  dans les basses fréquences. C’est mathématique : la durée de la fenêtre temporelle doit être au moins 5 fois plus longue que la période du signal à analyser : donc ici pour 200Hz, fenêtre temporelle minimale = 5 x (1/200Hz) = 0,025 = 25ms. La fenêtre temporelle de 5ms n’est pas adaptée à l’analyse de signaux de 200Hz, et pour être exact, cette résolution temporelle ne permet même pas une analyse correcte de signaux inférieurs à 900Hz car leur période (= 1/fréq) est supérieure à la résolution temporelle de la fenêtre d’analyse… ce qui veut dire en clair que nous n’aurons jamais accès à des événements brefs (impulsionnels), dans les graves tout au moins avec les méthodes de type analyse FFT utilisées actuellement sur nos chaînes de mesure. Mais d’autres méthodes existent pour ces événements impulsionnels, et peut-être les verrons-nous dans de futurs modèles de chaînes de mesure…

AN : avec une résolution temporelle de 23ms sur une chaîne de mesure, la plus basse fréquence analysable correctement est de 5/0,023 = 217Hz. On comprend mieux pourquoi l’ISTS a été créé avec des voix de femmes et un fondamental laryngé de 200Hz, et pas des voix d’hommes avec un F0 à 125 ou 150Hz…

Et enfin, ce que font nos chaînes de mesure avec une résolution temporelle de 46ms (2 blocs de 23ms moyennés = 2 x 1024 points moyennés) :

ISTS_65dBSPL_46ms
Vous remarquerez que la dynamique percentile 30<–>percentile 99 est un peu plus importante que celle du signal analysé en 125ms. Tout est relatif donc dans ce genre de mesures et d’analyse de la dynamique du signal…

Le facteur temporel d’analyse, qui découle donc de la fenêtre FFT (1024 échantillons sur nos chaînes de mesure), a donc des répercussions sur la lecture des mesures. La dynamique de la parole (ou d’un autre signal) est tout à fait relative, en fonction des paramètres d’analyse, souvent dictés par le matériel. Les audioprothésistes (les fabricants de nos chaînes de mesures…) sont face à un dilemme :

  • nous donner accès à des événements très brefs et potentiellement agressifs pour le patient, en lecture de crêtes, mais en perdant de la résolution fréquentielle et en sachant que ce n’est pas possible en basses fréquences (avec les méthodes d’analyse actuelles)
  • nous donner accès à la meilleure résolution fréquentielle possible pour les réglages en perdant en résolution temporelle, et donc en risquant de ne pas avoir la lecture d’événements potentiellement agressifs…
  • … je résumerais donc ce dilemme avec une maxime de Pierre DAC : “Plus je pédale moins fort, moins j’avance plus vite” !

Il y a donc un compromis dans la mesure, pour l’usage en audioprothèse, et qui va être :

  • de ne pas descendre sous quelques dizaines de ms afin de garder une bonne résolution fréquentielle (en BF),
  • d’aller au-delà de 125ms afin de visualiser l’effet des compressions sur le signal amplifié par la lecture de sa dynamique,
  • … mais tout en sachant que se rapprocher de 125ms permet une bonne résolution fréquentielle (idéale selon la norme)…
  • … donc de se situer dans une fourchette d’analyse 40 <–> 125ms… c’est justement celle choisie par les fabricants de chaînes de mesure !
  • … et tout cela dans la mesure du possible d’une chaîne de mesure reliée à un PC et qui est limitée par son port USB ne pouvant transmettre des segments de plus rapides que 46ms !

On peut imaginer dans un futur pas si lointain la possibilité  de se rapprocher des préconisations de la norme IEC de 125ms, avec un port plus rapide, voire un système autonome (chaîne de mesure ayant une fréquence d’échantillonnage plus importante que 44100Hz, avec processeurs dédiés à l’analyse et tournant sous son propre OS). Allez savoir, il est bien possible que ce soit dans les cartons…

Mais pourquoi tout ce cirque avec une analyse précise de la dynamique ?

A des niveaux “normaux” (efforts vocaux moyens), la lecture précise de la dynamique du signal amplifié est réellement utile, car elle peut être détruite par une compression trop importante qui en lisserait les crêtes, mais, c’est moins connu, également par une amplification trop rapide et importante des vallées (réduction de la dynamique par le bas). C’est ce qu’avait montré Holube en 2007 (interview pour Audiology Online de l’initiatrice de l’ISTS) :

 

 

TA_TR rapides

Le graphique de gauche montre le signal amplifié par une aide auditive à temps d’attaque (TA) et temps de retour (TR) très rapides. Les vallées, dès qu’elles faiblissent, sont amplifiées très rapidement; les crêtes, dès qu’elles apparaissent sont lissées très rapidement également. Il en résulte une très nette diminution de la dynamique par rapport à un système plus lent (graphique de droite). Pour aller plus loin, vous pouvez également consulter ce document très intéressant (enfin, je trouve !).

Attention donc : sur quelques appareils, nous avons encore indirectement la main sur ces facteurs temporels, par le choix (obscur, j’adore !) de la “typologie du malentendant” et notamment un fameux choix “dynamique”. Les connaisseurs de ces fabricants reconnaitrons de qui je veux parler…

Juste pour vous montrer ce que devient le signal extrait d’un RSB 0dB, d’un appareil que j’avais testé précédemment sur ce blog, avant son amplification, puis après (émission à 65dBA, fenêtre d’analyse IEC 60118, de 125ms) :

Dyn ISTS in SNR0Dyn_voix extr SNR0

La dynamique est réduite après amplification, au maximum, d’environ 5dB. Il y a donc un respect de la dynamique du signal, même en milieu bruyant. Ce n’est pas toujours le cas… (des noms ! des noms !). Ce n’était pas du tout le cas il y a quelques années, et c’est là que les choses ont beaucoup évolué, il faut le reconnaître. Notez au passage l’amplification du signal @ 3kHz = 28dB.

Voilà ce que subit le bruit avant et après amplification par le même appareil, extrait du même mix à RSB 0dB :

Dyn ISTSnoise in SNR0

Dyn_bruit extr SNR0

Le bruit n’a pas de dynamique (c’est l’IFnoise), ce qui rend d’ailleurs “l’audition dans les vallées du bruit” très difficile; sa dynamique n’est donc pas affectée… puisqu’il n’en a pas. Notez au passage l’amplification du bruit @ 3kHz = 22dB, alors que les deux signaux ont été émis strictement au même niveau (RSB 0dB) et ont la même densité spectrale de niveau. Le signal est détecté, traité et amplifié de manière sélective (+6dB d’amplification par rapport au bruit).

Imaginons maintenant que la dynamique de sortie du signal n’ait pas été respectée (écrasée), cette différence d’amplification entre le signal et le bruit aurait été réduite à néant, car nous l’avons vu, la dynamique du signal avait déjà été réduite de 5dB par les compressions déjà “douces” (CR env. 1.2); une trop grande compression (protection) de la part de l’audioprothésiste aurait encore réduit cette dynamique, lui faisant perdre ses quelques dB d’émergence.

On le voit donc, la lecture de la dynamique du signal est extrêmement importante. Son respect par les algorithmes de traitement du signal est crucial. Pour info, la plupart des chaînes de mesure utilisent résolution temporelle de 46ms, mais en “overlapping”, c’est à dire en faisant se chevaucher plusieurs blocs temporels à 50%, arrivent à 92ms de résolution temporelle, et donc se rapprochent des 125ms de l’idéal standard (j’en avais déjà parlé dans un billet traitant des diverses constantes de temps des chaînes de mesure in-vivo). Vous pouvez accédez à cette fonction dans le paramétrage de vos chaînes de mesure.

Tout cela montre bien la subtilité de toutes ces analyses, mais nous fait aussi prendre conscience (attention : psychologie magazine !) que nous voyons le monde, en général, à travers… une fenêtre !

###############################################

Atelier informatique

###############################################

Pour ceux qui seraient intéressés, cette analyse percentile du signal est réalisable avec une fonction (script) écrite pour le logiciel R.

Ce programme a été écrit par Nathan D. Merchant pour accompagner leur article sur l’acoustique des habitats écologiques. J’en ai modifié le code source afin de l’adapter à l’analyse percentile du signal au audioprothèse. Vous pouvez, si vous le souhaitez, en modifier également les bornes percentiles (ici j’ai défini 30, 50, 65, 95 et 99, dans le fichier Viewer.R). Vous trouverez le script de cette version modifiée ici. Téléchargez les fichiers PAMGuide.R et Viewer.R et mettez-les dans un dossier (votre bureau par exemple). Ouvrez R et définissez ce dossier comme répertoire de travail, puis tapez les commandes suivantes :

source("/votre dossier de destination/PAMGuide.R")

Vous pouvez aussi, sans taper cette commande, accéder au menu “Sourcer fichier” dans R et sélectionner “PAMGuide.R”, puis taper :

PAMGuide(atype="TOL", plottype="Stats", lcut=200, Hcut=16000, N=5512.5)

Cette commande déclenche une boîte de dialogue vous demandant de choisir un fichier .wav pour analyse. Cette dernière est effectuée en 1/3 d’octave (TOL), en bande passante de 200 à 16000Hz, et avec fenêtre temporelle de 125ms (N=5512,5). Le paramètre temporel N est fonction de la fréquence d’échantillonnage du signal à analyser : si vous avez 44100Hz de f.e., N=44100 x 0,125 =5512,5. Pour un signal échantillonné à 96000Hz, avec fenêtre d’analyse de 46ms, N = 96000 x 0,046 = 4416. Dans le cas où vous souhaiteriez avoir les valeurs en dB SPL (comme ici) et non pas en dB relatifs, utilisez le paramètre “calib=1”, puis définissez la sensibilité en dB du paramètre Mh en fonction de votre calibration (ici, un fichier .wav de calibration à 94dB SPL a servi de référence pour définir précisément Mh).

Par exemple pour une analyse de l’ISTS (fichier son téléchargeable sur le site de l’EHIMA), en dB absolus (et RMS = 65dB SPL) et fenêtre temporelle de 1 sec. :

PAMGuide(atype="TOL", plottype="Stats", lcut=200, hcut=16000, N=44100, calib=1, Mh=-3.4)

Et pour finir, l’analyse standardisée IEC 60118-15 en audiologie/audioprothèse, pour l’ISTS :

PAMGuide(atype="TOL", plottype="Stats", lcut=200, hcut=16000, N=5512.5, calib=1, Mh=-3.4, winname="Hann", r=50)

Laisser un commentaire