# 分弦应用

分弦是一套只在本机运行的音频分轨工具。页面负责上传、试听、调音与下载；
本地服务负责分离；音频不会发送到远程服务器。

## 启动

```bash
./start.sh
```

启动成功后会打开本机页面。第一次运行会在产品目录外建立
`../../runtime/fenxuan/` 并下载一套六轨模型。

## 主流程

```text
上传音频
  → 选择人声/伴奏或完整乐器分轨
  → 选择 MP3、WAV 或双格式
  → 两个入口共用一次六轨计算
  → 只保留通过检查的清晰音轨
  → 同步试听与调节音量
  → 单轨下载或勾选多轨打包
```

## 两条路线

- 人声 / 伴奏：从六轨结果交付人声，其余五轨直接合成为伴奏。
- 完整乐器分轨：交付人声、鼓、贝斯、吉他、钢琴和其他器乐中通过检查的音轨。

两条路线都只交付通过检查的清晰音轨。

## 文件

| 路径 | 用途 |
| --- | --- |
| `index.html` / `app.js` | 上传、进度、混音台与下载界面 |
| `server/app.py` | 本地接口、任务与文件交付 |
| `server/separate.py` | 人声、伴奏和乐器分离 |
| `requirements.txt` | 可重复安装的运行依赖 |
| `dev/` | 单元检查、接口检查与端到端验收 |
| `test-song.wav` | 无音频时使用的本地演示曲 |

## 验收

服务未启动时先运行 `./start.sh`，然后执行：

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

版本：v1.6.0

v1.6.0：删除 BS-Roformer、ONNX 与第二套模型。Apple 芯片使用轻量原生
Demucs；Windows 使用 PyTorch Demucs。上传改为分块写入，旧任务两小时后回收，
两个入口共享同一份六轨缓存；Windows 自动使用可用的 NVIDIA CUDA；Apple 芯片
升级时删除旧版可重新下载的废弃模型缓存。

v1.5.0：删除中间档和伴奏二次分轨；完整分轨从原曲直接运行六轨模型一次。
打包改为点击时生成，人声模型改为真正使用时才下载。

v1.4.0：修正上传区焦点边框碎裂；结果页新增空格播放/暂停，并避开表单、按钮和下载链接。

v1.3.1：上传区改用浏览器原生文件入口，点击整块区域直接选择文件，拖入音频也能被接收。

HTML 工作台使用自适应轨道布局：宽屏显示完整混音台，窄屏改为上下轨道卡；各尺寸均保留播放、Solo/Mute、音量和下载。
