Modüler bir ses analizi sistemi: tür (genre) tespiti, orijinal vs. AI karşılaştırması, ve HTML/PDF raporlama. FastAPI + CLI ile çalışır; özellik çıkarımı librosa/torchaudio tabanlıdır, modeller sklearn/LightGBM ile eğitilir.
python -m venv .venv
.venv\Scripts\activate # Windows
pip install -r requirements.txt
Gerekli araçlar: ffmpeg (ses dönüştürme), optional GPU için PyTorch CUDA dağıtımı.
ingestion/ # Yükleme + ön işleme
features/ # Özellik çıkarımı ve embeddingler
models/ # Genre + authenticity modelleri
comparator/ # İstatistiksel karşılaştırmalar
reporting/ # Plotly figürleri + HTML/PDF rapor
api/ # FastAPI servis girişi
cli/ # Komut satırı aracı
config/settings.yaml # Ayarlar
- CLI analiz:
python -m cli.analyze path\to\audio.wav --model-dir models\artifacts --output-dir reports - API:
uvicorn api.main:app --reload --port 8000ardındanPOST /analyzeile dosya yükle. - API cevap şeması:
genrelistesi{label, confidence},authenticity_score,features(özellik sözlüğü),report_path.
- Veri yerleşimi:
data/raw/{genre}/{ai|real}/*.wav. - Özellik çıkarımı:
features.extractor.extract_allkullanarak DataFrame oluşturun (parquet/duckdb önerilir). - Tür modeli:
models.trainer.train_genre_classifier(X, y_genre). - Authenticity modeli:
models.trainer.train_authenticity_classifier(X, y_is_ai). - Modelleri kaydet:
models/trainer.save_model(..., models/artifacts/genre_classifier.joblib)veauth_classifier.joblib.
- Özellik deposu:
python data/build_features.py(girdidata/raw, çıktıdata/processed/features.parquet). - Eğitim:
python models/train.py(girdidata/processed/features.parquet, çıktımodels/artifacts/*.joblib). - Değerlendirme:
python models/evaluate.py(metrikler + HTML raporureports/eval/). - Robustluk:
python data/robustness.py(augmentasyonlarla genre/auth skor stabilitesi, sonuçreports/robustness.csv). - Veri doğrulama:
python data/validate_dataset.py(per-genre AI/real sayıları, eksik klasörleri tespit).
pytest ile temel birim testleri: pytest -q tests.
- Değerlendirme: AUROC/accuracy + genre confusion matrix (heatmap), kalibrasyon eğrisi
reports/eval/evaluation.html. - Robustluk: pitch/time-stretch/noise altında genre ve authenticity skor sapmalarını inceleyin (
reports/robustness.csv). - Veri dengesi: per-genre AI/real dağılımını kontrol edin; gerekirse oversample/augment.
config/settings.yaml üzerinden örnekleme oranı, mel/MFCC parametreleri, model tercihleri ve rapor çıktıları yönetilir. config.settings.get_settings() ile yüklenir.
reporting.report_builder.build_report metrik kartları ve Plotly görsellerini HTML olarak üretir; WeasyPrint varsa PDF de üretir. Çıktılar reports/ altına yazılır.
Tek parça raporunda yer alan görseller:
- Mel-spectrogram (zaman-frekans)
- Waveform ve energy envelope (RMS)
- Spectral centroid zaman serisi
- Chroma energy bar grafiği
- Core feature bar (LUFS, RMS, flatness, H/P ratio, crest factor)
- Embedding için torchaudio paketleri (wav2vec2/hubert/mert) gerekir; yoksa hata mesajı döner.
- PDF için
weasyprintsistem bağımlılıkları (cairo, pango) isteyebilir. - Kod, prod öncesi kalibrasyon/robustluk testleri (pitch/time-stretch, mp3 sıkıştırma) yapılacak şekilde modüler tutuldu.