AI tarafından üretilen müziklerle insan yapımı müzikleri ayırt eden makine öğrenmesi sistemi.
- Vocal Separation: Sözlü müziklerden vocal'i ayırıp sadece melodi analizi
- Deep Feature Extraction: 60+ özellik çıkarma (tempo, pitch, harmony, spectral, timing vb.)
- Multiple ML Models: Random Forest, XGBoost, SVM, Neural Network ve Ensemble
- Detailed Analysis: Her müziği detaylı analiz edip AI vs Human farkları gösterir
- Minimal API: Test için basit FastAPI endpoint
Music-AIDetector/
├── backend/
│ ├── app/
│ │ ├── vocal_separator.py # Demucs ile vocal ayırma
│ │ ├── feature_extractor.py # Feature extraction (60+ özellik)
│ │ ├── dataset_processor.py # Veri seti işleme pipeline
│ │ ├── detailed_analyzer.py # Detaylı analiz ve rapor
│ │ ├── model_trainer.py # Model eğitimi (5 farklı algoritma)
│ │ ├── predictor.py # Tahmin yapma
│ │ └── api.py # Minimal FastAPI
│ ├── data/
│ │ ├── raw/
│ │ │ ├── ai_generated/ # AI müzikler buraya
│ │ │ └── human_made/ # İnsan müzikleri buraya
│ │ ├── processed/ # İşlenmiş features
│ │ ├── models/ # Eğitilmiş modeller
│ │ └── analysis/ # Detaylı analiz raporları
│ ├── temp/ # Geçici dosyalar
│ └── uploads/ # API upload'ları
└── requirements.txt
# Python 3.8+ gerekli
python -m pip install -r requirements.txtpip install demucs100 AI + 100 Human müzik toplayın:
AI Müzik Kaynakları:
- Suno AI (suno.ai)
- Udio (udio.com)
- Meta MusicGen
- AIVA (aiva.ai)
- Soundraw (soundraw.io)
Human Müzik Kaynakları:
- Spotify playlists (indie/underground)
- SoundCloud
- Bandcamp
- YouTube (orijinal kompozisyonlar)
Dosyaları yerleştirin:
backend/data/raw/ai_generated/ ← AI müzikleri buraya (.mp3, .wav)
backend/data/raw/human_made/ ← İnsan müzikleri buraya
Önce her müziği detaylı analiz edin, AI vs Human farkları görmek için:
cd backend/app
python detailed_analyzer.pyBu:
- Her parçayı vocal'lerden ayırır
- 60+ özellik çıkarır
- AI vs Human karşılaştırmalı rapor oluşturur
- Görselleştirmeler yapar
- Text rapor oluşturur
Çıktılar:
backend/data/analysis/detailed_analysis_*.json- Her track'in detaylı analizibackend/data/analysis/comparison_report_*.json- Karşılaştırma istatistikleribackend/data/analysis/analysis_report_*.txt- İnsan okunabilir raporbackend/data/analysis/feature_comparison_*.png- Box plotsbackend/data/analysis/correlation_heatmap_*.png- Correlation heatmaps
Analizden sonra, modeli eğitmek için veri setini işleyin:
cd backend/app
python dataset_processor.pyBu:
- Tüm müziklerden vocal'leri ayırır
- Feature extraction yapar
- CSV formatında kaydeder
Çıktı:
backend/data/processed/features.csv- Tüm featuresbackend/data/processed/metadata.json- Dosya bilgileri
5 farklı algoritma dener ve en iyisini seçer:
cd backend/app
python model_trainer.pyEğitilen Modeller:
- Random Forest
- XGBoost
- SVM
- Neural Network
- Ensemble (Voting)
Çıktı:
backend/data/models/latest_model.pkl- En iyi modelbackend/data/models/latest_scaler.pkl- Feature scalerbackend/data/models/metadata_*.json- Model bilgileribackend/data/models/feature_importance.png- Önemli özellikler
Yeni bir müzik dosyasını test edin:
cd backend/app
python predictor.py path/to/music.mp3Örnek Çıktı:
============================================================
PREDICTION EXPLANATION
============================================================
File: unknown_song.mp3
Prediction: AI
Confidence: 87.34%
- AI probability: 87.34%
- Human probability: 12.66%
Top 10 Contributing Features:
tempo_stability : 0.0023 (importance: 0.0845)
pitch_std : 12.3456 (importance: 0.0782)
semitone_deviation : 3.4567 (importance: 0.0721)
...
============================================================
Minimal API başlatın:
cd backend/app
python api.pyTest:
curl -X POST "http://localhost:8000/predict" \
-F "[email protected]"tempo: BPMtempo_stability: Tempo ne kadar stabil (AI'da çok düşük)tempo_variance: Tempo varyasyonutempo_cv: Coefficient of variationonset_variation: Onset strength variationnum_beats: Beat sayısı
pitch_std: Pitch standart sapması (AI çok düşük)pitch_variance: Pitch varyansısemitone_deviation: Semitone'dan sapma (AI çok düşük)vibrato_strength: Vibrato gücü (Human'da yüksek)chroma_std/mean: Harmony özellikleritonnetz_variance: Tonal space variance
spectral_centroid_mean/std: Brightnessspectral_rolloff_mean/std: Frequency rolloffspectral_contrast_mean/std: Frequency band contrastspectral_flatness_mean/std: Noise vs tonalzcr_mean/std: Zero crossing ratemfcc_0..12_mean/std: Timbre (26 features)
ioi_variance: Inter-onset interval variance (AI'da çok düşük)ioi_cv: IOI coefficient of variationioi_entropy: Timing randomness (Human'da yüksek)num_onsets: Onset sayısı
rms_mean/std/range: RMS energydynamic_range: dB rangepeak_to_avg_ratio: Peak-to-average
hp_ratio: Harmonic/Percussive ratioharmonic_energy: Harmonic component energypercussive_energy: Percussive component energyharmonic_std: Harmonic consistency
- Tempo: Çok stabil, neredeyse hiç varyasyon yok
- Pitch: Mükemmel pitch alignment, vibrato yok
- Timing: Mikro-timing variations yok, çok mekanik
- Spectral: Pattern tekrarları, uniform timbre
- Dynamics: Aşırı compressed veya aşırı wide
- Tempo: Natural variations, "groove" var
- Pitch: İnsan hataları, vibrato var
- Timing: Mikro-timing variations (groove)
- Spectral: Organic, varied timbre
- Dynamics: Natural dynamic range
Tipik performans (100 AI + 100 Human ile):
Random Forest: Accuracy: 0.92, F1: 0.91
XGBoost: Accuracy: 0.94, F1: 0.93
SVM: Accuracy: 0.88, F1: 0.87
Neural Network: Accuracy: 0.91, F1: 0.90
Ensemble: Accuracy: 0.95, F1: 0.94
from feature_extractor import MusicFeatureExtractor
extractor = MusicFeatureExtractor()
features = extractor.extract_all_features("song.mp3")
# Sadece tempo features
tempo_features = extractor._extract_tempo_features(y, sr)from model_trainer import MusicAIDetectorTrainer
trainer = MusicAIDetectorTrainer()
X, y = trainer.load_data()
# Kendi modelinizi ekleyin
from sklearn.ensemble import GradientBoostingClassifier
custom_model = GradientBoostingClassifier()
# ...# Manuel test
python -m demucs --two-stems=vocals test_song.mp3# feature_extractor.py'de sample rate'i düşür
sr=16000 # default 22050 yerine# Önce model eğitin
python model_trainer.py- Minimum veri: 50 AI + 50 Human önerilir, 100+100 ideal
- Vocal separation: İlk çalıştırmada Demucs modelini indirir (~300MB)
- İşlem süresi: Her parça ~30-60 saniye (vocal separation dahil)
- Disk alanı: 100+100 parça için ~10GB (separated stems dahil)
MIT License
Pull request'ler kabul edilir.
Sorular için issue açın.