kashish-sachdeva-ds/voiceguard-deepfake-detection

GitHub: kashish-sachdeva-ds/voiceguard-deepfake-detection

基于随机森林的AI生成音频检测系统,通过26维音频特征区分真实人声与Deepfake合成语音,准确率达99.07%。

Stars: 0 | Forks: 0

# 🎙️ VoiceGuard — Deepfake 音频检测 [![Python](https://img.shields.io/badge/Python-3.9+-blue.svg)](https://python.org) [![scikit-learn](https://img.shields.io/badge/scikit--learn-1.3-orange.svg)](https://scikit-learn.org) [![Streamlit](https://img.shields.io/badge/Streamlit-1.25-red.svg)](https://streamlit.io) [![准确率](https://img.shields.io/badge/Accuracy-99.07%25-brightgreen.svg)]() [![许可证](https://img.shields.io/badge/License-MIT-green.svg)]() ## 🔍 概述 VoiceGuard 是一个端到端的机器学习系统,用于检测 AI 生成(Deepfake)的音频与真实人声的区别。随着语音克隆和音频处理工具的兴起,区分真实声音与合成声音已成为网络安全、媒体验证和数字取证领域的一个关键挑战。 本项目涵盖了**完整的数据科学流程** —— 从原始音频特征提取到部署交互式 Web 应用 —— 作为大学监督与无监督学习课程的一部分构建。 ## 🏆 结果 | 模型 | 准确率 | ROC-AUC | 交叉验证分数 | |---|---|---|---| | **Random Forest** ⭐ | **99.07%** | **0.999** | **99.1%** | | Logistic Regression | 90.24% | 0.962 | 90.1% | ## 📊 项目架构 ``` voiceguard-deepfake-detection/ │ ├── notebooks/ │ └── VoiceGuard.ipynb ← Complete ML pipeline (EDA + Models) │ ├── app/ │ └── app.py ← Streamlit web application │ ├── models/ ← Saved trained models (.pkl) │ ├── random_forest.pkl │ ├── logistic_regression.pkl │ ├── kmeans.pkl │ ├── scaler.pkl │ ├── pca.pkl │ └── label_encoder.pkl │ ├── data/ ← Dataset (see setup below) │ ├── AUDIO/REAL/ ← Real human voice clips │ ├── AUDIO/FAKE/ ← AI-generated voice clips │ └── DATASET-balanced.csv ← Pre-extracted features │ ├── requirements.txt └── README.md ``` ## 🧠 使用到的机器学习技术 ### 监督学习 — 语音分类 | 技术 | 目的 | 结果 | |---|---|---| | Logistic Regression | 基线二元分类器 | 90.24% 准确率 | | Random Forest (200 棵树) | 主生产模型 | 99.07% 准确率 | | 5 折交叉验证 | 防止过拟合 | 99.1% CV 分数 | | ROC-AUC 曲线 | 模型对比 | 0.999 AUC | ### 无监督学习 — 语音模式发现 | 技术 | 目的 | 结果 | |---|---|---| | K-Means (K=2) | 发现自然语音聚类 | 与 REAL/FAKE 标签一致 | | PCA (2 个成分) | 降维 + 可视化 | 清晰的聚类分离 | | Elbow Method | 寻找最佳 K 值 | 确认 K=2 | ## 🎵 特征工程 使用 `librosa` 提取 26 个音频特征: | 特征类别 | 特征 | 描述 | |---|---|---| | **频谱** | chroma_stft, spectral_centroid, spectral_bandwidth, rolloff | 频率特征 | | **能量** | rms, zero_crossing_rate | 信号能量和节奏 | | **MFCCs** | mfcc1 → mfcc20 | 语音音色指纹 | ## 📈 可视化 Notebook 生成了 8 张出版物级别的图表: - 类别分布(平衡数据集验证) - 特征分布 — REAL 与 FAKE 对比 - 所有 26 个特征的相关性热力图 - 混淆矩阵 — 两个模型并排显示 - ROC 曲线 — 模型性能比较 - 特征重要性 — 识别出的顶部预测因子 - Elbow Method — 最佳 K 值选择 - PCA 聚类可视化 — 二维语音模式图 ## 🚀 快速开始 ### 1. 克隆仓库 ``` git clone https://github.com/kashish-sachdeva-ds/voiceguard-deepfake-detection.git cd voiceguard-deepfake-detection ``` ### 2. 安装依赖 ``` pip install -r requirements.txt ``` ### 3. 下载数据集 从 Kaggle 下载并放置在 `data/` 文件夹中: 👉 [Deep Voice Deepfake Voice Recognition — Kaggle](https://www.kaggle.com/datasets/birdy654/deep-voice-deepfake-voice-recognition) ``` data/ ├── DATASET-balanced.csv └── AUDIO/ ├── REAL/ └── FAKE/ ``` ### 4. 运行 Notebook ``` jupyter notebook notebooks/VoiceGuard.ipynb ``` 运行所有单元格 —— 这将训练并保存所有模型。 ### 5. 启动 Web 应用 ``` cd app streamlit run app.py ``` 在浏览器中打开 **http://localhost:8501**。 ## 🌐 Web 应用程序 Streamlit 应用提供实时的 Deepfake 检测: - **上传** 任意 `.wav` 音频文件 - **可视化** 波形和 MFCC 热力图 - **预测** REAL 或 FAKE 及其置信度百分比 - **对比** 两个模型的结果 - **检查** 所有 26 个提取的特征值 ## 📦 数据集 **来源:** [Deep Voice Deepfake Voice Recognition](https://www.kaggle.com/datasets/birdy654/deep-voice-deepfake-voice-recognition) — Kaggle | 属性 | 值 | |---|---| | 总样本数 | 11,778 | | REAL 语音 | 5,889 (50%) | | FAKE 语音 | 5,889 (50%) | | 特征 | 26 个预提取的音频特征 | | 格式 | CSV + WAV 音频文件 | | 平衡性 | 完美平衡(无类别偏差) | **语音对象:** Biden, Obama, Trump, Musk, Linus, Margot, Ryan, Taylor **Deepfake 方法:** 对象之间的语音转换(例如 trump-to-obama.wav) ## 🛠️ 技术栈 | 工具 | 版本 | 用途 | |---|---|---| | Python | 3.9+ | 核心语言 | | pandas | 2.0+ | 数据处理 | | numpy | 1.24+ | 数值计算 | | librosa | 0.10+ | 音频特征提取 | | scikit-learn | 1.3+ | ML 模型 + 评估 | | matplotlib | 3.7+ | 可视化 | | seaborn | 0.12+ | 统计图表 | | streamlit | 1.25+ | Web 应用部署 | | joblib | 1.3+ | 模型序列化 | ## 📄 简历亮点 - 构建了端到端的 Deepfake 音频检测流程,在 11,778 个样本上达到了 **99.07% 的准确率** - 使用 librosa 设计了 26 个音频特征(MFCCs、频谱特征);应用了 StandardScaler 预处理 - 对比了 Logistic Regression(基线)与 Random Forest(生产环境),进行了 5 折交叉验证和 ROC-AUC 评估 - 应用 K-Means 聚类 + PCA 在无标签情况下发现自然语音模式片段 - 部署了交互式 Streamlit Web 应用,用于实时 Deepfake 检测,包含波形 + MFCC 可视化 ## 🔮 未来工作 - 添加 XGBoost 和 SVM 以进行进一步的准确率对比 - 在 Web 应用中实现实时麦克风录音 - 在更大数据集上训练(ASVspoof 2019 — 121,000 个样本) - 添加深度学习方法(基于声谱图的 CNN) - 在 Streamlit Cloud 上公开部署 ## 👨‍💻 作者 **Kashish Sachdeva** - GitHub: [@kashish-sachdeva-ds](https://github.com/kashish-sachdeva-ds) ## 📜 许可证 本项目采用 MIT 许可证授权。 ## 🙏 致谢 - 数据集:Kaggle 上的 [birdy654](https://www.kaggle.com/datasets/birdy654/deep-voice-deepfake-voice-recognition) - 音频处理:[librosa](https://librosa.org/) 库 - ML 框架:[scikit-learn](https://scikit-learn.org/)
标签:AI安全, Apex, Caido项目解析, Chat Copilot, Kubernetes, Python, Random Forest, Scikit-learn, Streamlit, 人工智能, 数字取证, 数据科学, 无后门, 无监督学习, 机器学习, 欺骗检测, 深度伪造防御, 深度伪造音频检测, 特征提取, 生物识别安全, 用户模式Hook绕过, 监督学习, 网络安全, 自动化脚本, 访问控制, 语音鉴伪, 资源验证, 逆向工具, 随机森林, 隐私保护, 音频处理