Dans la série des projets domotiques un peu atypiques, en voici un qui mêle machine learning, streaming audio et gallinacés : GallusSense, un système que j’ai développé pour détecter en temps réel les chants de coq.
Pourquoi ?
Les coqs de notre quartier ont un certain succès dans le voisinage ! J’ai eu envie de comptabiliser leurs cris, juste pour le plaisir, et de voir s’il était possible d’en tirer des statistiques intéressantes : heures de chant, fréquence, intensité…
Première approche : BirdNET-Pi
Ma première idée a été d’utiliser BirdNET-Pi, un projet open-source très complet basé sur le modèle BirdNET développé par l’université de Cornell. Il permet de détecter et classifier automatiquement les chants d’oiseaux à partir de flux audio.
🧩 J’ai opté pour la version Docker (plus rapide à déployer sur mon homelab que l’image RPi bare metal), en utilisant un flux RTSP provenant d’une caméra IP Reolink installée dans le jardin.
Adapter BirdNET pour un coq domestique
Le coq domestique est une sous-espèce du coq bankiva, appelée Gallus gallus domesticus. BirdNET s’appuie sur une base de données axée sur les espèces sauvages, et ne distingue pas clairement entre Gallus gallus (le coq bankiva d’Asie du Sud-Est) et sa version domestiquée que l’on connaît dans nos campagnes.
Résultat : comme BirdNET suppose que Gallus gallus est un oiseau sauvage rare en Belgique, il a tendance à rejeter ce type de détection par défaut — même si un coq bien réel (Gallus gallus domesticus) chante à plein poumon dans le quartier.
Pour obtenir des résultats réellement exploitables, j’ai dû ajuster deux paramètres clés dans BirdNET-Pi :
- D’abord, j’ai fixé le Species Occurrence Frequency Threshold à
0.0005
— la valeur minimale possible — pour éviter que BirdNET écarte automatiquement les détections de Gallus gallus, jugées peu probables dans ma région.

- Ensuite, j’ai utilisé une Custom Species List, ne contenant que Gallus gallus (le coq bankiva), afin de filtrer toutes les autres espèces et réduire les faux positifs.

Des résultats prometteurs… mais limités

Résultat : ça marchait, mais pas parfaitement. Tous les chants n’étaient pas détectés, et le taux de confiance dépassait rarement 80 %, même avec un coq bien actif à quelques mètres.

Et surtout, l’interface ne me convenait pas : pensée pour l’observation ornithologique, elle est très complète mais pas vraiment adaptée à la détection d’une seule espèce dans un cadre domestique — encore moins pour un usage un peu ludique ou statistique.
Cela dit, BirdNET-Pi reste un excellent projet, idéal pour identifier les oiseaux présents dans un jardin, et je le recommande sans hésiter à tous les curieux de biodiversité locale.
Créer GallusSense
C’est à ce moment-là que j’ai décidé de développer GallusSense, une solution 100 % dédiée à un seul objectif : détecter les cocoricos en temps réel.
Comment ça fonctionne ?
GallusSense repose sur une architecture simple et locale :
- Il récupère un flux audio en direct (RTSP) depuis une caméra IP ou un micro réseau.
- Il analyse le signal audio en continu à l’aide de la bibliothèque Python
librosa
. - Il en extrait des caractéristiques MFCC (Mel Frequency Cepstral Coefficients), couramment utilisées en reconnaissance audio.
- Il passe ces données à un modèle de machine learning entraîné maison, spécifiquement conçu pour reconnaître les chants de coq.
- Chaque détection est enregistrée dans une base SQLite.
- Le tout est visualisé dans une interface Streamlit, avec statistiques, courbes et visualisations en temps réel.
🎯 Le modèle est rapide, local et bien adapté à mon environnement sonore. Résultat : détections fiables, très peu de faux positifs, et surtout une interface beaucoup plus pertinente pour un usage personnel, simple et visuel.


En savoir plus
Si le projet vous intrigue ou vous amuse autant que moi, tout est disponible ici :
📦 Repository GitHub : github.com/dafal/gallussense
Et pour voir le système en action, je l’ai mis en ligne :
🔎 gallussense.dafriser.be
GallusSense: machine learning, audio streaming… and roosters
Among my more unusual smart home projects, here’s one that combines machine learning, audio streaming, and poultry: GallusSense, a system I built to detect rooster crowing in real time.
Why ?
The roosters in our neighborhood have become a bit of a hit with the locals! I thought it would be fun to keep track of their crowing, just for curiosity’s sake — and maybe pull out some interesting stats: peak hours, frequency, intensity…
First attempt: BirdNET-Pi
My first idea was to try BirdNET-Pi, a well-documented open-source project based on Cornell University’s BirdNET model. It can detect and classify bird sounds from an audio stream.
🧩 I deployed the Docker version (quicker to get up and running on my homelab than the bare-metal RPi image), using an RTSP audio feed from a Reolink IP camera placed in the garden.
Adapting BirdNET to a domestic rooster
The domestic rooster is a subspecies of the red junglefowl, known by its scientific name Gallus gallus domesticus. BirdNET, however, relies on a taxonomy focused on wild species, and doesn’t really distinguish between Gallus gallus(the junglefowl native to Southeast Asia) and the familiar backyard rooster we all know.
As a result, BirdNET assumes Gallus gallus is unlikely to be found in Belgium, and therefore tends to discard any detection by default — even if a very real Gallus gallus domesticus is crowing loudly right outside.
Tuning BirdNET-Pi
To get any usable results, I had to tweak two key parameters:
- I set the Species Occurrence Frequency Threshold to
0.0005
— the lowest value allowed — so BirdNET wouldn’t automatically discard Gallus gallus detections as improbable.

- I also used a Custom Species List containing only Gallus gallus (the red junglefowl), to focus the detection and eliminate background noise from other birds.

Promising results… with limitations
It worked — sort of. Not all crows were detected, and confidence rarely exceeded 80% even with a very vocal rooster just meters.


More importantly, the interface wasn’t ideal: great for ornithology, not so much for tracking a single species or for a playful, home-use case.
That said, BirdNET-Pi is an excellent project for identifying wild birds in your area, and I highly recommend it for garden biodiversity enthusiasts.
Building GallusSense
That’s when I decided to build my own system — GallusSense, focused on one thing only: detecting roosters in real time.
How it works
GallusSense is a lightweight, local solution. It:
- grabs a live RTSP audio stream from an IP camera or network mic;
- processes the audio stream continuously using
librosa
; - extracts MFCC audio features;
- feeds them into a custom-trained machine learning model that recognizes rooster crows;
- logs each detection in a SQLite database;
- displays everything in a Streamlit dashboard, with real-time stats and visualizations.
🎯 The model is fast, local, and tailored to my environment. It gives reliable detections, very few false positives, and a much more usable interface for simple monitoring.


Learn more
If you’re curious (or amused) by the idea, the whole project is on Github:
📦 GitHub repo: github.com/dafal/gallussense
And for a live view of it in action:
🔎 gallussense.dafriser.be
Laisser un commentaire