---
name: fenxuan
description: 本地音频分轨工具「分弦」。当用户想从歌曲中提取人声、制作伴奏，或一次拆出人声、鼓、贝斯、吉他、钢琴和其他器乐时使用。优先音轨清晰度而非数量，并可交付 MP3、WAV 或双格式完整文件名成品。用户导入的音频默认只在本机处理。不用于版权判断，也不承诺每首歌曲都能完全无串音。
---

# 分弦

把一首混在一起的歌，拆回可以单独试听和使用的音轨。

## 先给用户最短答案

- 想去掉人声、做伴奏或练歌：选择「人声 / 伴奏」。
- 想分别调整鼓、贝斯、吉他或钢琴：选择「完整乐器分轨」。
- 不确定选什么：默认选择「人声 / 伴奏」，不要让新手先理解模型或专业术语。

## 直接执行

1. 确认用户提供的是音频文件或本机路径；没有音频且用户只想体验时，使用内置演示曲。
2. 在产品目录双击 `分弦.command`，或运行 `app/start.sh`。
3. 等页面打开后，选择两轨或完整分轨，再选 MP3、WAV 或 MP3 + WAV。
4. 处理完成后，只交付通过信号检查的音轨；文件名必须包含歌曲名和人声、伴奏或对应乐器名。
5. 交付时直接说明生成了哪些文件、各自能做什么，并给出可访问位置；不要只给操作方法。

## 深度交互

只在结果不理想或目标含糊时继续追问：

- 用户真正要的是去人声、做混音、扒带，还是把伴奏继续拆成乐器轨？
- 问题出现在整首歌，还是某一个时间段？
- 用户更在意拿到更多音轨，还是只保留听起来清楚的音轨？

目标清楚但路径过重时，直接建议更短的方案。例如只要伴奏就不跑完整分轨；要乐器轨就从原曲一次拆完，不先生成伴奏，也不要求用户转写或编写提示词。

## 最短处理原则

- 两轨任务只运行人声分离模型。
- 完整分轨只运行六轨模型，不再先拆人声和伴奏。
- 不要求用户转写音符、重建声音、编写提示词或理解模型。
- 六轨是模型的六个固定类别；源音频没有的乐器或过弱结果不会凑数生成。

## 必须守住的边界

- 不上传用户音频，不代替用户发布作品。
- 不判断歌曲版权，也不暗示“可以随意商用”。
- 不把算法结果说成完全准确；贴唱、现场录音、强混响和密集齐奏可能残留串音。
- 信号门槛只能剔除过弱或几乎为空的音轨，不代表真人听感已经证明。
- 不把串音、空轨或模型残影改名成独立乐器。
- 不展示虚构的速度、准确率或质量分数。
- 处理失败时说明失败在哪一步和下一种最短办法，不让用户从头重复描述目标。

## 失败时怎么办

- 页面没有打开：先看启动窗口的最后一条提示；缺少 ffmpeg 就按提示安装，随后重新双击启动。
- 模型下载中断：保持联网并重新启动，下载会从已有部分继续，不必删文件或重装。
- 分离报错：先换用 MP3 或 WAV；仍失败时截取较短片段，并改用默认两轨方案确认素材可处理。
- 分离完成但串音明显：保留已经可用的音轨并说明限制，不重复跑同一路径。

## 本地启动

新手直接双击根目录的 `分弦.command`。开发或验收时运行：

```bash
cd app
./start.sh
```

启动脚本会自动打开本机页面。运行环境与模型放在产品目录外的
`../runtime/fenxuan/`，不会混入可交付文件。

## 验收

```bash
python app/dev/test_resource_guard.py
python app/dev/test_short_path.py
python app/dev/test_responsive_layout.py
bash app/dev/acceptance.sh
```

以 `sunmao-acceptance.json` 为完整验收边界。通过只证明声明路径可以运行，
不同歌曲与录音条件下的听感可能有差异。

## 信息来源与限制

- 功能说明来自当前产品代码、本地固定测试音频和 `sunmao-acceptance.json` 记录的实际检查。
- 这些记录能证明声明的流程在这台电脑上跑通，不是外部评测，也不代表真人对音质的评价。
- 最终是否可用要以用户自己的歌曲试听为准；涉及授权与商用时，仍由用户核对作品权利。

## 版本

当前版本：**v1.5.0**

本次改进：从三个档位和伴奏二次拆分，收缩为「人声 / 伴奏」与
「完整乐器分轨」两条路线。每个任务只运行一种分离模型；压缩包改为点击下载时才生成；
人声模型改为第一次真正使用时才下载。清晰度检查、完整文件名、MP3 / WAV 选择、
本机处理与单任务保护保持不变。
