BarkDog 1.0, un Raspberry Pi qui tient le journal des nuisances sonores

Posté par  . Édité par Anonyme et Ysabeau 🧶. Modéré par Ysabeau 🧶. Licence CC By‑SA.
Étiquettes :
38
20
oct.
2026
Matériel

BarkDog est un logiciel libre, sous licence MIT, qui transforme un Raspberry Pi et un micro USB en enregistreur de nuisances sonores. Une IA qui tourne sur la carte reconnaît aboiements, hurlements, musique ou travaux, et ne garde que les épisodes, horodatés et scellés par une empreinte SHA-256. Les voix humaines sont rendues muettes par défaut, et aucun son ne part sur Internet.

La version 1.0 vient de sortir.

Pourquoi

Quand une nuisance sonore se répète la nuit, la première chose qu’on vous demande est un relevé : quels jours, à quelle heure, combien de temps. Le tenir à la main est épuisant, et un dictaphone qui tourne toute la nuit produit des heures d’audio que personne n’écoute. BarkDog fait ce tri tout seul.

Fonctionnement

  1. Le Pi écoute en continu, à 16 kHz, avec un filtre coupe-bas contre le ronflement électrique.
  2. Toutes les demi-secondes, le modèle YAMNet de Google (521 classes de sons AudioSet, au format TensorFlow Lite) attribue un score à chaque nuisance choisie.
  3. Au-delà du seuil, un épisode commence, avec les dix secondes qui précèdent. Il se termine après un calme réglable.
  4. Le fichier WAV reçoit une chronologie par catégorie et une empreinte SHA-256, inscrite dans un journal CSV qui n’est jamais réécrit.

Tout tourne sur la carte. Un Raspberry Pi Zero 2 W suffit ; les Pi 3, 4 et 5 conviennent aussi.

Treize nuisances sont proposées (aboiements, hurlements, coqs, chats, musique, basses, travaux, pétards, tondeuses, deux-roues, alarmes, klaxons…), avec un seuil par nuisance si besoin. Des « sons à ignorer » annulent une détection quand ils dominent : les canards, par exemple, sont souvent confondus avec des aboiements.

Vie privée

Enregistrer les paroles d’autrui sans leur consentement est interdit (article 226-1 du Code pénal). Dès que l’IA entend une voix, BarkDog efface ce passage du fichier, avec de courts fondus, et le signale sur la frise. On peut aussi choisir d’écarter complètement un épisode composé surtout de parole.

La page web

Une page en Python pur, sans framework, sert de tableau de bord depuis un téléphone :

  • écoute de chaque épisode, avec une frise par catégorie et des boutons pour sauter au bon moment ;
  • journées repliables, filtres jour ou nuit, graphique par jour, exports CSV ;
  • annotations (faux positif, notes) stockées à part, corbeille ;
  • mode test qui affiche les scores de l’IA en direct, pour régler les seuils sans rien enregistrer ;
  • interface en français et en anglais.

Côté sécurité : mot de passe haché en PBKDF2, sessions signées, protection anti-CSRF, CSP stricte, services systemd cloisonnés (l’enregistreur n’a même pas accès au réseau). La page est prévue pour le réseau local ou un VPN, pas pour une exposition directe sur Internet.

Ce que ce n’est pas

Les niveaux sont relatifs et le micro n’est pas calibré : ce n’est pas un sonomètre, et le journal ne remplace pas un constat de commissaire de justice. C’est un outil pour objectiver la répétition et les horaires, et pour arriver devant un conciliateur ou un propriétaire avec autre chose qu’une impression.

Installation

Sur Raspberry Pi OS 64 bits, avec un micro USB :

git clone https://gitlab.com/lbstephane/barkdog.git ~/barkdog
cd ~/barkdog && ./install.sh

Le script installe les dépendances et le modèle, règle l’heure, demande le mot de passe de la page et crée les deux services.

Contribuer

Le développement se fait sur GitLab, avec un miroir sur GitHub. Les retours, tickets et contributions sont les bienvenus, en particulier sur les micros qui fonctionnent bien en extérieur et sur la qualité de détection selon les environnements.

