Cet article retrace l’évolution technique et les étapes suivies pour entraîner des modèles capables de détecter automatiquement des chroniques radios au sein d’une émission complète.
Cette approche consiste à utiliser des techniques d’apprentissage automatique (Machine Learning) en segmentant des fichiers audio longs, extrayant des caractéristiques acoustiques et entraînant un classifieur pour identifier les zones d’intérêt.
Dans cette nouvelle approche, on entraîne un modèle avec:
Le modèle utilisé par défaut est un Random Forest.
Au lieu de confier la décision à un seul algorithme, le RandomForest crée une centaine d’Arbres de Décision (d’où le nom “Forêt”).
Pour que les arbres ne soient pas tous identiques, on introduit du hasard de deux manières :

Pour chaque segment de 3 secondes, le système extrait une signature acoustique riche :
Le modèle obtient la note de 7.69/100 (ce qui n’est pas suffisant), on change donc de méthode pour partir d’un modèle pré-entrainé (afin de bénificier d’un modèle entrainé sur un dataset beaucoup plus grand).
Cette approche consiste à fine-tuner (prendre un modèle déjà entrainé sur un gros volume de données, et continuer de l’entraîner sur un jeu de données plus spécifique) un modèle wav2vec2-large-xlsr-53-french pour la classification de segments audio (détection de chroniques radio) et d’effectuer des prédictions sur de nouveaux fichiers audio.
Entraînement
Wav2Vec2ForSequenceClassification transforme un signal audio en une séquence de vecteurs numériques qui capturent les représentations riches du son. On rajoute ensuite une couche (tête de classification) qui prend ces représentations et les transforme en un score par catégorie possible (chronique ou background).Prédiction

Afin d’essayer de détecter correctement les chroniques, les valeurs des paramètres suivants ont été modifiés :
Même en jouant sur ces différents paramètres, aucun résultat satisfaisant lors de l’inférence n’a été obtenu.
Un des soucis qui fait que les chroniques ne sont pas détectées correctement est le déséquilibre dans le jeu de données : il y a beaucoup plus de “chroniques” que de “background” dans une radio, ce qui va créer des faux positifs.
La méthode la plus précise est le levier de pourcentage. Le script génère les données, puis effectue un sous-échantillonnage (downsampling) automatique pour atteindre le ratio exact demandé.
Afin de simplifier et d’améliorer la détection des chroniques, on demande au modèle de détecter seulement les périodes où il y a des chroniques (sans les nommer).
Après l’application de toutes ces techniques, on obtient la note de 38.09, ce qui n’est pas suffisant non plus.
Le script d’inférence d’origine prenait des décisions indépendantes par fenêtre de temps. Si une seule fenêtre au milieu d’une chronique obtenait un score de confiance légèrement inférieur au seuil, la chronique était coupée en deux ou ignorée.
A. Lissage par Score Compétitif (Soft Voting)
Au lieu de simplement prendre la probabilité de la classe “chronique”, le script calcule un score pondéré :
prob_chronique > prob_background, le score est égal à prob_chronique.prob_background >= prob_chronique, le score de chronique est divisé par deux.B. Seuil à Hystérésis (Double Seuil)
L’utilisation d’un seuil unique crée des oscillations. Nous utilisons désormais deux seuils :
threshold_start) : Un score élevé (0.7) est nécessaire pour déclencher le début d’une chronique.threshold_end) : Un score plus bas (0.3) suffit pour continuer la détection.
Malheureusement, le score final du modèle est de 8.6/100, ce qui est insuffisant.
Cette version simplifiée se concentre uniquement sur le lissage temporel par moyenne mobile pour stabiliser les détections sans utiliser la complexité de l’hystérésis ou du score compétitif.
Dans une prédiction classique, chaque fenêtre est traitée indépendamment. Si le modèle a une micro-hésitation, la chronique est coupée.
L’approche lisse fonctionne ainsi :
Exemple :
Prenons une suite de nombres représentant la probabilité qu’une chronique soit en cours à chaque seconde :
[0.1, 0.2, 0.9, 0.1, 0.8, 0.9, 0.9].
Le pic à 0.1 au milieu du 0.9 est probablement une erreur du modèle.
Le score obtenu par cette méthode est de 0.0/100.
Cette approche vise à résoudre les problèmes de précision de début de chronique en utilisant les jingles d’introduction comme points d’ancrage de haute confiance.
Plutôt que d’essayer de classer chaque segment de 10 secondes comme “chronique” ou “background” avec un seul modèle, ce qui crée souvent des ambiguïtés aux frontières, l’approche hybride divise le problème en deux étapes :
Le script d’entraînement crée un modèle binaire (Jingle vs Background) optimisé pour les signatures acoustiques.
Logique d’échantillonnage
Utilise AST (Audio Spectrogram Transformer) (MIT/ast-finetuned-audioset), car sa capacité à analyser l’audio comme une image (via spectrogrammes) est supérieure pour reconnaître des motifs musicaux répétitifs comme les jingles.
Ce script combine les deux modèles pour une segmentation précise.

Le score obtenu par cette méthode est de 0.0/100.
Bien que le modèle facebook/wav2vec2-large-xlsr-53-french soit excellent pour la reconnaissance vocale (ASR), il présente des limites pour la classification de segments :
large (300M+ paramètres) est lourde pour une classification binaire ou multi-classes simple. Cela ralentit l’inférence et nécessite plus de données pour éviter le sur-apprentissage (overfitting).Inférences
Timecodes des chroniques (sans les nommer)
Description : Convertit l’audio en spectrogramme (image) et utilise un Transformer (ViT) pour l’analyse.
Avantages : Excellent pour capturer les signatures acoustiques et les jingles.
Modèle utilisé : MIT/ast-finetuned-audioset-10-10-0.4593
Observations et Résultats
Note du modèle : 2.9/100
Description : Un des modèles pour la classification sonore générale.
Avantages : Entraîné pour capturer à la fois la parole et les sons environnementaux/musicaux. Très robuste au bruit et aux mélanges sonores.
Modèle utilisé : microsoft/beats-base
Observations et Résultats
Note du modèle : 2.9/100
Étant donné que la fonction d’inférence présente plusieurs paramètres, on utilise un programme qui prend un audio et l’emplacement réel des chroniques dans cet audio et teste toutes les combinaisons de valeur de paramètres pour obtenir ce résultat, afin de connaitre la configuration optimale des paramètres.
Malheureusement, aucun modèle n’a réussi à obtenir un résultat avec les emplacements réels des chroniques.

On utilise une approche “multi-modale” pour détecter le début de chroniques radio en temps réel. Au lieu de se baser sur un seul critère, il fusionne plusieurs types d’analyses pour prendre une décision plus robuste.
Voici les grandes étapes de la méthode :
1. La Capture et le Prétraitement
Le système récupère le flux audio (soit d’un fichier, soit d’un flux live comme France Inter) et le découpe en petits
segments (chunks) pour les analyser au fil de l’eau.
2. Le “Fast Path” (Empreintes Acoustiques)
Avant de lancer des calculs lourds, le système vérifie si le segment audio ressemble à un jingle connu.
3. Les Capteurs Parallèles (Multi-Approche)
Si ce n’est pas un jingle connu, il active 4 capteurs différents :
4. La Fusion des Scores
Chaque capteur donne une note. Le système fait une moyenne pondérée :
5. L’Apprentissage (Boucle de rétroaction)
Dès qu’une chronique est détectée avec certitude, le système enregistre l’empreinte sonore de ce moment. Si c’était un
jingle, il le reconnaîtra encore plus vite la prochaine fois grâce au Fast Path.