Apprenez à reconnaître le chant des oiseaux avec BalbuCam !

BalbuCam propose de vous faire découvrir la faune proche du nid de Balbuzard d’une façon très originale. Grace au nouveau système audio mise en œuvre dans le cadre de la Saison 3 de BalbuCam et amélioré pour la Saison 4, vous allez entendre une multitude d’oiseaux comme le Verdier d’Europe, la Fauvette à tête noire, la Grive musicienne, le Pinson des arbres, le Pouillot véloce, la Sittelle torchepot, le Troglodyte mignon, et bien d’autres encore. Tous ces chants d’oiseaux, vous avez l’habitude de les entendre, mais la plupart du temps, vous ne savez pas de quelles espèces d’oiseaux il s’agit.

L’équipe de BalbuCam a développé un système permettant d’analyser tous ces chants en temps réel afin de déterminer à quels espèces ils appartiennent. Ainsi dans le  bas de la page du direct vous pouvez  consulter en temps réel la liste des oiseaux reconnus par le système. Pour chaque oiseau reconnu une image est affichée et vous avez la possibilité d’écouter un exemple de chant grâce à la base de chants d’oiseaux proposée par le site xeno-canto.org.

La genèse du projet

L’idée de mettre en œuvre un système de reconnaissance audio sur BalbuCam  est née, dés le démarrage de la Saison 1, au constat des nombreuses questions des utilisateurs concernant les sons perçus autour de l’aire, émis par la faune environnante et principalement par les oiseaux.

Comment le système de reconnaissance audio fonctionne ?

Nous avons soumis des extraits sonores de chants d’oiseaux à un logiciel d’apprentissage automatique (Machine Learning). Ce logiciel a appris par lui même à classer les extraits sonores des chants d’oiseaux. L’algorithme de classification utilisé est Rotation Forest (décrit par Juan J. Rodriguez, Ludmila I. Kuncheva, Carlos J. Alonso en 2006). Nous avons choisi l’implémentation de Rotation Forest proposée dans le logiciel Weka. Weka est un logiciel open Source développé en langage Java par l’université de Wellington en Nouvelle-Zélande, c’est aussi le nom d’une espèce d’oiseau endémique de Nouvelle-Zélande.  

Le modèle a été entraîné afin de  reconnaître aussi les bruits environnants (vent, pluie, avions, …) et diminuer ainsi les erreurs de reconnaissance.

Voici les principes de fonctionnement de notre système:

1- Prise de son sur le site de nidification

La prise de son utilisée pour la reconnaissance sonore des oiseaux est réalisée par un microphone externe. Son bruit interne est très faible et  sa fréquence d’échantillonnage est élevée (adaptée à l’analyse des chants d’oiseaux). Il a été placé en bas du nid (qui est situé à 30 mètres de haut) et permet d’enregistrer le concert forestier. Le principe utilisé est celui des disques vinyle des années 1970 : le chant est gravé sur une piste audio et les sons des instruments sur une autre piste, l’ensemble crée un son stéréo. Dans notre dispositif, les sons générés par les deux microphones (de la caméra et externe) produisent un son stéréo (avec un casque, on entend à gauche le son provenant du microphone externe et à droite celui issu du microphone de la caméra). Une partie du bruit est supprimé à l’aide d’un logiciel qui applique un filtre passe-haut, la piste audio est réencodée avec un codec AAC (Advanced Audio Codec) en stéréo, la piste audio est « injectée » dans le flux vidéo qui utilise le codec H264, et le flux est transmis sur le serveur de « streaming » (flux en direct) à l’aide du protocole RTMP.

2- Extraction de la piste audio sur le serveur de « streaming »

Lorsque la vidéo est transmise sur le serveur de streaming, la partie audio, et plus précisément le canal correspondant au micro externe, est extraite et convertie au format WAV, qui peut ensuite être exploité par le système de traitement du signal décrit ci-dessous.

3- Traitement du signal audio

