Site icon Le blog de l'Audiologie Prothétique – Xavier DELERCE

Mesure des performances d’une aide auditive dans le bruit : Do It Yourself !! Partie 3 : installer l’application « Intelligibilité&Qualité »

Vous avez aimé l’épisode 1 (App d’extraction de la parole et du bruit à la sortie d’une aide auditive pour reconstituer le RSB par la procédure d’Hagerman & Olofsson)…

Vous avez digéré ou jeté un oeil discret sur les métriques intrusives d’intelligibilité et de qualité avec/sans aide auditive (épisode 2)…

Cette troisième partie vous est alors destinée : comment installer l’application qui calcule ces métriques.

La quatrième (et avant-dernière) partie sera consacrée à la partie matérielle (oreilles, micros, enregistrement, fichiers sons, etc.) pour capturer tout cela.

Donc pour l’instant : comment installer l’application OIQ_parallel (Objective Intelligibility & Quality) qui va permettre, à partir des enregistrements, d’extraire toutes ces données.

Contrairement à la première application qui extrait le RSB à la sortie d’une aide auditive et qui peut s’utiliser en ligne ou localement sans autre installation que R et R Studio, l’application OIQ_parallel nécessite un « environnement Python ». Et sans jeu de mots, ça pique un peu plus !

Toutes ces métriques (HASPI v2, w2, HASQI, HAAQI, EDI, SIIB, STOI, eSTOI, PESQ) on été publiées en langage Matlab. Ce logiciel est payant, pas donné, et peu facile d’accès. Le but ici était de porter ces métrique sous R, et son moins hostile environnement graphique R Studio, logiciels libres et gratuits, et avec lesquels on peut faire beaucoup de choses (des stats en premiers lieu), mais surtout développer des applications graphiques ne nécessitant aucune maîtrise du code.

Par contre R ne lit pas les fichiers Matlab…

Python… la solution

Miracle ! toutes ces métriques ont été portées en langage Python, un langage proche de R, et que lit R. Matlab aussi, mais le but était de rester en logiciel libre.

Tous les codes de Kates & al. ont été portés en Python par le projet Clarity (HASPI, HASQI et HAAQI), les métriques STOI et eSTOI sont nativement écrites en Python et publiées et de même pour SIIB et PESQ. La métrique EDI a été codée « Maison », tirée de Fortune et Souza, mais elle est excessivement simple (sinon bibi l’aurait pas codée !).

Merci la communauté. Comme quoi quand la recherche n’est pas privatisée, elle se diffuse plus et avance certainement plus vite, mais c’est un autre débat.

Donc pour résumer : L’application Matlab d’origine a été portée sous R, et R tire ces métriques de codes en Python. Et par conséquent, il va falloir installer un environnement Python sur vos machines si vous voulez jour avec cette application OIQ_parallel*, voire même pour les plus joueurs, réaliser vous-mêmes vos propres acquisitions comme on le verra en partie 4.

* pourquoi « parallel » dans OIQ_parallel : ces métriques sont calculées sur 12 RSB (-15/-12/-9/-6/-3/0/3/6/9/12/15/calme) et pour gagner du temps, chaque processeur de vos PC/Mac/Linux va analyser un sous-multiple de 12 RSB. Si vous avez 12 coeurs, ce sera 12 fois plus rapide que sur 1 coeur (séquentiel), 6 fois plus rapide que sur 2 coeurs, etc. Petit raffinement logiciel pour application TRES gourmande en ressources, surtout pour les métriques HASPI, HASQI et HAAQI qui simulent les effets de la surdité.

Un peu d’informatique appliquée

Pour installer R, R Studio et un environnement Python, si ce n’est déjà fait, voici un petit tuto, garanti (presque) sans ligne de commande :

L’app OIQ (Objective Intelligibility & Quality) calcule, à partir d’un enregistrement stéréo avec/sans aide auditive, des métriques objectives d’intelligibilité et de qualité : HASPI v2, STOI, ESTOI, SIIBGauss côté intelligibilité ; HASQI v2, HAAQI, EDI et PESQ côté qualité. Elle tourne entièrement en local sur votre machine : c’est une application R / Shiny qui appelle des bibliothèques Python (projet Clarity, pystoi, pesq, pySIIB) via le paquet reticulate.

Ce guide couvre l’installation complète sur macOS, Windows et Linux, en six étapes. Aucune compétence en programmation n’est nécessaire : chaque étape est un téléchargement ou une commande à copier-coller.

Avant de commencer — ce qu’il vous faut :

