Skip to main content

Advanced FLAC authenticity analyzer - Detects MP3-to-FLAC transcodes with high precision

Project description

๐ŸŽต FLAC Detective

Advanced FLAC Authenticity Analyzer - v0.6.7

"Every FLAC file tells a story... I find the truth."

FLAC Detective Console Preview

FLAC Detective is a professional-grade tool for detecting MP3-to-FLAC transcodes with exceptional precision. Using advanced spectral analysis and multi-rule scoring, it achieves 89.1% authentic detection rate with less than 0.5% false positives.

Python Version License Status

โœจ Features

๐ŸŽฏ Advanced 11-Rule Detection System

  • Rule 1: MP3 Spectral Signature Detection (CBR patterns) - Enhanced with 20 kHz exception
  • Rule 2: Cutoff Frequency Analysis vs Nyquist
  • Rule 3: Source vs Container Bitrate Comparison
  • Rule 4: Suspicious 24-bit File Detection
  • Rule 5: High Variance Protection (VBR)
  • Rule 6: High Quality Protection
  • Rule 7: Silence & Vinyl Analysis (3 phases)
    • Phase 1: Dither detection
    • Phase 2: Vinyl surface noise
    • Phase 3: Clicks & pops
  • Rule 8: Nyquist Exception (95% & 90% thresholds)
  • Rule 9: Compression Artifacts Detection
    • Test A: Pre-echo (MDCT ghosting)
    • Test B: High-frequency aliasing
    • Test C: MP3 quantization noise
  • Rule 10: Multi-Segment Consistency Analysis
  • Rule 11: Cassette Detection (authentic analog source protection)

๐Ÿ“Š 4-Level Verdict System

Score โ‰ฅ 86  โ†’ FAKE_CERTAIN โŒ (100% confidence)
Score 61-85 โ†’ SUSPICIOUS โš ๏ธ  (High confidence)
Score 31-60 โ†’ WARNING โšก (Manual review recommended)
Score โ‰ค 30  โ†’ AUTHENTIC โœ… (99.5% confidence)

โšก Performance Optimizations

  • 80% faster than baseline (optimized for large-scale analysis)
  • Smart short-circuits for obvious cases
  • Parallel execution of expensive rules
  • File read caching
  • Progressive analysis (2โ†’5 segments when needed)

๐ŸŽฏ Production Metrics

Metric Result Status
Authentic Rate 89.1% โœ… Excellent
Fake Detection 2.2% โœ… Precise
False Positives < 0.5% โœ… Minimal
Tested Files 817,631 โœ… Large-scale
Performance +80% โœ… Optimized

๐Ÿ› ๏ธ Installation

From PyPI (Recommended)

pip install flac-detective

From Source

# Clone the repository
git clone https://github.com/GuillainM/FLAC_Detective.git
cd FLAC_Detective

# Create virtual environment
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# Install in development mode
pip install -e .

# Install development dependencies
pip install -e ".[dev]"

๐Ÿš€ Usage

Command Line

# Analyze current directory
flac-detective .

# Analyze specific directory
flac-detective /path/to/music

# Generate JSON report
flac-detective /path/to/music --format json

# Verbose output
flac-detective /path/to/music --verbose

# Custom output file
flac-detective /path/to/music --output report.txt

Python API

from flac_detective.analysis.new_scoring import new_calculate_score
from pathlib import Path

# Analyze a file
filepath = Path("/path/to/file.flac")
score, verdict, confidence, reasons = new_calculate_score(
    cutoff_freq=20500,
    metadata={"sample_rate": 44100, "bit_depth": 16, "channels": 2},
    duration_check={"duration": 180.5},
    filepath=filepath
)

print(f"Verdict: {verdict} (Score: {score}/150)")
print(f"Confidence: {confidence}")
print(f"Reasons: {reasons}")

๐Ÿ“– Documentation

๐Ÿ—๏ธ Architecture

src/flac_detective/
โ”œโ”€โ”€ analysis/
โ”‚   โ”œโ”€โ”€ new_scoring/          # Advanced 11-rule scoring system
โ”‚   โ”‚   โ”œโ”€โ”€ rules/            # Individual rule implementations
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ spectral.py   # Rules 1, 2, 8 (with 20kHz exception)
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ bitrate.py    # Rules 3, 4
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ silence.py    # Rule 7
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ artifacts.py  # Rule 9
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ consistency.py # Rule 10
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ cassette.py   # Rule 11
โ”‚   โ”‚   โ”œโ”€โ”€ calculator.py     # Orchestration & optimization
โ”‚   โ”‚   โ”œโ”€โ”€ strategies.py     # Strategy pattern implementation
โ”‚   โ”‚   โ”œโ”€โ”€ models.py         # Data models (with energy_ratio)
โ”‚   โ”‚   โ””โ”€โ”€ verdict.py        # Score interpretation
โ”‚   โ”œโ”€โ”€ spectrum.py           # Spectral analysis
โ”‚   โ””โ”€โ”€ audio_cache.py        # File read optimization
โ”œโ”€โ”€ reporting/                # Report generation
โ””โ”€โ”€ main.py                   # CLI entry point