Aller plus loin

  • # Questions

    Posté par  . Évalué à 3 (+4/-1).

    Bonjour, et merci pour le partage ! C'est 1 projet qui peut s'avérer bien utile. Quelques questions : avez-vous des modèles de micro à recommander ? Avez-vous mesuré la consommation électrique du pi avec ce programme ?
    Et avez vous dans votre roadmap une api pour une intégration, par exemple :) , dans home assistant ?
    J'essayerai de tester prochainement

    • [^] # Re: Questions

      Posté par  . Évalué à 3 (+4/-1).

      Bonjour et merci pour votre commentaire ;)

      J'utilise un micro cravate à 10€ acheté sur un site bien connu :p

      Pas de recommandations particulières pour le moment, mais je vais essayer d'en tester plusieurs et les ajouterai dans la doc du projet si cela s'avère concluant.

      L'api j'y pense pour une prochaine version, une intégration à Home Assistant pourrait en effet être sympa, mais aussi pourquoi pas pour une app mobile native par exemple.

      Encore merci et regardez régulièrement, j'ai déjà fait une version 1.1 avec les premiers commentaires recueillis sur LinkedIn :)

      Bonne journée.
      Stéphane

    • [^] # Re: Questions

      Posté par  . Évalué à 3 (+3/-0).

      Pardon, j’ai oublié la consommation : je ne l’ai pas encore mesurée précisément. L’analyse tourne en continu, mais YAMNet est léger : on doit rester autour de 1 à 1,5 W sur un Pi Zero 2 W et de 2 à 3 W sur un Pi 3. Je vérifierai avec un wattmètre USB et je mettrai les chiffres dans la doc.

    • [^] # Re: Questions

      Posté par  . Évalué à 4 (+3/-1).

      Autre question. En dehors du site web, quel pourcentage du code est généré par IA ?

      • [^] # Re: Questions

        Posté par  . Évalué à 4 (+4/-0).

        Bonne question, et je préfère être transparent : Une bonne partie du code a été écrite par une IA (Claude), sous ma direction, pour la bonne raison qu'il fallait du python et que je dev plutôt en ruby, typescript ou en swift. J'aurais aussi pu tenter le rust.

        Le besoin, les choix de conception (tout en local, voix masquées par défaut, journal jamais réécrit, chaînage des empreintes, utilisation de Yamnet, verrous de sécurité), le modèle de menace et les tests sur le vrai matériel, de nuit et avec de vrais aboiements, viennent de moi.

        Côté filet de sécurité : 43 tests automatisés dans la CI, et une analyse CodeQL et Semgrep à chaque push.

        Le code est sous licence MIT et entièrement lisible, donc les relectures critiques sont les bienvenues, c’est aussi pour ça que je l’ai publié.

        Transparence totale :)

        • [^] # Re: Questions

          Posté par  . Évalué à 2 (+2/-2).

          Et en ce qui concerne la dépêche et tes commentaires?

          Je trolle dès quand ça parle business, sécurité et sciences sociales

          • [^] # Re: Questions

            Posté par  . Évalué à 3 (+3/-0).

            Commentaires 100% humains, pour le dépêche 80 / 20, j'ai juste reformulé et restructuré via IA parce que des fois je n'étais pas toujours clair. Mais c'est un humain derrière, je n'aurais pas proposé de dépêche sinon, même si j'ai vu ton commentaire sur le nb de dépêche via IA.

          • [^] # Re: Questions

            Posté par  . Évalué à 1 (+0/-1).

            Les commentaires sont écrits par un humain, c'est clair. La dépêche peut-être aussi (au moins en partie). Mais je suis perplexe sur l'accueil reçu ici par rapport à d'autre trucs vibe-codés postés par des comptes nouvellement créés…

            • [^] # Re: Questions

              Posté par  . Évalué à 0 (+0/-0). Dernière modification le 22 octobre 2026 à 08:52.

              C'est à dire ? mal reçu ? Trop bien reçu ? Parce que ya pas 400 commentaires non plus :p

              • [^] # Re: Questions

                Posté par  . Évalué à 4 (+4/-0).

                Et si c'est par rapport à la note de pertinence, si le projet est utile, bien fait et partagé, en quoi ça le rend moins pertinent si il est en partie vibe codé ? Au début je l'ai fait pour moi, et puis je me suis dis que ça pouvait servir, j'ai regardé le modèle Yamnet et j'ai ajouté d'autres sources de nuisances et j'ai voulu en faire profiter les personnes qui sont dans ma situation.

            • [^] # Re: Questions

              Posté par  . Évalué à 4 (+4/-2).

              Vite lu ça peut passer et c'est publié en dépêche.

              Par contre, en prenant un peu de temps on retrouve le style LLM.

              Pour ma part, sur le fond, je trouve l'idée pas mal. Mais faire coder par un LLM dans un langage de programmation qu'on ne maîtrise pas me semble un peu périlleux comme exercice. Surtout en demandant des relectures du code. Et plus généralement, j'ai toujours un doute sur la maintenance long terme de ce genre de projet.

              Bref, occasion manquée d'apprendre un nouveau langage avec ce projet?

              Je trolle dès quand ça parle business, sécurité et sciences sociales

              • [^] # Re: Questions

                Posté par  . Évalué à 4 (+4/-0).

                L'un n'empêche pas l'autre, justement utiliser le LLM m'a permis de comprendre les bases de python et m'apercevoir des similitudes avec Ruby que je maitrise (plus dans sa version OnRails à l'époque mais bon …) Le code actuel est scanné par codeQL et Semgrep et mon métier c'est la cybersécurité donc de ce côté, tu peux être rassuré.

                Perso, ma façon d'utiliser le LLM est de ne pas le laisser coder sans rien comprendre, je suis quelqu'un qui aime apprendre tout le temps, donc, il m'aide à structurer, je demande de coder une fonction mais pas directement dans le fichier, je regarde j'analyse et j'implémente, c'est ce qui me permet d'apprendre. Pour les trucs basiques ou l'interface, je le laisse faire (les interfaces c'est pas mon fort), du coup, c'est assez complémentaire et clairement j'ai fait en 3 ou 4 jours ce que j'aurais mis plusieurs semaines à faire.

                Après c'est ma vision, chacun a la sienne et je respecte !

                En tout cas merci pour ton intérêt.

            • [^] # Re: Questions

              Posté par  . Évalué à -3 (+1/-6). Dernière modification le 22 octobre 2026 à 10:26.

              Ce que dit Pangram sur l'article et plus de la moitié du post

              100%
              of this text is AI

              PS: vraiment?

              • [^] # Re: Questions

                Posté par  . Évalué à 6 (+8/-2).

                Ouais, on sait à quel point c'est fiable :D

                Et puis, je ne vise pas un prix Goncourt hein ?

                Je l'ai dis, j'ai rédigé la dépêche et je l'ai passé dans Claude pour reformuler et mieux structurer il est où le problème ?

                Bref …

                • [^] # Re: Questions

                  Posté par  . Évalué à -2 (+2/-6).

                  Ouais, on sait à quel point c'est fiable :D

                  Effectivement il n'est plus à démontrer qu'à l'heure actuelle c'est un outil fiable pour détecter les contenus générés pa IA.

                  il est où le problème ?

                  Je crois que cela a été expliqué à maintes reprises dans de précédents journaux et dépêches…

        • [^] # Re: Questions

          Posté par  . Évalué à 0 (+3/-5).

          Transparence totale :)

          La transparence totale eut été de l’annoncer dans la depêche : le code et le texte de cet article sont en grande partie générés par IA.

  • # Merci pour l'idée et la mise en oeuvre

    Posté par  . Évalué à 2 (+3/-1).

    J'ai actuellement un rpi zero 2W et un micro AudioMoth v1.2 pour capter et diagnostiquer (sur un serveur autre) les chants d'oiseaux. Je vis non loin d'un lieu de passage (petits avions et voitures). Cela peut, peut-être, faire de la données utiles. En dehors de corrélations, je ne sais pas si on peut trouver de liens évidents avec cet agrégat de données.
    Dans tous les cas, merci du travail effectué et du partage, c'est intéressant comme concept et comme outil.

    • [^] # Re: Merci pour l'idée et la mise en oeuvre

      Posté par  . Évalué à 2 (+3/-1).

      Hello et merci pour ton commentaire.

      Il existe une appli je crois BirdPi pour le chant des oiseaux. Dans ton cas, si tu veux ignorer les bruits d'avions ou autres, tu peux utiliser le modèle que j'utilise qui est Yamnet, c'est une bibliothèque de 521 sons, il te suffit ensuite de les détecter avec un modèle tensorlite et les ignorer, c'est une des bases de mon projet.

      • [^] # Re: Merci pour l'idée et la mise en oeuvre

        Posté par  . Évalué à 1 (+3/-2).

        Je n'étais pas très clair : ce n'est pas pour soustraire mais en complément. Un rpi + micro me permettent actuellement de faire de la science participative sur les oiseaux et les chauves-souris (via BirdNET-Go et BirdWeather).
        Ton projet s'inscrit dans un diagnostic sonore global. Dans ton exemple, c'est pour tenter de prouver une nuisance particulière mais ça peut aussi servir à créer des données sur les nuisances en général dans un quartier.
        Bien sûr, comme pour toute donnée, il faut savoir ce qu'on en fait pour ne pas collecter juste pour collecter (je ne suis pas encore 100% convaincu de la pertinence de diagnostiquer tous chants d'oiseaux de mon jardin).


        Si je peux me permettre une proposition de nouvelle nuisance à détecter : le commentaire anti-IA systématique. ;)

  • # Frigate aussi

    Posté par  (site web personnel, Mastodon) . Évalué à 4 (+2/-0).

    De base un logiciel comme Frigate intègre déjà la reconnaissance des bruits en se basant sur l'IA à partir de ce que captent les caméras de vidéosurveillance ça va de l'aboiement, aux gargouillements d'estomac en passant par les rots jusqu'au yodel ! A partir de là, on peut déclencher des actions.

    https://www.funix.org mettez un manchot dans votre PC

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.