AI 音频检测与修复工具
- AI 检测: 检测音频是否由 AI 生成,支持 v1.0/v1.1/v1.2 三版本算法
- 音频修复: 修复 AI 音频的常见问题(毛刺、撕裂、数字伪影等),支持 v1.0/v1.1/v1.2/v2.0/v2.1 五版本算法
- 智能缓存: 上传层按文件 hash 去重,修复结果按文件+算法+参数三重匹配命中,避免重复上传和冗余计算
- 任务取消: 全栈取消机制(前端按钮 + 后端 cancel_task),卡住任务可随时终止
- 前后对比: 直观对比修复前后的 AI 检测概率变化
- 浏览器处理: 支持纯浏览器端处理,无需上传文件
- 后端处理: 支持 Python 后端高性能处理
- 实时进度: WebSocket 实时推送任务进度,自动降级到 HTTP 轮询
- Android 支持: 通过 Termux 在 Android 设备上运行完整后端
- 前端: React + TypeScript + Vite + Tailwind CSS
- 后端: Python 3.10+ (pyright strict mode 类型检查) + FastAPI + SQLite + WebSocket
- 音频处理: Web Audio API / NumPy + SciPy (librosa 已移除,使用自研 dsp_utils)
- 包管理: uv(桌面端)/ pkg + pip(Android)
- 类型检查: pyright strict mode(核心基础设施),算法模块按需降级
- Node.js >= 18
- Python >= 3.10
- uv(推荐)或 pip
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"npm installnpm run devcd backend
uv venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
uv pip install -r requirements.txt
python main.py后端启动后访问 http://localhost:8000,API 文档 http://localhost:8000/docs
如需使用 PM2 管理后端进程:
# 确保已安装 PM2
npm install -g pm2
# 启动后端(项目根目录)
pm2 start ecosystem.config.cjs
# 查看状态
pm2 status
# 重启
pm2 restart sono-backend
# 停止
pm2 stop sono-backend注意:
ecosystem.config.cjs已从 .gitignore 中移除,请根据需要修改其配置。
npm run build详细指南请参阅 docs/android.md。
- 从 GitHub Releases 下载
release_android.tar.gz - 传输到手机,在 Termux 中执行:
tar -xzf release_android.tar.gz && cd sono-android && bash setup_android.sh- 之后每次启动:
cd sono-android && ./start_android.sh - 手机浏览器访问 http://localhost:8000
npm run build
bash scripts/build_android_release.sh| 特性 | 桌面端 | Android |
|---|---|---|
| 包管理 | uv + venv | pkg + pip(系统级) |
| numpy/scipy | pip 预编译 wheel | pkg 预编译 |
| noisereduce | 可用 | 不可用,回退内置频谱算法 |
| pedalboard | 可用 | 不可用,回退 scipy 滤波算法 |
| librosa | 可用(仅训练) | 不需要,已用自研 dsp_utils 替代 |
| 前端访问 | 开发服务器 | FastAPI 静态文件服务 |
- 上传音频文件(支持 WAV、MP3、FLAC 等格式)
- 查看 AI 检测分析结果
- 选择修复算法版本和修复模式
- 应用修复并对比前后效果
- 下载修复后的音频文件
- v1.0: 基础 AI 检测算法
- v1.1: 多维特征分析 + 混合创作判定
- v1.2: 增强版特征分析,更精准的 AI 检测
- v1.0: 基础修复算法,稳定可靠
- v1.1: 多频段压缩、自适应降噪、响度归一化(pedalboard 可选,缺失时自动降级到 scipy)
- v1.2: 深度学习辅助修复、智能谐波增强、自适应响度优化
- v2.0: 移动端优化版,自适应采样率,频域合并优化
- v2.1: 移动端优化升级版,增强降噪和清晰度
- 上传缓存与修复结果缓存完全解耦:上传层仅按文件 hash 去重,修复结果层按文件+算法+参数三重匹配命中
- 修复默认算法版本硬编码为
v2.0的问题,新用户自动选择后端最新版本 - 修复 Session 持久化不完整问题,浏览器-only 修复结果也能正确保存和恢复
- 新增全栈任务取消机制:前端取消按钮 →
POST /cancel/{task_id}→ 后端cancel_task()+TaskCancelledError - 修复移动端音频导出无反应(Worker 超时保护、AudioContext 恢复、进度反馈)
- 修复导出文件名异常(
<a>元素 + 真实 URL + download 属性) - 修复 AI 检测完成后进度显示残留
- 引入 pyright strict mode,配置 pyproject.toml
- 核心基础设施全量类型注解:database.py / task_manager.py / ws_manager.py / file_cache.py
- 后端 repair params 持久化到数据库,支持修复结果缓存比对
.
├── src/ # 前端源代码
│ ├── components/ # React 组件
│ ├── hooks/ # 自定义 Hooks
│ ├── pages/ # 页面组件
│ ├── services/ # API 服务 + WebSocket
│ ├── utils/ # 工具函数
│ └── workers/ # Web Workers
├── backend/ # 后端源代码
│ ├── api/ # API 路由(含 WebSocket)
│ ├── services/ # 业务逻辑
│ │ ├── ws_manager.py # WebSocket 连接管理器
│ │ └── ... # 音频处理服务
│ ├── training/ # 训练工具
│ ├── requirements.txt # 桌面端依赖
│ └── requirements_android.txt # Android 依赖
├── scripts/ # 开发构建脚本
│ ├── build_android_release.sh # PC端打包Android发布包
│ └── build_android.sh # Termux端完整构建部署
├── deploy/ # 运行时部署脚本(打包进Android发布包)
│ ├── setup_android.sh # Termux 一键部署
│ └── start_android.sh # Termux 启动脚本
├── docs/ # 文档
│ └── android.md # Android 部署详细指南
├── pyproject.toml # Python 类型检查配置 (pyright strict)
├── public/ # 静态资源
└── dist/ # 构建输出
MIT