๐Ÿงช Testing

# Run all tests
pytest

# Run with coverage
pytest --cov=flac_detective --cov-report=html

# Run specific test
pytest tests/test_new_scoring_rules.py -v

Test Coverage: ~85% overall, 100% for critical rules

๐Ÿ“Š How It Works

Detection Process

  1. Spectral Analysis: Extract frequency spectrum and detect cutoff
  2. Rule 8 (First): Apply Nyquist protection before other rules
  3. Fast Rules (R1-R6): Quick checks for obvious cases
  4. Short-Circuit: Skip expensive rules if verdict is certain
  5. Expensive Rules (R7, R9): Deep analysis when needed
  6. Multi-Segment (R10): Validate consistency across file
  7. Verdict: Interpret final score with confidence level

Protection Hierarchy

LEVEL 1: Absolute Protection
โ””โ”€ R8 (95-98% Nyquist): -30 to -50 pts

LEVEL 2: Targeted MP3 320k Protection  
โ””โ”€ R1 Exception (90% Nyquist): Skip 320k detection

LEVEL 3: High Quality Protection
โ”œโ”€ R5 (High Variance): -40 pts
โ”œโ”€ R6 (High Quality): -30 pts
โ””โ”€ R7 (Vinyl/Silence): -50 to -100 pts

LEVEL 4: Dynamic Protection
โ””โ”€ R10 (Segment Inconsistency): -20 to -30 pts

๐ŸŽฏ Use Cases

โœ… Recommended For

  • Collection Cleaning: Remove transcoded files from your library
  • Quality Verification: Validate FLAC authenticity before archiving
  • Batch Processing: Analyze large music libraries efficiently
  • Vinyl Rip Validation: Confirm authentic vinyl sources

โŒ Not Recommended For

  • Lossy Format Analysis: Only works with FLAC files
  • Real-time Processing: Designed for batch analysis
  • Subjective Quality: Detects transcodes, not audio quality

๐Ÿ”ฎ Roadmap

v0.6 (Planned)

  • GUI interface for easier usage
  • Configurable sensitivity presets (Strict/Normal/Aggressive)
  • Per-rule enable/disable options
  • Custom threshold configuration
  • HTML reports with spectrograms
  • Automatic file organization

Future Considerations

  • Support for other lossless formats (ALAC, WAV)
  • Machine learning integration
  • Cloud-based analysis API
  • Music player integration

๐Ÿค Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

๐Ÿ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments

  • Audio analysis community for research on MP3 compression
  • Contributors to NumPy, SciPy, and Soundfile libraries
  • Beta testers who provided valuable feedback

๐Ÿ“ž Support

๐Ÿ“ˆ Project Stats

  • Version: 0.6.7
  • Status: Beta
  • Python: 3.8+
  • License: MIT
  • Detection System: 11 rules with enhanced 20 kHz exception
  • Tested: 817,631 files, 89.1% authentic rate

Made with โค๏ธ for audio enthusiasts

FLAC Detective v0.6.7 - Because your music deserves authenticity

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flac_detective-0.6.8.tar.gz (124.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

flac_detective-0.6.8-py3-none-any.whl (84.5 kB view details)

Uploaded Python 3

File details

Details for the file flac_detective-0.6.8.tar.gz.

File metadata

  • Download URL: flac_detective-0.6.8.tar.gz
  • Upload date:
  • Size: 124.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for flac_detective-0.6.8.tar.gz
Algorithm Hash digest
SHA256 c1d0642fb952e52f24a187c26b2f694a0c5658265177cec502ea7cd9c4ab72c7
MD5 3905c2b796b9b26e9b36a13f22c96a95
BLAKE2b-256 458e9cf8945f3e2f8941de03d495cefb23657795750c2988daec0767aee37661

See more details on using hashes here.

File details

Details for the file flac_detective-0.6.8-py3-none-any.whl.

File metadata

  • Download URL: flac_detective-0.6.8-py3-none-any.whl
  • Upload date:
  • Size: 84.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for flac_detective-0.6.8-py3-none-any.whl
Algorithm Hash digest
SHA256 d110e40e811b8b2f1edef3ace00ce56613eee7afbd6e662ff6460f9eb4430d23
MD5 412485f84d6ff015b87a0a7d2db13ebb
BLAKE2b-256 d418860fdb701017f1d9ec10541934fc9a09629b41439a3d19249bf01a531b60

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page