# 分弦应用

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

## 启动

```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.5.0

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

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

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

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