# MVSEP CLI
命令行工具,用于与 MVSEP (Music Vocal Separation) API 交互,进行音轨分离。
## 安装
```bash
cargo install mvsep-cli
```
或编译安装:
```bash
cargo build --release
```
## 快速开始
```bash
# 1. 设置 API Token
mvsep-cli config set-token <your_token>
# 2. 测试连接
mvsep-cli test
# 3. 查看可用算法
mvsep-cli list
# 4. 创建任务
mvsep-cli create audio.wav -t 49 --opt1 5 -o ./output
# 5. 等待完成并下载 (或使用 run 命令)
mvsep-cli run audio.wav -t 49 --opt1 5 -o ./output
```
## 命令
### 基础命令
| `test` | 测试 API 连接 |
| `version` | 显示版本信息 |
| `list` | 列出算法组和算法 |
| `query -a <id>` | 查询算法名称 |
| `query -a <id> -m <model_id>` | 查询模型名称 |
| `queue` | 查看队列信息 |
### 任务命令
| `create <file>` | 创建分离任务 |
| `run <file>` | 完整流程(创建 + 等待 + 下载) |
| `status <hash>` | 查看任务状态 |
| `wait <hash>` | 等待任务完成 |
| `download <hash>` | 下载结果 |
### 配置命令
| `config show` | 显示配置 |
| `config set-token <token>` | 设置 API Token |
| `config set-mirror <main\|mirror>` | 设置镜像服务器 |
| `config set-proxy-mode <system\|manual\|none>` | 设置代理模式 |
| `config set-proxy-host <host>` | 设置代理主机 |
| `config set-proxy-port <port>` | 设置代理端口 |
| `config set-output-dir <dir>` | 设置输出目录 |
| `config set-output-format <id>` | 设置默认输出格式 |
| `config set-interval <seconds>` | 设置轮询间隔 |
## 搜索系统
### 层级结构
- **Level 1**: 算法组 (如 "Vocals / Instrumental", "Drums, Bass and Synth")
- **Level 2**: 具体算法 (如 "MVSep Karaoke", "MDX-B Karaoke")
- **Level 3**: 模型选项 (--opt1, --opt2, --opt3)
### list 命令
```bash
# 列出所有算法组和算法
mvsep-cli list
# 搜索算法
mvsep-cli list -k karaoke
# 查看特定算法(含模型选项)
mvsep-cli list -a 49 -r
# 显示输出格式
mvsep-cli list --formats
```
| `-k, --keywords` | 搜索关键词 |
| `-a, --algorithm` | 查看特定算法 ID |
| `-r, --recursive` | 显示所有子层级(模型选项) |
| `--formats` | 显示输出格式 |
### query 命令
```bash
# 查询算法名称
mvsep-cli query -a 49
# 查询模型名称
mvsep-cli query -a 49 -m 5
```
| `-a, --algorithm` | 算法 ID (必需) |
| `-m, --model` | 模型 ID (可选) |
## 使用示例
### 查看算法
```bash
# 列出所有算法组
mvsep-cli list
# 搜索 "karaoke" 相关算法
mvsep-cli list -k karaoke
# 查看算法 49 的详细信息和模型选项
mvsep-cli list -a 49 -r
# 查询算法名称
mvsep-cli query -a 49
# 查询模型名称
mvsep-cli query -a 49 -m 5
```
### 创建任务
```bash
# 基本用法
mvsep-cli create audio.wav -t 49 --opt1 5
# 指定输出格式
mvsep-cli create audio.wav -t 49 --opt1 5 -f 1
# 发布到演示页面
mvsep-cli create audio.wav -t 49 --opt1 5 --demo
# 设置轮询间隔
mvsep-cli create audio.wav -t 49 --opt1 5 -i 10
# 指定输出目录
mvsep-cli create audio.wav -t 49 --opt1 5 -o ./output
```
### 等待完成并下载
```bash
# 方式1: 使用 run 命令 (推荐)
mvsep-cli run audio.wav -t 49 --opt1 5 -o ./output
# 方式2: 分步执行
mvsep-cli create audio.wav -t 49 --opt1 5
# 输出: Task created! Hash: xxx
# Use: mvsep-cli status xxx
# Or: mvsep-cli wait xxx
# Or: mvsep-cli run <file> ...
mvsep-cli wait <hash>
mvsep-cli download <hash> -o ./output
```
### 下载特定文件
```bash
# 下载所有结果
mvsep-cli download <hash> -o ./output
# 下载指定索引的文件 (0, 1, 2...)
mvsep-cli download <hash> -n 0 -o ./output
```
## 输出格式
| 0 | MP3 (320 kbps) |
| 1 | WAV (16 bit) |
| 2 | FLAC (16 bit) |
| 3 | M4A (lossy) |
| 4 | WAV (32 bit) |
| 5 | FLAC (24 bit) |
## 配置优先级
环境变量 > 配置文件 (~/.mvsep_cli_config)
### 环境变量
- `MVSEP_API_TOKEN` - API Token
- `MVSEP_API_URL` - API 地址
- `MVSEP_OUTPUT_DIR` - 输出目录
- `MVSEP_POLL_INTERVAL` - 轮询间隔
- `PROXY_HOST` - 代理主机
- `HTTP_PROXY_PORT` / `HTTPS_PROXY_PORT` - 代理端口
### 代理模式
| `system` | 使用系统代理 (默认) |
| `manual` | 使用手动设置的代理 |
| `none` | 不使用代理 |
```bash
# 设置代理模式
mvsep-cli config set-proxy-mode none # 不使用代理
mvsep-cli config set-proxy-mode manual # 手动代理
mvsep-cli config set-proxy-host 127.0.0.1
mvsep-cli config set-proxy-port 7897
```
## 注意事项
1. 使用 `--opt1` 指定模型(可通过 `list -a <id> -r` 查看可用模型)
2. 某些算法没有额外选项,无需指定 `--opt1`
## 构建
```bash
cargo build --release
# 输出: target/release/mvsep-cli
```
## License
MIT