Vizzia · Détection de pleurs de bébé · 20 août 2026 · page 3 sur 3
Résultats :
le coût réel de chaque choix.
Ce que devient le classement face aux sons d'une vraie chambre, ce que coûte chaque niveau d'exigence, sur quoi chaque modèle se trompe — puis ce qui sépare un taux de déclenchement d'un nombre d'alarmes par nuit, où tourne le modèle, et les quatre décisions à prendre.
01 — Face aux sons d'une vraie chambre
Le classement s'inverse quand les sons de fond changent
Jusqu'ici les modèles n'affrontaient que des sons de bébé. Nous les avons confrontés à 3 584 sons de chambre étiquetés — cris, toux, chat, rire, respiration, vaisselle — dont seulement 1,7 % de pleurs, comme dans la réalité.
| Modèle | Sons de bébé deBarbaroCry | Sons de chambre FSD50K · IC 95 % | Verdict |
|---|---|---|---|
| CED | 0,953 | 0,875 [0,77 – 0,95] | tient sur les deux |
| YamNet | 0,929 | 0,829 [0,70 – 0,93] | non départagé |
| EfficientAT | 0,932 | 0,812 [0,67 – 0,92] | non départagé |
| Sonde YamNet | 0,931 | 0,700 [0,53 – 0,85] | non départagé |
| MS-CLAP | 0,939 · 2e | 0,641 [0,46 – 0,78] · dernier | s'effondre |
MS-CLAP déclenche 17 fois plus que CED
Au même réglage — celui qui attrape 90 % des pleurs — appliqué tel quel aux 3 524 sons de chambre :
Ni le corpus de bébés ni ESC-50 ne le montraient. Il fallait des sons de chambre, à faible proportion de pleurs, pour le voir.
Deux précautions, et pourquoi la conclusion tient quand même
60 pleurs seulement dans ce corpus : les intervalles de confiance des quatre premiers se recouvrent tous. Ne lisez pas les rangs — seul l'effondrement de MS-CLAP est un résultat, et il l'est largement.
MS-CLAP a par ailleurs pu voir ces sons pendant son entraînement, ce qui ne peut que l'avantager. Il finit malgré tout dernier : le doute sur le corpus sous-estime le problème, il ne l'explique pas.
02 — Le corpus de référence
Ce que coûte chaque niveau d'exigence
On fixe la part de pleurs qu'on veut attraper, puis on lit combien de fausses alarmes cela coûte. C'est la seule comparaison qui décide vraiment — et là, le classement est net.
| Pleurs attrapés | Modèle | Fausses alarmes | Alarmes justifiées | Sons non-pleurs déclenchés |
|---|---|---|---|---|
| 85 % | CED | 1 494 | 91 % | 8 % |
| Sonde YamNet | 1 586 | 91 % | 9 % | |
| EfficientAT | 1 708 | 90 % | 9 % | |
| YamNet | 1 845 | 90 % | 10 % | |
| MS-CLAP | 2 126 | 88 % | 12 % | |
| 90 % | CED | 2 138 | 89 % | 12 % |
| Sonde YamNet | 2 271 | 88 % | 12 % | |
| EfficientAT | 2 576 | 87 % | 14 % | |
| YamNet | 2 609 | 87 % | 14 % | |
| MS-CLAP | 3 376 | 83 % | 18 % | |
| 95 % | CED | 3 596 | 83 % | 20 % |
| Sonde YamNet | 3 962 | 82 % | 22 % | |
| YamNet | 4 599 | 80 % | 25 % | |
| EfficientAT | 5 144 | 78 % | 28 % | |
| MS-CLAP | 6 130 | 74 % | 33 % |
03 — Nature des erreurs
Les modèles se trompent différemment, et ça se choisit
Les sons de chambre portent chacun un nom. On peut donc, pour la première fois, dire sur quoi exactement chaque modèle déclenche à tort — et non plus seulement combien de fois.
| Modèle | Cri | Sanglots d'adulte | Chat | Toux | Respiration | Rire |
|---|---|---|---|---|---|---|
| CED | 6 % | 17 % | 4 % | — | — | — |
| YamNet | 9 % | 40 % | 14 % | — | — | 7 % |
| EfficientAT | 27 % | 63 % | 5 % | — | — | 8 % |
| Sonde YamNet | 44 % | 17 % | 18 % | — | — | 25 % |
| MS-CLAP | 84 % | 71 % | 60 % | 44 % | 41 % | — |
MS-CLAP ne détecte pas le pleur, il détecte la détresse
84 % des cris, 44 % des toux, 41 % des respirations. Un modèle qui déclenche sur une respiration n'a pas appris « pleur de bébé », il a appris « quelqu'un ne va pas bien ».
Une confusion est saine, les autres non
Les sanglots d'adulte arrivent en tête chez les quatre modèles : c'est attendu, et c'est précisément la frontière que le produit doit tenir. En revanche toux, respiration et chat n'ont rien à voir avec un pleur.
Le chat est le confondant non vocal à surveiller — 60 % chez MS-CLAP, 14 % chez YamNet — et un moniteur de chambre est souvent posé dans un foyer avec un animal.
Un seul modèle sait nommer ses erreurs
MS-CLAP travaille avec 24 catégories rédigées pour cette tâche : il distingue le gazouillis du grognement, quand les autres rangent tout sous « parole ». Sur le corpus de bébés, le gazouillis apparaît dans 12 % de ses fausses alarmes contre 1 % de ses bonnes détections — une cible actionnable.
C'est ce qui le garde utile comme outil de diagnostic, alors même qu'il est écarté comme détecteur.
Et c'est ce qui rend la combinaison payante
Deux modèles qui échouent sur des axes différents se corrigent l'un l'autre. Mesuré sur une paire : seule la moitié de leurs fausses alarmes est commune. Tout le gain est dans l'autre moitié — d'où les −26 à −32 % obtenus en combinant deux avis, pour 13 % de calcul en plus.
Comment lire ces pourcentages
Le réglage est celui calibré sur le corpus de bébés, appliqué tel quel aux sons de chambre — c'est ce que ferait une mise en production naïve. « — » signifie que la catégorie n'est pas parmi les pires de ce modèle, pas qu'elle est à zéro.
Le détail complet, classe par classe et modèle par modèle, est dans docs/DEMARCHE.md.
04 — Le chiffre qui manque
« 0,6 % » n'est pas un nombre d'alarmes par nuit
Tous les taux de cette présentation sont des parts d'extraits. Un parent, lui, ne compte pas des extraits : il compte les fois où son téléphone sonne pour rien. Voici ce qui sépare les deux, et ce qu'il manque exactement pour faire la conversion.
Ce qui déclenche l'inférence
Le modèle n'écoute pas en continu. Une détection d'activité sonore en amont ne lui soumet un extrait que lorsqu'un événement sonore d'au moins 3 secondes se produit. La chambre au repos ne produit aucune décision.
C'est ce qui rend le calcul possible, et c'est aussi pourquoi le corpus de référence n'a pas besoin d'une classe « silence » :
fausses alarmes par nuit = événements sonores ≥ 3 s par nuit × taux de déclenchement
Le second facteur est mesuré. Le premier ne l'est pas — et c'est tout ce qui manque.
| Modèle | Taux | chambre calme 50 événements | chambre normale 200 événements | chambre animée 500 événements |
|---|---|---|---|---|
| CED | 0,57 % | 0,3 | 1,1 | 2,9 |
| YamNet | 1,84 % | 0,9 | 3,7 | 9,2 |
| EfficientAT | 2,78 % | 1,4 | 5,6 | 13,9 |
| MS-CLAP | 9,68 % | 4,8 | 19 | 48 |
Les colonnes sont des hypothèses de travail, pas des mesures : aucun de nos corpus ne dit combien d'événements sonores une chambre produit en une nuit. Elles sont là pour montrer l'ordre de grandeur et ce qui en dépend.
Le déclencheur est un modèle lui aussi
Un pleur que la détection d'activité ne relève pas est un pleur que le modèle ne verra jamais. Le rappel du produit n'est pas celui de CED : c'est rappel du déclencheur × rappel du modèle.
Ce premier facteur n'a jamais été mesuré. Tant qu'il ne l'est pas, tous nos chiffres de rappel sont des bornes hautes.
Et une décision d'alarme, ce n'est pas une décision de modèle
Un événement de 3 s produit une décision ; un pleur qui dure une minute en produit des dizaines. Entre le score et la notification il faut une règle d'épisode — k déclenchements sur n, temporisation, anti-rebond — qui n'existe pas encore.
C'est elle qui décide si un pleur d'une minute fait une notification ou vingt.
05 — Déploiement
Où tourne le modèle, aujourd'hui et demain
Le détecteur n'est pas embarqué dans le babyphone : il est exposé en service HTTP. L'appareil envoie l'audio, le service renvoie une classification. C'est ce qui rend le changement de modèle peu coûteux — et c'est aussi ce qui fixe les contraintes.
La chaîne
Le babyphone détecte un événement sonore ≥ 3 s, puis poste l'extrait audio dans le corps d'une requête HTTP vers l'API.
L'API est une application FastAPI conteneurisée (uvicorn, port 8000), qui charge le modèle une fois au démarrage et répond la classe et son score sur /predict.
L'hébergement
Une instance EC2 sur AWS, déployée par CDK : c7g.large (Graviton ARM, 2 vCPU), Ubuntu 22.04, région eu-west-3 (Paris).
Pas de GPU, et il n'en faut pas : la plus grosse dépense de calcul du candidat retenu est de l'ordre de la dizaine de millisecondes.
Ce que ça coûte de changer de modèle
Une image, une variable de configuration, un redéploiement. Le contrat HTTP ne bouge pas : même endpoint, même payload, même forme de réponse.
C'est la raison pour laquelle le choix du modèle est réversible — et donc pourquoi il ne mérite pas de bloquer le reste du plan.
Ce qui tourne aujourd'hui n'est pas ce qui est proposé
L'API en service héberge MS-CLAP avec 7 catégories. C'est le modèle que cette présentation écarte comme détecteur. Le passage à CED est le premier livrable technique.
Les latences annoncées ne sont pas celles de production
Les ~9 ms de CED et 62 ms de MS-CLAP sont mesurés sur un Apple M2, pas sur une c7g.large à 2 vCPU. À re-mesurer sur l'instance cible avant tout engagement de latence.
S'y ajoutent le transfert réseau et le décodage audio, qui ne sont pas dans ces chiffres.
L'audio d'une chambre d'enfant sort du domicile
Chaque déclenchement envoie un extrait sonore d'une chambre d'enfant vers un serveur. Durée de conservation, base légale et information des familles sont à cadrer avant la boucle de retour beta, pas après.
06 — Conclusions
Ce que nous savons maintenant
- CED est le meilleur modèle disponible, et l'un des moins chers : 7 fois plus rapide que MS-CLAP pour un quart de fausses alarmes en moins sur une fenêtre de 3 secondes. Il fonctionne sans aucun réentraînement.
- MS-CLAP est écarté comme détecteur. Ses 7 secondes obligatoires le rendent le plus lent ; et face à de vrais sons de chambre il déclenche 17 fois plus que CED. Il reste le seul à savoir nommer ses erreurs — ce qui en fait un outil, pas un détecteur.
- Une fenêtre de 3 secondes est tenable, et son coût est chiffré : ~40 % de fausses alarmes en plus qu'une fenêtre de 5 secondes. C'est un arbitrage produit, plus une inconnue technique.
- Le bébé compte plus que le modèle. L'écart entre le bébé le plus facile et le plus difficile est dix fois l'écart entre les quatre premiers modèles. Aucun réglage de seuil ne rattrape ça — nous l'avons mesuré, la calibration par bébé dégrade.
- Il faut tester un modèle sur les sons qu'il rencontrera vraiment. Les sons de chambre ont inversé le classement, et révélé au passage qu'EfficientAT rendait n'importe quoi sous 2 secondes — invisible sur les corpus précédents, tous en extraits de 5 secondes ou plus.
- Le choix du modèle est réversible, et il est presque gratuit : une image à redéployer derrière un contrat HTTP inchangé. Ce n'est pas là qu'est le risque du projet.
Et surtout : nous sommes bloqués par les données, pas par les modèles
Quatre modèles sur cinq sont indiscernables, et leur classement change avec la métrique choisie. Les erreurs d'étiquetage du corpus sont plus grandes que l'écart entre eux.
Autrement dit : changer de modèle n'apportera plus grand-chose. Améliorer les données, si.
Nuance apportée par les sons de chambre : le choix du modèle compte encore pour éviter le pire. Entre CED et MS-CLAP il y a un facteur 17 sur les fausses alarmes.
07 — Prochaines étapes
Le prochain gain vient de la donnée
Trois chantiers, décrits par ce qu'on annote, avec quoi, et ce que ça permet de mesurer ensuite. Aucun ne demande un nouveau modèle.
1 · Réannoter le corpus de référence
Quoi — sortir de l'étiquette binaire de deBarbaroCry et passer à pleur dominant / babillage dominant / ni l'un ni l'autre. C'est la frontière sur laquelle tous les modèles se trompent, et elle n'est aujourd'hui pas étiquetée.
Combien — 200 extraits tirés au sort pour mesurer le taux d'erreur, soit ~17 minutes d'écoute ; puis extension aux extraits à score élevé, là où les erreurs se concentrent.
Option — annoter par fenêtres de 3 secondes plutôt que sur le clip entier : c'est l'unité que le modèle voit en service, donc l'étiquette et la décision portent enfin sur le même son.
Débloque : la correction de toutes les mesures publiées — ~40 % d'erreur sur les fausses alarmes à score élevé — et tout réentraînement, aujourd'hui condamné à apprendre le bruit.
2 · Constituer le corpus propriétaire Boby
Source — les sons réellement captés par les babyphones en service : nos micros, nos pièces, nos bébés. Aucun corpus public ne donne ça, et c'est ce qui manque à toutes les mesures actuelles.
Préalable — arrêter la liste des classes avant d'annoter : pleur, babillage, autre vocalisation du bébé, voix d'adulte, animal, bruit de maison. Changer les classes en cours de route invalide tout ce qui précède.
Outillage — un outil d'annotation dédié : écoute, raccourcis clavier, classes imposées, double passe sur les cas litigieux. Pas un tableur.
À cadrer avec le consentement des foyers concernés : ce sont des enregistrements de chambres d'enfants.
3 · Générer les négatifs manquants ElevenLabs
Quoi — générer les classes « non-pleur » que FSD50K ne couvre pas : porte, vaisselle, chute d'objet, aspirateur, jouet musical, sonnerie.
Pourquoi — c'est ce qui valide le seuil : niveau sonore, mélange et distance au micro sont choisis, donc le seuil se teste sur des conditions décidées plutôt que subies.
Limite — des négatifs générés, oui ; des pleurs générés, non — voir ci-dessous.
Livrable : un taux de déclenchement par classe de son de maison, donc un seuil justifié plutôt qu'hérité du corpus de bébés.
⚠ Une précaution sur la génération de pleurs
Les auteurs du corpus ont mesuré qu'un modèle entraîné sur des pleurs enregistrés en studio s'effondre en conditions réelles : F1 0,656 → 0,236.
La génération est donc excellente pour les sons de la maison — porte, vaisselle, animal — et risquée pour les pleurs eux-mêmes : un pleur synthétique est propre, cadré, sans réverbération de chambre. C'est précisément ce qui ne généralise pas.
Règle proposée : du son généré dans l'entraînement, jamais dans le jeu d'évaluation. Et tout apport de pleurs générés doit être validé sur des bébés réels mis de côté avant d'être adopté.
Ordre recommandé
Un seuil ne se transporte ni d'un corpus, ni d'une durée d'écoute, ni d'un bébé à l'autre : changer la durée d'échantillon impose de le refixer.
08 — Proposition
Trois options de mise en service, et celle que nous recommandons
Le contrat HTTP est le même dans les trois cas : seule l'image déployée change. Ce qui les distingue, c'est ce qu'on obtient en sortie — et ce qu'on paie pour l'obtenir.
A · CED seul, binaire recommandé
Ce qu'on obtient — un score « pleur / pas pleur » sur une fenêtre de 3 s d'un seul tenant. 0,57 % de déclenchement sur les sons de chambre à 90 % des pleurs attrapés, ~9 ms par décision.
Ce qu'on paie — aucune information sur ce que c'était quand ce n'est pas un pleur. Une fausse alarme reste un nombre.
Aucun réentraînement, premier sur les deux corpus, le seul dont le seuil se transfère à peu près. C'est le meilleur rapport résultat/risque disponible aujourd'hui.
B · Fusion CED + YamNet
Ce qu'on obtient — −19 % de fausses alarmes à rappel égal par rapport à A, pour +2 ms. Le meilleur chiffre brut de tout le projet.
Ce qu'on paie — la règle est une moyenne des rangs : il faut maintenir une table score → percentile par modèle, recalculée à chaque changement de modèle ou de durée. Et le gain n'est mesuré que sur le corpus de bébés, avec un seuil ajusté de façon optimiste.
À valider avant de s'engager : rejouer la fusion sur les sons de chambre, en validation croisée par sujet. Quelques heures de calcul, pas un chantier.
C · MS-CLAP multi-classe
Ce qu'on obtient — la seule sortie qui nomme : babillage, gazouillis, grognement, porte, animal. C'est ce que la cible produit décrit, et c'est ce qui rend une erreur corrigeable.
Ce qu'on paie — 7 secondes d'audio imposées (incompatible avec la cible < 3 s), 62 ms par décision, et 9,7 % de déclenchement sur les sons de chambre : 17 fois A.
Non déployable comme détecteur en l'état. Mais à garder en second étage hors chemin critique : CED déclenche, MS-CLAP qualifie — le coût et la latence ne sont alors plus payés qu'en cas d'alarme.
Recommandation : déployer A maintenant, instrumenter, et garder B et C comme améliorations mesurables. Le vrai sujet n'est pas lequel des trois — c'est que les trois se règlent sur des données que nous n'avons pas encore.
Le seuil ne peut pas être « fixé sur FSD50K », et il faut le dire
FSD50K a 60 pleurs à étiquettes faibles : il fixe une part de fausses alarmes par classe de son, il ne peut pas fixer un rappel. Et un seuil ne se transporte ni d'un corpus, ni d'une durée d'écoute, ni d'un bébé à l'autre.
Le point de fonctionnement livrable est donc un couple : rappel mesuré sur le corpus de bébés, taux de fausses alarmes mesuré sur les sons de chambre. Les deux ensemble, jamais l'un à la place de l'autre.
Une boucle de retour, réservée aux beta-testeurs
Deux boutons sur chaque alerte : c'était un pleur / ce n'en était pas un. Un panel restreint, pour savoir qui annote et pouvoir recouper.
Elle produit les étiquettes sur les vrais sons du produit, le comptage d'événements sonores par nuit qui manque à la diapositive 4, et le premier chiffre comparable au F1 de la littérature.
Le biais à connaître : elle ne voit que ce qui a déclenché. Elle mesure les fausses alarmes, jamais les pleurs ratés — qui restent à mesurer hors ligne. C'est précisément pourquoi le seuil part sur un rappel élevé.
09 — La décision demandée
Quatre décisions, et ce qu'elles débloquent
Rien de ce qui suit n'attend un nouveau modèle. Trois de ces quatre décisions sont des arbitrages produit, et la quatrième tient en une journée d'ingénierie.
| Décision | Qui tranche | Effort | Ce que ça débloque |
|---|---|---|---|
| Déployer CED derrière l'API, à la place de MS-CLAP | Technique | ~1 jour | Le facteur 17 sur les fausses alarmes, immédiatement. Réversible. |
| La durée d'écoute : 3 s ou 5 s | Produit | arbitrage | 3 s coûte ~40 % de fausses alarmes en plus que 5 s (16,4 % contre 11,7 % au réglage retenu). Le coût est chiffré, la contrepartie côté usage ne l'est pas — c'est un choix, pas un calcul. |
| Lancer la réannotation : 200 extraits en 3 catégories | Produit + Technique | ~17 min d'écoute | Un taux d'erreur d'étiquetage mesuré au lieu d'un signal sur 10 clips. Condition d'entrée de tout réentraînement. |
| Ouvrir la boucle de retour à un panel beta | Produit + Juridique | à cadrer | Le nombre d'événements sonores par nuit, les fausses alarmes réelles, et le premier corpus à l'acoustique du produit. |