kashish-sachdeva-ds/voiceguard-deepfake-detection
GitHub: kashish-sachdeva-ds/voiceguard-deepfake-detection
基于随机森林的AI生成音频检测系统,通过26维音频特征区分真实人声与Deepfake合成语音,准确率达99.07%。
Stars: 0 | Forks: 0
# 🎙️ VoiceGuard — Deepfake 音频检测
[](https://python.org)
[](https://scikit-learn.org)
[](https://streamlit.io)
[]()
[]()
## 🔍 概述
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绕过, 监督学习, 网络安全, 自动化脚本, 访问控制, 语音鉴伪, 资源验证, 逆向工具, 随机森林, 隐私保护, 音频处理