Skip to content

Eruditi/music_separator_app

Repository files navigation

本地音乐多轨分离工具

一个基于AI模型的本地音频分离桌面应用程序,支持将音频文件分离成多个独立轨道(人声、乐器等)。

应用截图

功能特点

  • 🎵 多轨分离: 支持2、4、6轨分离模式
  • 🤖 AI模型: 使用Demucs模型进行高质量音轨分离
  • 🇨🇳 中文界面: 完全本地化的中文桌面GUI
  • 👁️ 实时预览: 音频波形可视化和处理动画
  • 🔒 本地处理: 所有处理都在本地进行,保护隐私
  • 🎨 主题切换: 支持深色和浅色主题界面
  • 📁 格式支持: MP3、WAV、FLAC、M4A、OGG、AAC、WMA等主流音频格式
  • 性能优化: 支持GPU加速处理,大幅提升分离速度
  • 💾 批量处理: 支持多文件批量分离处理
  • 📊 处理进度: 实时显示分离进度和状态信息
  • 📝 日志记录: 完善的日志系统,便于问题排查
  • ⚙️ 配置持久化: 用户设置自动保存到JSON配置文件
  • 🔍 文件验证: 音频文件预处理验证,防止处理损坏文件
  • 🧹 自动清理: 智能清理临时文件,释放磁盘空间
  • 🎯 进度回调: 音频处理进度实时反馈
  • 🧠 内存优化: GPU内存自动清理,防止内存泄漏

系统要求

  • 操作系统: Windows 10/11 (64位)
  • Python: 3.8+ (推荐3.11)
  • 内存: 8GB+ RAM (推荐16GB+)
  • 显卡: GPU支持 (可选,用于加速处理)
  • 存储: 至少5GB可用空间(用于模型和输出文件)

安装指南

1. 克隆或下载项目

git clone https://github.com/Eruditi/music_separator_app.git
cd music_separator_app

2. 创建虚拟环境(推荐)

python -m venv venv
# Windows
venv\Scripts\activate
# Linux/Mac
source venv/bin/activate

3. 安装依赖

pip install -r requirements.txt

或手动安装核心依赖:

pip install torch torchaudio demucs spleeter tensorflow PyQt5 numpy librosa psutil

4. 首次运行

首次运行时,应用程序会自动下载所需的AI模型,这可能需要一些时间(取决于网络速度)。

python main.py

使用方法

基本使用流程

  1. 启动应用程序

    python main.py
  2. 选择音频文件

    • 点击"选择文件"按钮
    • 或直接将音频文件拖拽到应用程序窗口
  3. 选择分离模式

    • 2轨:人声 + 伴奏
    • 4轨:人声 + 鼓 + 贝斯 + 其他
    • 6轨:人声 + 鼓 + 贝斯 + 钢琴 + 吉他 + 其他
  4. 设置输出目录

    • 选择分离后文件的保存位置
    • 默认保存在原文件同目录下的"separated"子目录
  5. 开始分离

    • 点击"开始分离"按钮
    • 观察处理进度和状态信息
  6. 查看结果

    • 分离完成后,可在输出目录中找到分离后的各个轨道文件

高级功能

  • 模型选择: 在设置中选择使用Demucs或Spleeter模型
  • GPU加速: 在设置中启用GPU加速(需要CUDA支持)
  • 批量处理: 选择多个文件进行批量分离
  • 格式转换: 在设置中选择输出音频格式
  • 预设方案: 提供音质优先、速度优先、平衡模式、人声专用等预设

项目结构

music_separator_app/
├── main.py              # 主应用程序和GUI界面
├── models.py            # 音频分离模型实现
├── config.py            # 配置常量和UI样式
├── utils.py             # 工具函数和日志配置
├── settings_manager.py  # 用户配置持久化管理
├── requirements.txt     # 项目依赖列表
├── README.md           # 项目说明文档
├── .gitignore          # Git忽略文件配置
├── ffmpeg/             # FFmpeg二进制文件
│   └── bin/
├── pretrained_models/   # AI模型存储目录
├── logs/               # 应用程序日志目录
└── __pycache__/        # Python缓存文件

支持的分离模式

Demucs模型

  • 2轨: 人声 + 伴奏
  • 4轨: 人声 + 鼓 + 贝斯 + 其他
  • 6轨: 人声 + 鼓 + 贝斯 + 钢琴 + 吉他 + 其他

