voice-detection-api / src /test_dsp_adversarial.py
pp22's picture
Upload folder using huggingface_hub
ec06657 verified
Raw
History Blame Contribute Delete
1.87 kB
"""
Stress test DSP model v2 on ElevenLabs samples.
"""
import os
import sys
import glob
import pandas as pd
import joblib
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
from src.features.extract_dsp_v2 import extract_all_features_v2
def main():
model_path = 'models/dsp_model_v2.pkl'
cols_path = 'models/dsp_cols_v2.pkl'
if not os.path.exists(model_path):
print("Model not found.")
return
model = joblib.load(model_path)
feature_cols = joblib.load(cols_path)
test_files = glob.glob('data/ElevenLabs*.mp3') + glob.glob('data/voice_preview*.mp3')
if not test_files:
print("No test files found.")
return
print(f"Testing {len(test_files)} high-quality AI samples (ElevenLabs)...\n")
results = []
for f in test_files:
feats = extract_all_features_v2(f)
if feats is None:
continue
df = pd.DataFrame([feats])
X = df[feature_cols].values
pred = model.predict(X)[0]
prob = model.predict_proba(X)[0]
# 1 is AI, 0 is HUMAN
predicted_class = "AI" if pred == 1 else "HUMAN"
ai_prob = prob[1]
name = os.path.basename(f)[:30] + "..."
results.append({
'file': name,
'prediction': predicted_class,
'confidence_ai': ai_prob
})
marker = "CORRECT" if pred == 1 else "FAILED (Missed AI)"
print(f"{name:35s} -> Predicted: {predicted_class:5s} (AI Conf: {ai_prob:.2f}) {marker}")
correct = sum(1 for r in results if r['prediction'] == 'AI')
total = len(results)
print("\n" + "="*50)
print(f"Adversarial Accuracy: {correct}/{total} ({correct/total*100:.1f}%)")
print("="*50)
if __name__ == "__main__":
main()