Un traitement du signal est appliqué au flux audio car le format brut ne peut pas être analysé directement : il s’agit de transformer le flux audio brut en spectres de fréquences à l’aide d’une implémentation logicielle des transformées de Fourier ( du célèbre mathématicien français Joseph Fourier).

Ci dessous le spectre de fréquences obtenu à partir d’un enregistrement du chant  d’une mésange charbonnière:

Une fois le flux audio transformé en spectrogrammes, les séquences ne  contenant pas un niveau sonore suffisant sont supprimés et les autres sont agrégés afin d’améliorer les performances de l’apprentissage automatique (Machine Learning). Une dernière étape concernant le traitement du signal audio consiste à normaliser les agrégations obtenus.

4- classification du signal audio reçu

Une fois le signal reçu et traité en temps réel, il est soumis à notre logiciel d’apprentissage automatique qui va donner pour chaque oiseau identifiable un score. Plus le score est haut et plus la probabilité pour qu’il ait été identifié correctement est forte. A partir des scores obtenus on applique une dernière étape de filtrage qui consiste à supprimer les oiseaux dont les scores ne sont pas assez élevés et ne garder que les deux espèces ayant le meilleur score.

5- Affichage des résultats

Les oiseaux identifiés dans le flux audio sont insérés dans un serveur de cache. L’interface graphique de BalbuCam, créé sous WordPress, interroge en continu ce serveur à l’aide d’un WebService et affiche en ligne les informations concernant les oiseaux identifiés (nom, nom scientifique, image et exemple de chant).

Quels sont les oiseaux actuellement reconnus ?

Voici la liste des oiseaux présents dans la base que le système peut actuellement reconnaître :

  • Accenteur mouchet
  • Buse variable
    Chouette hulotte
  • Coucou gris
  • Corbeau freux
    Corneille noire
  • Choucas des tours
  • Étourneau sansonnet
    Fauvette à tête noire
    Geai des chênes
    Grimpereau des jardins
    Grive draine
    Grive musicienne
    Grosbec casse-noyaux
    Loriot d’Europe
    Martinet noir
    Merle noir
    Mésange à longue queue
    Mésange bleue
    Mésange charbonnière
    Mésange nonnette
    Moineau friquet
    Mouette rieuse
    Pic épeiche
    Pic vert
    Pie bavarde
    Pigeon colombin
    Pigeon ramier
    Pinson des arbres
    Pouillot véloce
    Roitelet huppé
  • Roitelet triple-bandeau
    Rougegorge familier
    Rougequeue à front blanc
    Rougequeue noir
    Sittelle torchepot
    Troglodyte mignon
    Verdier d’Europe

Cette liste va être enrichie tout au long de la saison, et nous espérons être en mesure de reconnaître 100 espèces d’oiseaux à la fin de la saison .

Quel est l’efficacité du système de reconnaissance?

Les tests que nous avons réalisé montrent que nous obtenons un taux de reconnaissance d’environ 85%, variable en fonction des espèces. Ce taux de reconnaissance devrait être amélioré pendant la saison grâce à l’utilisation des enregistrements audio qui vont être réalisés sur le site.

A noter que l’efficacité du système décroit avec l’augmentation de l’intensité des bruits extérieurs (vent, avions, circulation, …) .

Et ensuite, à quoi d’autre pourrait servir ce système  ?

On pourrait facilement coupler le système audio à un système de statistiques, afin de par exemple créer un indicateur de biodiversité à partir de toutes les espèces reconnus.  Ou pourrait aussi détecter et signaler la présence d’une espèce rare.

Est-ce que le système de reconnaissance audio est « open source »?

Le code source du système de reconnaissance audio est publié sous licence opensource (GPL V3.0)  à l’adresse suivante https://github.com/openSoundID

Références:

Dan Stowell​, Mark D. Plumbley:
Automatic large-scale classification of bird sounds is strongly improved by unsupervised feature learning

James Lyons :  http://www.practicalcryptography.com/miscellaneous/machine-learning/guide-mel-frequency-cepstral-coefficients-mfccs/

Bienvenue sur le site d'observation du Balbuzard pêcheur