ClapTrap est une application web qui utilise un modèle de classification audio YAMNet pré-entraîné pour détecter les applaudissements en temps réel à partir de différentes sources audio (microphone local ou flux RTSP). Lorsqu'un applaudissement est détecté, une notification est envoyée via un webhook configurable.
- Python 3.11
- Dépendances listées dans
requirements.txt
+ pytorch Apple Silicon si besoin : pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu - FFmpeg (pour le support RTSP)
- MediaMTX (pour le serveur RTSP)
- Clonez le dépôt et installez les dépendances :
git clone https://github.com/yourusername/claptrap.git
cd claptrap
python3.11 -m venv claptrap
source claptrap/bin/activate
pip install -r requirements.txt
- Configurez le serveur RTSP (optionnel) :
cd mediamtx
./mediamtx
- Lancez l'application Flask :
python app.py
- Ouvrez votre navigateur à l'adresse
http://localhost:16045
Les paramètres sont maintenant automatiquement sauvegardés et validés. Le système inclut :
-
Validation des paramètres avant le démarrage :
threshold
: Seuil de détection (entre 0 et 1)delay
: Délai minimum positif entre deux détections (en secondes)webhook_url
: URL valide commençant par http:// ou https://enabled
: État d'activation pour chaque source
-
Gestion robuste des erreurs :
- Vérification des permissions d'écriture
- Sauvegarde sécurisée avec fichier temporaire
- Restauration automatique en cas d'erreur
- Messages d'erreur explicites
- Gestion des timeouts pour les webhooks
En mode développement :
- Lien "Exécuter les tests" dans le footer
- Tests automatisés couvrant :
- Validation des paramètres
- Opérations sur les fichiers
- Préservation des paramètres lors de l'arrêt
- Test des webhooks
-
Microphone local
- Sélection du périphérique dans l'interface
- Configuration du webhook dédié
- Activation/désactivation indépendante
-
Flux RTSP
- Configuration dans l'interface
- Support de plusieurs flux
- Webhooks configurables par flux
- Activation/désactivation individuelle
-
Sources VBAN
- Support du protocole audio VBAN (Virtual Audio Network)
- Configuration dynamique des sources VBAN
- Gestion des flux audio en temps réel
- Webhooks dédiés par source VBAN
- Activation/désactivation individuelle des sources
- Support de plusieurs sources simultanées
-
Sélectionnez la source audio dans les paramètres :
- Microphone local
- Flux RTSP disponibles
-
Configurez les paramètres de détection :
- Seuil de détection
- Délai entre détections
- URL du webhook
-
Cliquez sur "Démarrer la détection" pour lancer la détection en temps réel.
-
Lorsqu'un applaudissement est détecté :
- Une notification "👏" s'affiche
- Un événement est envoyé au webhook configuré
- Les sons détectés sont listés en temps réel
-
Cliquez sur "Arrêter la détection" pour stopper le processus.
app.py
: Application Flask principale avec gestion des WebSocketsaudio_detector.py
: Module de détection audio avec MediaPipetemplates/index.html
: Interface utilisateur responsivestatic/css/style.css
: Styles de l'interfacestatic/js/modules/
: Modules JavaScript pour la gestion des détections et configurationsstatic/js/modules/detection.js
: Gestion des détections audiovban_manager.py
: Gestion des sources audio VBAN
-
Backend Flask
- Gestion des WebSockets avec Socket.IO
- API REST pour la configuration
- Gestion des sources audio multiples
- Système de notifications en temps réel
-
Détection audio
- Modèle MediaPipe pour la classification audio
- Support multi-sources (microphone/RTSP/VBAN)
- Système de scoring personnalisé
- Gestion des délais entre détections
-
Interface utilisateur
- Design moderne avec thème sombre
- Configuration par cartes
- Visualisation en temps réel des détections
- Test des webhooks intégré
- Indicateurs d'état pour chaque source
Le système envoie une requête POST à l'URL configurée avec gestion des erreurs :
- Retry automatique en cas d'échec
- Timeout configurable
- Test de connexion intégré
- Support SSL/TLS
Format de payload :
{
"source": "microphone",
"timestamp": 1234567890,
"score": 0.95
}
Le système supporte le protocole VBAN (Virtual Audio Network) pour la réception de flux audio en réseau :
- Ajout dynamique de sources VBAN
- Configuration par source :
- Nom de la source
- Adresse IP
- Port d'écoute
- Nom du flux
- URL du webhook
- État d'activation individuel
- Détection automatique des flux
- Gestion de la mémoire optimisée
- Support multi-sources
- Nettoyage automatique des ressources
- Gestion des erreurs réseau
- Reconnexion automatique
- Validation des paramètres réseau
- Vérification des ports
- Gestion des timeouts
- Protection contre les surcharges
Le serveur MediaMTX intégré permet de :
- Capturer l'audio du microphone en flux RTSP
- Gérer plusieurs sources audio simultanément
- Configurer des webhooks par flux
Configuration dans mediamtx/mediamtx.yml
- Vérification automatique avant le démarrage
- Contrôle des valeurs hors limites
- Validation des URLs de webhook
- Test d'accessibilité des webhooks
- Vérification des permissions d'accès audio
- Sauvegarde atomique avec fichiers temporaires
- Gestion des permissions
- Backup automatique des paramètres
- Restauration en cas d'erreur
- Verrouillage des fichiers pendant l'écriture
- Nettoyage automatique des détecteurs
- Libération des ressources audio
- Gestion des timeouts
- Surveillance des performances
Les tests automatisés vérifient :
- La validation des paramètres
- Paramètres requis
- Valeurs limites
- Format des URLs
- Les opérations sur les fichiers
- Permissions
- Corruption de fichiers
- Verrouillage de fichiers
- La préservation des paramètres
- Sauvegarde correcte
- Non-modification lors de l'arrêt