技术栈

  • Python 3.x: 主要编程语言
  • PyQt5: 桌面GUI框架
  • PyTorch: 深度学习框架
  • Demucs: Facebook的音乐源分离模型
  • Spleeter: Deezer的分离模型
  • FFmpeg: 音频格式转换和处理
  • NumPy: 数值计算
  • Librosa: 音频分析库

性能优化建议

  1. 使用GPU: 如果有NVIDIA GPU,安装CUDA版本PyTorch可大幅提升处理速度
  2. 内存充足: 确保有足够的RAM,大文件处理需要更多内存
  3. SSD存储: 使用SSD可加快文件读写速度
  4. 关闭其他应用: 处理大型音频文件时关闭其他内存密集型应用

常见问题

Q: 首次启动很慢?

A: 首次启动时需要下载AI模型文件,请耐心等待。模型文件较大(几GB),下载完成后后续启动会很快。

Q: 分离质量不满意?

A: 可以尝试不同的模型(Demucs通常质量更高)或不同的分离模式。另外,原始音频质量也会影响分离效果。

Q: 支持哪些音频格式?

A: 支持MP3、WAV、FLAC、M4A、OGG、AAC、WMA等主流格式。如果遇到不支持的格式,可使用音频转换软件先转换为WAV格式。

Q: 如何提高处理速度?

A: 使用GPU加速、增加RAM、使用SSD存储都可以提高处理速度。

Q: 日志文件在哪里?

A: 日志文件保存在 logs/ 目录下,文件名格式为 music_separator_YYYYMMDD.log

更新日志

v1.5.0 (2026-04-21)

  • Bug修复: 修复 main.pySettingsDialog 类定义缺失的问题,该问题导致设置对话框方法被错误地放在 AudioWaveformWidget 类内部
  • Bug修复: 合并 main.py 中重复的 closeEvent 方法,统一窗口关闭时的状态保存和线程清理逻辑
  • 代码优化: 为 models.py 添加完整的类型注解(Type Hints),提升代码可读性和IDE智能提示
  • 依赖更新: 在 requirements.txt 中添加 typing-extensions 以确保类型注解兼容性
  • 文档完善: 更新模块文档字符串,统一代码注释风格

v1.4.0 (2026-04-21)

  • 添加 .gitignore 文件,优化仓库管理
  • 优化日志系统,支持日志轮转(RotatingFileHandler,10MB×5备份)
  • settings_manager.py 添加完整的类型注解(Type Hints)
  • 完善文档字符串,提升代码可维护性
  • 更新构建日期和版本号

v1.3.0 (2025-04-21)

  • 优化音频分离处理流程,添加5步骤进度报告
  • 重构轨道保存逻辑,提取独立方法
  • 添加GPU内存自动清理,防止内存泄漏
  • 集成设置管理器到主程序
  • 增强音频文件预处理验证
  • 改进错误处理和异常捕获

v1.2.0 (2025-04-21)

  • 添加用户配置文件持久化支持(settings.json)
  • 新增音频文件验证功能,防止处理损坏文件
  • 添加系统信息获取和内存监控
  • 优化内存使用和性能配置
  • 添加临时文件自动清理功能
  • 改进错误处理和日志记录

v1.1.0 (2025-04-21)

  • 优化代码结构,改进异常处理
  • 添加日志文件记录功能
  • 支持更多音频格式(AAC、WMA)
  • 改进模型加载机制
  • 优化UI组件和主题管理
  • 修复已知bug

v1.0.0 (2024-11-24)

  • 初始版本发布
  • 支持多种AI模型和分离模式
  • 实现中文GUI界面
  • 添加深色/浅色主题切换
  • 优化UI布局和交互体验

贡献指南

欢迎提交Issue和Pull Request来改进这个项目!

提交Issue

  • 请详细描述问题或建议
  • 提供系统环境信息
  • 附上错误日志(如果有)

提交Pull Request

  • Fork项目
  • 创建功能分支
  • 提交更改
  • 创建Pull Request

许可证

本项目仅供学习和研究使用。使用的AI模型请遵循其各自的许可证条款。

联系方式

如有问题或建议,请通过以下方式联系:

致谢

  • Facebook AI Research的Demucs模型
  • PyQt5社区
  • 所有为开源音频处理做出贡献的开发者们

About

一个基于AI模型的本地音频分离桌面应用程序,支持将音频文件分离成多个独立轨道(人声、乐器等)。

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages