| # BirdNET Real-Time Detection | |
| Real-time bird species detection using your microphone and the BirdNET ONNX model. | |
| ## Features | |
| π€ **Live Microphone Input**: Continuously captures and analyzes audio from your microphone | |
| π¦ **Real-Time Detection**: Identifies bird species as they sing with configurable confidence thresholds | |
| π **Live Display**: Dynamic terminal interface showing current detections and recent activity | |
| β‘ **Optimized Performance**: Efficient audio processing with rolling buffers and threading | |
| π§ **Configurable**: Adjustable confidence thresholds, update intervals, and display options | |
| ## Installation | |
| ### Manual Installation | |
| Install required packages: | |
| ```bash | |
| pip install sounddevice numpy librosa onnxruntime soundfile | |
| ``` | |
| ## Usage | |
| ### Basic Usage | |
| Start real-time detection with default settings: | |
| ```bash | |
| python realtime_detection.py | |
| ``` | |
| ### Advanced Options | |
| ```bash | |
| # Higher confidence threshold for fewer false positives | |
| python realtime_detection.py --confidence 0.3 | |
| # Show more detections | |
| python realtime_detection.py --top-k 10 | |
| # Faster display updates | |
| python realtime_detection.py --update-interval 0.5 | |
| # Custom model and labels | |
| python realtime_detection.py --model custom_model.onnx --labels custom_labels.txt | |
| ``` | |
| ### List Audio Devices | |
| To see available microphones: | |
| ```bash | |
| python realtime_detection.py --list-devices | |
| ``` | |
| ## Command Line Arguments | |
| - `--model`: Path to ONNX model file (default: `model.onnx`) | |
| - `--labels`: Path to species labels file (default: `BirdNET_GLOBAL_6K_V2.4_Labels.txt`) | |
| - `--confidence`: Minimum confidence threshold (default: 0.1) | |
| - `--top-k`: Number of top predictions to show (default: 5) | |
| - `--update-interval`: Display update interval in seconds (default: 1.0) | |
| - `--list-devices`: List available audio input devices | |
| ## Display Interface | |
| The real-time interface shows: | |
| ### Current Detections | |
| ``` | |
| π¦ Current Detections (Top 5): | |
| ---------------------------------------- | |
| 1. American Robin | |
| ββββββββββββββββββββ 0.8542 | |
| 2. Song Sparrow | |
| ββββββββββββββββββββ 0.3214 | |
| ``` | |
| ### Recent Activity | |
| ``` | |
| π Recent Activity (Last 10): | |
| ---------------------------------------- | |
| 14:25:32 - American Robin (0.854) | |
| 14:25:28 - Song Sparrow (0.321) | |
| 14:25:15 - House Finch (0.287) | |
| ``` | |
| ## Technical Details | |
| ### Audio Processing | |
| - **Sample Rate**: 48kHz (BirdNET requirement) | |
| - **Window Size**: 3 seconds (144,000 samples) | |
| - **Buffer**: 6-second rolling buffer for continuous analysis | |
| - **Processing**: 100ms audio blocks with threaded processing | |
| ### Performance Features | |
| - **Non-blocking Audio**: Uses threading for audio capture and processing | |
| - **Efficient Buffering**: Rolling deque buffer prevents memory buildup | |
| - **Real-time Display**: Separate thread for UI updates | |
| - **Graceful Shutdown**: Ctrl+C handling for clean exit | |
| ### Requirements | |
| - **Python**: 3.7+ (recommended: 3.9+) | |
| - **Audio Input**: Working microphone or audio input device | |
| - **Memory**: ~200MB RAM for model and audio buffers | |
| - **CPU**: Moderate CPU usage for real-time inference | |
| ## Troubleshooting | |
| ### Audio Issues | |
| **No microphone detected:** | |
| ```bash | |
| # List available devices | |
| python realtime_detection.py --list-devices | |
| # Check system audio settings | |
| # Ensure microphone permissions are granted | |
| ``` | |
| **Audio quality issues:** | |
| - Check microphone positioning (closer to birds) | |
| - Reduce background noise | |
| - Adjust confidence threshold | |
| ### Performance Issues | |
| **High CPU usage:** | |
| ```bash | |
| # Reduce update frequency | |
| python realtime_detection.py --update-interval 2.0 | |
| # Increase confidence threshold | |
| python realtime_detection.py --confidence 0.3 | |
| ``` | |
| **Memory issues:** | |
| - Close other applications | |
| - The detector uses fixed-size buffers to prevent memory leaks | |
| ### Detection Issues | |
| **No detections:** | |
| - Lower confidence threshold: `--confidence 0.05` | |
| - Check if birds are actually singing | |
| - Verify microphone is working | |
| **Too many false positives:** | |
| - Increase confidence threshold: `--confidence 0.3` | |
| - Reduce background noise | |
| - Position microphone outdoors | |
| ## Example Sessions | |
| ### Backyard Birding | |
| ```bash | |
| # Conservative detection for mixed environment | |
| python realtime_detection.py --confidence 0.2 --top-k 3 | |
| ``` | |
| ### Bird Walk | |
| ```bash | |
| # Sensitive detection for bird-rich areas | |
| python realtime_detection.py --confidence 0.1 --top-k 8 --update-interval 0.5 | |
| ``` | |
| ### Indoor Testing | |
| ```bash | |
| # High threshold for testing with recorded sounds | |
| python realtime_detection.py --confidence 0.4 --top-k 5 | |
| ``` | |
| ## Tips for Best Results | |
| 1. **Positioning**: Place microphone outdoors or near open windows | |
| 2. **Timing**: Early morning and evening are typically best for bird activity | |
| 3. **Environment**: Quiet locations with minimal human/traffic noise | |
| 4. **Distance**: Microphone should be within 10-20 feet of singing birds | |
| 5. **Weather**: Calm, clear conditions provide best audio quality | |
| ## Stopping Detection | |
| Press `Ctrl+C` at any time to stop the real-time detection and return to terminal. | |
| The detector will display: | |
| ``` | |
| π Detection stopped. | |
| ``` | |