Détection du genre vocal dans l’audio : de l’analyse spectrale aux modèles ML
Tech
audio analysis
python
machine learning
librosa

Détection du genre vocal dans l’audio : de l’analyse spectrale aux modèles ML

Comment nous avons amélioré la classification du genre vocal dans notre analyseur audio — d’estimations peu fiables à 100 % de confiance à des évaluations honnêtes grâce à de meilleures caractéristiques et à des approches ML.

Uygar DuzgunUUygar Duzgun
Mar 26, 2026
Updated 4 avr. 2026
4 min read

Le problème : trop de confiance et souvent faux

Nous avons mis à jour l’analyse vocale dans MixAnalytic — notre outil d’analyse audio propulsé par l’AI pour les producteurs de musique. La fonctionnalité détecte si une piste contient des voix et estime le genre de la voix pour adapter les retours de mix.

L’implémentation précédente utilisait librosa avec l’estimation de la fréquence fondamentale (F0) et l’analyse du centroïde spectral. Ça marchait… parfois. Le vrai problème ? Elle déclarait avec assurance « Voix féminine — 100% de confiance » sur des pistes avec des voix masculines. C’est pire que de ne pas avoir la fonctionnalité du tout.

Voici ce que nous avons appris en la corrigeant, et les trois niveaux d’amélioration disponibles pour quiconque travaille sur l’analyse vocale en Python.

Niveau 1 : arrêter de mentir sur la confiance

Le gain le plus rapide consiste à admettre ce que l’analyse spectrale *ne* peut pas faire. Une analyse pure F0 + centroïde spectral est une heuristique grossière, pas un classificateur. Nos correctifs :

Limiter la confiance à 85% — l’analyse spectrale seule ne devrait jamais prétendre à la certitude
Inclure toujours l’incertitude — au minimum 10% « incertain » dans chaque résultat
Langage plus nuancé — « probablement masculin » au lieu de « voix masculine détectée »
Zones de recouvrement plus larges — la plage 140-185 Hz est réellement ambiguë (ténor vs contralto)

```python MAX_CONFIDENCE = 85 # L'analyse spectrale seule ne peut pas être définitive MIN_UNCERTAINTY = 10 # Toujours afficher une part d'incertitude

confidence = min(raw_confidence, MAX_CONFIDENCE) uncertainty = max(MIN_UNCERTAINTY, 100 - confidence) ```

Cela ne rend pas l’analyse *meilleure*, mais ça la rend *honnête*. Les utilisateurs font davantage confiance à un système qui dit « probablement féminin, 72% » qu’à un système qui dit « féminin, 100% » et se trompe.

C’est exactement le genre de détail qui compte quand vous construisez des outils pour les producteurs — si la détection de la voix est manifestement fausse, ils arrêteront aussi de faire confiance au reste de votre mix analysis.

Niveau 2 : de meilleures fonctionnalités avec MFCC

Le problème fondamental de la classification basée uniquement sur F0, c’est que la hauteur ne détermine pas le genre. Une contralto féminine profonde et un ténor masculin peuvent avoir des valeurs de F0 presque identiques.

Les MFCC (Mel-Frequency Cepstral Coefficients) capturent l’enveloppe spectrale de la voix — la forme du conduit vocal — qui diffère de façon plus fiable entre les voix masculines et féminines. La recherche montre de manière constante que 13 MFCC + leurs dérivées (deltes) donnent une bien meilleure séparation.

```python import librosa

# Extraire 13 MFCC + delta + delta-delta = 39 caractéristiques mfccs = librosa.feature.mfcc(y=segment, sr=sr, n_mfcc=13) delta_mfccs = librosa.feature.delta(mfccs) delta2_mfccs = librosa.feature.delta(mfccs, order=2) ```

Combiné à un classificateur sklearn simple (SVM ou Random Forest) entraîné sur des données de voix étiquetées, cette approche peut atteindre 85-90% de précision — un saut significatif par rapport aux seules heuristiques spectrales.

Le meilleur point : aucune dépendance supplémentaire au-delà de ce que la plupart des projets audio ont déjà (librosa + scikit-learn).

Niveau 3 : modèles ML pré-entraînés

Pour une précision de niveau production (90-97%), des modèles dédiés sont la voie à suivre. Deux options remarquables :

inaSpeechSegmenter

Un kit basé sur CNN provenant de l’Institut National de l’Audiovisuel français. Il a remporté le défi de détection de la parole MIREX 2018 et segmente l’audio en parole/musique/bruit tout en classifiant le genre du locuteur.

```bash pip install inaSpeechSegmenter ```

```python from inaSpeechSegmenter import Segmenter seg = Segmenter(detect_gender=True) segments = seg("audio_file.wav") # Retourne : [('female', 0.0, 4.5), ('music', 4.5, 8.2), ('male', 8.2, 12.0)] ```

Avantages : éprouvé en production, maintenu activement, gère bien le contenu mixte (parole + musique). Inconvénients : ajoute une dépendance d’environ 200MB, nécessite ffmpeg, plus lent sur CPU.

Hugging Face Wav2Vec2

Des modèles transformeurs pré-entraînés, affinés pour la classification du genre. Le modèle `norwoodsystems/norwood-maleVSfemale` est un classificateur binaire léger.

```python from transformers import pipeline

classifier = pipeline("audio-classification", model="norwoodsystems/norwood-maleVSfemale") result = classifier("audio_file.wav") ```

Avantages : ~97% de précision, API simple, bénéficie du pré-entraînement wav2vec2. Inconvénients : taille de modèle plus grande, nécessite transformers + torch.

Quelle approche devriez-vous utiliser ?

ApprochePrécisionDépendancesVitesse
---------------------------------------------
F0 + spectral (honnête)~60-70%librosa uniquementTrès rapide
MFCC + sklearn~85-90%librosa + sklearnRapide
inaSpeechSegmenter~92-95%Modèle CNN (~200MB)Moyenne
Wav2Vec2 affiné~95-97%transformers + torchPlus lent

Pour un outil d’analyse musicale comme le nôtre, le point idéal est le Niveau 1 maintenant (être honnête sur les limites) tout en travaillant vers le Niveau 2 ou 3 pour une version future. La pire chose à faire est d’afficher une fausse confiance — les utilisateurs arrêteront de faire confiance à l’ensemble de votre analyse si la détection de la voix est manifestement erronée.

À retenir

Si vous construisez une analyse vocale avec seulement librosa et des caractéristiques spectrales : faites preuve d’humilité sur ce que ça peut faire. Limitez vos scores de confiance, utilisez un langage prudent, et affichez toujours l’incertitude. Vos utilisateurs respecteront l’honnêteté plutôt que la fausse précision.

Et si la précision compte réellement pour votre cas d’usage, investissez dans des caractéristiques MFCC ou dans un modèle pré-entraîné. Le passage de 60% à 95% de précision vaut largement la complexité ajoutée.

Vous voulez entendre la différence ? Importez une piste sur MixAnalytic — c’est gratuit et ça fournit une analyse vocale en plus d’un retour complet sur le mix, propulsé par AI.