# 音轨分离软件 **Repository Path**: RTplay/track-separation-software ## Basic Information - **Project Name**: 音轨分离软件 - **Description**: 基于 Meta Demucs ​htdemucs_6s​ 模型的桌面音频分离工具,支持把一首歌拆分成 6 条独立音轨(人声 / 吉他 / 贝斯 / 钢琴 / 鼓 / 其他),并可实时混音、调节音量、导出 MP3。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-17 - **Last Updated**: 2026-08-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: python原创应用 ## README # 6轨音轨分离工具 基于 Meta Demucs `htdemucs_6s` 模型的桌面音频分离工具,支持把一首歌拆分成 6 条独立音轨(人声 / 吉他 / 贝斯 / 钢琴 / 鼓 / 其他),并可实时混音、调节音量、导出 MP3。 ![Python](https://img.shields.io/badge/Python-3.10+-blue) ![PyQt6](https://img.shields.io/badge/PyQt6-6.11-green) ![Demucs](https://img.shields.io/badge/Demucs-4.1-orange) ![Platform](https://img.shields.io/badge/Platform-Windows-lightgrey) --- ## 功能特性 - **6 轨分离** — 调用 Demucs `htdemucs_6s` 模型,输出 vocals / guitar / bass / piano / drums / other - **实时混音播放** — 6 条独立音量滑块(0~130%),实时调整并预览 - **进度拖拽** — 播放进度条可拖动 seek,显示当前时间 / 总时长 - **MP3 导出** — 按当前混音参数导出 320kbps 高品质 MP3 - **状态提示** — "未分离 / 分离中… / 分离完成 / 分离失败" 动态文字提示 - **无控制台黑窗** — 打包后的 exe 双击即用,自动设置任务栏图标 ## 截图 > 运行后窗口包含:音频选择 / 分离按钮 + 状态文字 / 6 轨音量滑块 / 播放控制 / 导出按钮 --- ## 环境要求 | 项 | 要求 | |---|---| | 操作系统 | Windows 10 / 11 | | Python | 3.10 ~ 3.12 | | CPU 模式 | 默认 CPU 推理(首次分离较慢,约 1-3 分钟/分钟音频) | | GPU 模式 | 可选 CUDA,修改 `mian6.py` 中 `-d cpu` 为 `-d cuda` | | ffmpeg | 项目已自带 `ffmpeg.exe`(用于 MP3 导出) | --- ## 快速开始 ### 1. 克隆仓库 ```bash git clone cd 音轨分离软件 ``` ### 2. 创建并激活虚拟环境 ```cmd python -m venv venv venv\Scripts\activate.bat ``` ### 3. 安装依赖(二选一) **方式 A:交互式脚本(推荐,带进度和验证)** ```cmd python install_deps.py ``` **方式 B:标准 pip 安装** ```cmd pip install -r requirements.txt ``` > 国内用户如 torch 下载慢,可加镜像: > `pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple` ### 4. 运行 ```cmd python mian6.py ``` --- ## 使用说明 1. 点击 **选择音频文件**,加载 `.mp3` / `.wav` / `.flac` / `.m4a` 2. 点击 **开始分离**,等待状态文字从 `分离中...` 变为 `分离完成` 3. 拖动 6 条音量滑块调整各轨道音量 4. 点击 **播放** 预览混音效果 5. 满意后点击 **导出当前混音音频** 保存 MP3 ### 首次运行说明 - Demucs 会在首次分离时自动下载模型权重到 `~/cache/torch/hub/`(约 80MB) - 如需离线使用,提前把权重放到 `models/demucs/htdemucs_6s/` 目录 --- ## 打包成 EXE 项目自带打包脚本,一键生成单文件 exe: ```cmd REM 1. 生成 spec 配置(可选,已自带 mian6.spec) python build.py --spec-only REM 2. 增量打包(推荐日常使用) python build.py REM 3. 全量打包(修改了依赖或资源后) python build.py --clean ``` 打包产物:`dist\6轨音轨分离工具.exe`(约 264 MB,含 torch + 模型 + ffmpeg) ### build.py 支持的参数 | 参数 | 作用 | |---|---| | (无参数) | 增量打包(默认不清理) | | `--clean` | 清理旧产物(dist/build/__pycache__)后打包 | | `--no-clean` | 显式跳过清理 | | `--check-only` | 仅检查环境,不打包 | | `--spec-only` | 仅生成 spec 文件,不打包 | --- ## 项目结构 ``` 音轨分离软件/ ├── mian6.py # 主程序(注意文件名拼写:mian6) ├── mian6.spec # PyInstaller 打包配置 ├── build.py # 一键打包脚本 ├── build.bat # Windows 批处理打包脚本 ├── install_deps.py # 依赖安装脚本(带验证) ├── requirements.txt # pip 依赖清单 ├── README.md # 本文档 │ ├── app.ico # 应用图标 ├── ffmpeg.exe # MP3 导出用 ffmpeg ├── models/ # Demucs 模型目录 │ └── demucs/htdemucs_6s/ │ ├── output/ # 分离结果输出目录(自动生成) │ ├── main.py ~ main5.py # 历史版本(迭代过程保留) ├── demucstest.py # Demucs 调用测试脚本 │ └── venv/ # 虚拟环境(不入库) ``` --- ## 技术栈 | 层 | 技术 | |---|---| | GUI | PyQt6 | | 音轨分离 | Demucs 4.1 + htdemucs_6s 模型 | | 深度学习 | PyTorch (CPU/CUDA) | | 音频 I/O | soundfile / sounddevice | | 音频编码 | pydub + ffmpeg | | 打包 | PyInstaller | --- ## 常见问题 ### Q1: 分离过程卡住,状态一直是 `分离中...`? - CPU 模式下分离一首 4 分钟的歌通常需要 5~15 分钟,请耐心等待 - 打开任务管理器确认 python.exe 在占用 CPU - 如长时间无变化,查看 `build_log.txt` 排查 ### Q2: 导出 MP3 失败提示 ffmpeg 错误? - 确认项目根目录下有 `ffmpeg.exe` - 或把 ffmpeg 加入系统 PATH,并修改 `mian6.py` 中 `AudioSegment.converter` 路径 ### Q3: 打包后 exe 体积太大(~264MB)? - 主要来自 PyTorch(~800MB 解压后)和 PyQt6 - 如需减小体积,可在 `mian6.spec` 的 `excludes` 中排除更多不需要的模块 - 或改用 onedir 模式(启动更快) ### Q4: 想用 GPU 加速? 修改 [mian6.py](mian6.py) 中分离命令的 `-d cpu` 为 `-d cuda`: ```python sys.argv = [ "separate", "-n", "htdemucs_6s", "--repo", self.repo_path, "-d", "cuda", # 改这里 "-o", self.out_folder, self.audio_path ] ``` 需提前安装 CUDA 版 PyTorch:https://pytorch.org/get-started/locally/ --- ## License 本项目仅供学习和个人使用。Demucs 模型遵循其原始 license,详见 https://github.com/facebookresearch/demucs --- ## 致谢 - [Meta Demucs](https://github.com/facebookresearch/demucs) — 音轨分离核心模型 - [PyQt6](https://www.riverbankcomputing.com/software/pyqt/) — GUI 框架 - [ffmpeg](https://ffmpeg.org/) — 音频编解码