• environ 30 minutes (dont ~10 min de téléchargements/installations automatiques) ;
• environ 5 Go d’espace disque (l’environnement Python inclut de grosses bibliothèques de calcul) ;
• idéalement 8 Go de RAM ou plus et un processeur multi-cœurs (l’app parallélise les calculs) ;
• les droits d’administrateur sur la machine (pour installer R, RStudio et Python).

Étape 1 — Installer R

R est le langage dans lequel l’app est écrite. Installez la dernière version stable depuis le site officiel (CRAN) :

macOSR pour Mac

Rendez-vous sur cran.r-project.org/bin/macosx et téléchargez le paquet .pkg correspondant à votre puce :

  • Apple Silicon (M1, M2, M3, M4…) : le fichier « arm64 » ;
  • Intel : le fichier « x86_64 ».

(En cas de doute : menu Pomme → « À propos de ce Mac » : la ligne « Puce » indique Apple M… ou Intel.) Double-cliquez le .pkg et suivez l’assistant.

WindowsR pour Windows

Rendez-vous sur cran.r-project.org/bin/windows/base, cliquez « Download R for Windows », lancez le .exe et acceptez les options par défaut.

LinuxR pour Ubuntu / Debian

Dans un terminal :

Terminal
sudo apt update
sudo apt install -y r-base r-base-dev

Si votre distribution fournit un R trop ancien (< 4.3), ajoutez le dépôt CRAN en suivant les instructions officielles pour Ubuntu.

Étape 2 — Installer RStudio

RStudio est l’interface graphique depuis laquelle vous lancerez l’app. Téléchargez RStudio Desktop (gratuit) sur posit.co/download/rstudio-desktop — le site détecte votre système et propose le bon installateur (Mac, Windows ou Linux). Installez-le comme n’importe quelle application.

Étape 3 — Installer Python 3.11 et les outils de compilation

Les métriques (HASPI, PESQ, SIIB…) sont calculées par des bibliothèques Python. L’app a été validée avec Python 3.11 : installez précisément cette version, même si une plus récente existe. Deux des bibliothèques (pesq et pySIIB) sont compilées localement lors de l’installation : il faut donc aussi un compilateur C et l’outil Git. Tout est gratuit et détaillé ci-dessous par système.

macOSPython + outils sur Mac

  1. Téléchargez l’installateur Python 3.11.9 (« macOS 64-bit universal2 installer ») sur python.org, puis lancez-le (options par défaut).
  2. Installez les outils de développement Apple (compilateur + Git en un paquet). Ouvrez l’application Terminal et tapez :
Terminal
xcode-select --install

Une fenêtre s’ouvre : cliquez « Installer » et laissez finir (quelques minutes). Si le message indique que les outils sont déjà installés, c’est parfait, passez à la suite.

WindowsPython + outils sur Windows

  1. Téléchargez l’installateur Python 3.11.9 (« Windows installer 64-bit ») sur python.org. Au lancement, cochez impérativement « Add python.exe to PATH » en bas de la première fenêtre, puis « Install Now ».
  2. Installez Git pour Windows depuis git-scm.com (options par défaut).
  3. Installez le compilateur Microsoft : téléchargez « Build Tools pour Visual Studio » sur visualstudio.microsoft.com, lancez-le et cochez la charge de travail « Développement Desktop en C++ » (l’installation est volumineuse, ~6 Go — c’est normal).
  4. Redémarrez l’ordinateur une fois les trois installations terminées.

LinuxPython + outils sur Ubuntu / Debian

Ubuntu récent fournit Python 3.12 par défaut ; installez la 3.11 via le dépôt deadsnakes :

Terminal
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install -y python3.11 python3.11-venv python3.11-dev build-essential git

(Sur Debian, ou si le PPA n’est pas disponible, installez le paquet python3.11 de votre distribution ou compilez depuis python.org ; l’essentiel est de disposer de python3.11, de venv et d’un compilateur.)

Étape 4 — Télécharger l’app

Téléchargez l’archive de l’app : App_OIQ_R_parallel_diffusion.zip (~40 Ko).

Décompressez-la (double-clic) puis déplacez le dossier obtenu App_OIQ_R_parallel vers un emplacement simple et permanent, par exemple dans Documents. Évitez un dossier synchronisé partiellement en ligne ou un chemin réseau. Le dossier doit contenir notamment app.R, setup.R, requirements.txt et le sous-dossier engine/.

Étape 5 — Configurer l’app (une seule fois)

Ouvrez RStudio, puis indiquez-lui le dossier de l’app : menu Session → Set Working Directory → Choose Directory… et sélectionnez le dossier décompressé à l’étape 4.

Dans la console R (panneau en bas à gauche), tapez ensuite :

Console R
source("setup.R")

Ce script fait tout le reste automatiquement :

  • il installe les paquets R nécessaires (Shiny, reticulate, future…) ;
  • il crée un environnement Python isolé nommé oiq-py (votre Python système n’est pas modifié) ;
  • il y installe les bibliothèques de métriques (pyclarity, pystoi, pesq, pySIIB) dans les versions exactes validées, puis vérifie qu’elles se chargent.

Comptez 5 à 15 minutes selon la connexion ; la compilation de pesq et pySIIB fait défiler beaucoup de texte, c’est normal. À la fin, vous devez voir :

OK. Virtualenv 'oiq-py' pret (pyclarity + pystoi + pesq + pysiib importes).
Lancez l'app : shiny::runApp("app.R")

Si le script se termine sur un avertissement (« Setup Python ÉCHOUÉ »), ne continuez pas : consultez la section Dépannage ci-dessous, corrigez, puis relancez simplement source("setup.R") — le script reprend où il en était.

Étape 6 — Lancer l’app

Toujours dans RStudio, avec le dossier de l’app comme répertoire de travail :

Console R
shiny::runApp("app.R")

L’app s’ouvre dans une fenêtre (ou votre navigateur). Pour les lancements suivants : ouvrez RStudio, refaites Session → Set Working Directory, et relancez cette même commande — l’étape 5 n’est plus jamais nécessaire.

Premier calcul en mode parallèle : au démarrage d’une analyse sur plusieurs cœurs, chaque cœur compile une fois le code de calcul (numba). L’écran peut rester 1 à 2 minutes sans activité visible : ce n’est pas un blocage. Les analyses suivantes démarrent immédiatement.

Machines à 8 Go de RAM ou moins : limitez le sélecteur « Cœurs » à 2–4, chaque cœur chargeant sa propre copie de Python en mémoire.

Dépannage

SymptômeCause probable et solution
ModuleNotFoundError: No module named 'clarity' au lancement de l’app L’environnement Python oiq-py n’existe pas ou est incomplet. Refaites l’étape 5 (source("setup.R")) et lisez son message final.
Suitable Python installation … not found pendant le setup Python 3.11 n’est pas détecté. Vérifiez l’étape 3 (sous Windows : la case « Add python.exe to PATH » était-elle cochée ? Sinon réinstallez Python en la cochant), fermez et rouvrez RStudio, relancez le setup.
Échec pendant l’installation de pesq ou pysiib (messages « error » mentionnant compiler, cl.exe, gcc ou git) Compilateur ou Git manquant : reprenez l’étape 3 pour votre système (Mac : xcode-select --install ; Windows : Build Tools C++ et Git ; Linux : build-essential git), redémarrez la machine, relancez le setup.
Setup interrompu, environnement suspect, comportement incohérent Repartez de zéro proprement :
reticulate::virtualenv_remove("oiq-py")
puis source("setup.R").
L’analyse échoue au découpage du fichier Le signal à analyser doit être un .wav stéréo (gauche = sans aide, droite = avec aide) ; un fichier mono est refusé. Idéal : 44,1 kHz / 24 bits PCM.

Bonnes mesures ! Pour toute question sur l’installation, laissez un commentaire sous cet article en précisant votre système (Mac/Windows/Linux) et le message d’erreur complet.

Et comment ça marche ensuite ?

Vous double-cliquez sur app.R, puis Run App et l’application s’ouvre :

Et voilà, voilà…

Prêts ?

Et pour vous récompenser de tous ces efforts, voici les liens de tests récents, genre « David contre Goliath », voix à 0° et bruit derrière à -115° = 3/4 arrière, à l’opposé de l’appareil mesuré, même si deux appareils sont toujours utilisés pour les mesures (la binauralité joue donc ici, mais on en reparlera plus tard). Les mesures ont été faites sur la base d’un audiogramme normalisé N3, et dans un milieu réverbérant (0,5s) :

Maintenant, vous saurez…

Quelques remarques

Ces indices sont des indices MONAURAUX, même si à chaque fois les enregistrements sont réalisés avec deux appareils, au cas où (?) une amélioration serait apportée par par la stéréophonie.

Et justement, deux c’est mieux qu’un ? La binauralité améliore-t-elle l’intelligibilité dans le bruit (quand même !!) ? Mais dans quelles conditions spatiales, et de combien ?

Beaucoup de questions… beaucoup de réponses à venir plus tard, avec les indices… binauraux !

La suite ?

Le prochain épisode sera consacré aux aspects matériels de ces acquisitions (fichiers d’enregistrements et matériel d’acquisition).

Tentons de passer un bon été pendant que la planète brûle.

Quitter la version mobile