Token导航 LogoToken导航TokenDH.com
开发需要联网clawhub未标认证来源可访问clear审计通过

sound-split声音分裂

Agent Skill

用于辅助音频、音乐、语音转写、语音合成或声音素材处理。它适合让 Agent 生成配乐说明、整理音频流程、调用语音工具或处理播客和视频配音素材。使用时需要确认输入音频来源、输出格式、时长和模型限制;涉及人声克隆、版权音乐或公开发布时,应先核对授权和合规边界。

总安装

2,497

周安装

102

GitHub Stars

公开资料未说明

下载量

492
OpenClaw

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT-0

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:sound-split(声音分裂)
来源仓库:https://github.com/nabian1990amber-cmd/sound-split
安装命令:
openclaw skills install sound-split
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install sound-split

简介

sound-split 智能分离音频中人声与伴奏,支持提取鼓、贝斯、钢琴等独立音轨。

  • 适用于音乐制作、翻唱伴奏获取、播客降噪及教学材料准备。
  • 用户上传任意音频文件即可开始处理,输出为高质量无损格式。
  • 涉及版权音乐时应遵守平台规定,禁止用于商业发行未经授权的作品。
  • 人声克隆功能仅限个人练习用途,不得模仿他人音色进行欺诈活动。

SKILL.md

name
sound-split
description
智能音频分离工具,一键将任意音频或视频分离出人声、伴奏、鼓、贝斯、钢琴等独立音轨。适用于音乐人翻唱伴奏提取、歌曲 Remix 制作、播客人声降噪、视频配乐替换、音乐教学素材准备等场景。当用户需要「分离人声和伴奏」「提取伴奏」「去除人声」「拆分音轨」「vocal split」「stem splitter」等操作时触发此技能。

Sound Split — AI 智能音频分离工具

一句话说明

上传一段音频或视频,AI 自动将其中的人声、伴奏、鼓点、贝斯、钢琴等音轨一一分离出来,支持在线预览每条音轨并单独下载。


附件文件说明

本 Skill 附带完整的核心实现代码(位于 rules/ 目录):

文件内容说明
rules/server.pyFastAPI Web 服务主程序(498 行)全部 API 路由、后台分离逻辑、进度追踪、历史管理
rules/app-page.html工具主操作页面(59KB)上传 + 配置 + 分离 + 结果展示的完整 UI
rules/editor-page.html音频裁剪编辑器(31KB)波形可视化 + 时间选区 + 片段导出
这些文件是纯文本,可直接复制到本地使用。部署方式见下方「使用流程」。

核心能力一览

能力说明典型用途
人声 / 伴奏分离从歌曲中提取纯净人声或纯伴奏翻唱、Remix、混音
多轨分轨提取一首歌拆为 2~5 条独立音轨编曲学习、乐队分谱、混音练习
视频直接处理上传视频自动提取音频并分离视频配乐替换、BGM 提取
实时进度反馈分离过程中实时进度条了解处理状态,无需盲等
片段裁剪下载对分离后的音轨精确裁剪起止时间只导出需要的片段
历史记录管理保留完整任务历史,随时回溯下载重复使用之前的结果

前置条件

环境要求

依赖项版本要求安装方式必要性
Python≥ 3.8系统自带或 python.org 下载必须
FFmpeg任意稳定版brew install ffmpeg(Mac)/ apt install ffmpeg(Linux)必须,用于音频提取与转码

Python 包安装(必须执行一次)

pip install fastapi uvicorn demucs ffmpeg-python
⚠️ 首次运行时会自动下载 AI 分离模型(约 300~500MB),请确保网络通畅。下载完成后会缓存到本地 ~/.cache/demucs/ 目录,后续运行不再重复下载。

验证环境是否就绪

# 1. 验证 FFmpeg 安装
ffmpeg -version | head -1

# 2. 验证 demucs 可用(首次会触发模型下载)
python3 -m demucs --version

# 3. 如果以上两个命令都正常输出,说明环境已就绪

使用流程(完整操作步骤)

第一步:启动服务

cd <skill_path>/audio-separator
python3 server.py

预期结果:终端显示以下内容说明启动成功:

╔══════════════════════════════════════════════╗
║   🎵 音频分离工具 - AI 智能分轨              ║
║   http://127.0.0.1:8765                       ║
╚══════════════════════════════════════════════╝
[init] 已从历史记录恢复 N 个任务

服务监听地址:http://127.0.0.1:8765

失败处理

  • 若报错 ModuleNotFoundError: No module named 'demucs' → 先执行 pip install demucs 再重启
  • 若报错 ffmpeg not found → 先安装 FFmpeg 再重启
  • 若端口 8765 被占用 → 终端执行 lsof -i :8765 | grep LISTEN | awk '{print $2}' | xargs kill -9 释放端口后重试

第二步:打开操作页面

浏览器访问以下地址:

页面地址功能
工具主页面(推荐)http://127.0.0.1:8765/app.html上传文件 + 选择模式 + 分离操作 + 预览下载
音频编辑器http://127.0.0.1:8765/editor对已完成分离的音轨进行裁剪,导出指定时间段
产品介绍页http://127.0.0.1:8765/产品功能展示与 Demo 试听(非必需)
💡 推荐直接使用 /app.html 主页面,所有核心操作都在一个界面完成。

第三步:上传文件并配置参数

在主页面(app.html)上按以下顺序操作:

  1. 点击上传区域或拖拽文件到虚线框内

- 支持格式:MP3, WAV, FLAC, OGG, M4A(音频);MP4, MOV, AVI, MKV, FLV(视频) - 文件大小建议 ≤ 100MB - 音频时长建议 ≤ 10 分钟(过长会显著增加处理时间)

  1. 选择分离轨道数

- 2 轨道(默认):输出「人声」+「伴奏」,适合翻唱、去人声场景 - 4 轨道:输出「人声」+「鼓」+「贝斯」+「其他」,适合编曲分析、混音练习 - 5 轨道:输出「人声」+「鼓」+「贝斯」+「钢琴」+「其他」,适合专业音乐制作

  1. 选择处理精度

- 推荐模式(默认):均衡质量与速度,适合大多数场景 - 高品质模式:更精细的分离效果,处理时间稍长 - 经典模式:基础分离能力,速度最快 - 增强模式:针对特定类型优化

  1. 点击「开始分离」按钮

第四步:等待处理完成

  • 页面会自动显示进度条(0% ~ 100%)
  • 进度阶段说明:
进度范围含义说明
0~15%初始化视频文件正在提取音频流;音频文件跳过此阶段
15~20%加载模型AI 模型加载到内存(仅首次较慢,后续有缓存加速)
20~85%正在分离AI 逐段分析音频并拆分音轨,耗时取决于文件长度
85~100%整理输出将分离结果整理为标准 MP3 文件
  • 典型耗时参考

- 3 分钟歌曲(2 轨道):约 30~60 秒 - 5 分钟歌曲(5 轨道):约 1~3 分钟 - 10 分钟视频(4 轨道):约 3~8 分钟 - > 10 分钟的文件不推荐,可能需要 10 分钟以上

  • 异常情况处理

- 进度卡住超过 5 分钟无变化 → 刷新页面后在历史记录中查看任务是否已完成 - 显示错误信息 → 查看终端 server.py 的错误日志,常见原因:文件损坏、磁盘空间不足、FFmpeg 未安装


第五步:预览与下载

分离完成后页面自动展示结果:

每条音轨提供以下操作:

操作说明
▶ 播放按钮点击即时在浏览器中试听该音轨效果
📥 下载按钮下载该音轨的 MP3 文件(320kbps 高品质)
✂️ 裁剪跳转到编辑器,选择起止时间后导出指定片段

输出文件位置<skill_path>/audio-separator/outputs/{task_id}/ 下包含各音轨的 MP3 文件

输出文件命名规则

轨道数输出文件名
2stemsvocals.mp3(人声)、accompaniment.mp3(伴奏)
4stemsvocals.mp3drums.mp3bass.mp3other.mp3
5stemsvocals.mp3drums.mp3bass.mp3piano.mp3other.mp3

API 接口详细说明

如需通过程序调用(而非浏览器界面),本工具提供完整的 RESTful API:

接口清单总览

接口路径方法功能
/api/separatePOST上传文件并启动分离任务
/api/status/{task_id}GET查询任务进度和结果
/api/download/{task_id}/{track_name}GET下载指定音轨文件
/api/trimPOST裁剪音轨片段
/api/historyGET获取历史任务列表
/api/cleanup/{task_id}DELETE清理任务的输出文件

1. 上传并分离 — POST /api/separate

请求格式

POST /api/separate
Content-Type: multipart/form-data

请求参数

参数名类型必填默认值说明
fileFile✅ 是要处理的音频或视频文件
modelstringhtdemucs处理精度模式(见下方可选值表)
stemsstring2stems输出轨道数(2stems / 4stems / 5stems)

model 可选值

model 值效果
htdemucs推荐,均衡质量与速度
htdemucs_ft高品质,更精细分离
demucs经典模式,速度最快
mdx人声增强模式
mdx_extra全面增强模式

成功响应(HTTP 200):

{
  "task_id": "a1b2c3d4e5f6",
  "status": "pending",
  "message": "任务已提交,请用 task_id 轮询进度"
}

错误响应

  • HTTP 400:不支持的模式: xxx不支持的轨道数: xxx — 检查 model 和 stems 参数值
  • HTTP 500:服务器内部错误 — 查看 server.py 终端日志

2. 查询任务状态 — GET /api/status/{task_id}

请求GET /api/status/a1b2c3d4e5f6

成功响应示例(处理中):

{
  "status": "processing",
  "progress": 65,
  "message": "Separating... 65% (30 lines processed)",
  "model": "htdemucs",
  "stems": "2stems",
  "filename": "song.mp3",
  "result": null
}

成功响应示例(完成):

{
  "status": "completed",
  "progress": 100,
  "message": "Done!",
  "model": "htdemucs",
  "stems": "2stems",
  "filename": "song.mp3",
  "result": {
    "tracks": {
      "vocals": "vocals.mp3",
      "accompaniment": "accompaniment.mp3"
    },
    "output_dir": "outputs/a1b2c3d4e5f6"
  }
}

状态字段含义

status 值含义建议操作
pending任务排队中等待开始等待几秒后再次查询
processing正在分离中每 2~3 秒轮询一次 progress
completed分裂完成用 tracks 字段的文件名去 download 接口下载
error处理出错查看 message 字段获取具体错误信息

错误响应:HTTP 404 { "detail": "任务不存在" } — 检查 task_id 是否正确


3. 下载音轨 — GET /api/download/{task_id}/{track_name}

请求示例

GET /api/download/a1b2c3d4e5f6/vocals
GET /api/download/a1b2c3d4e5f6/accompaniment

响应:直接返回对应音轨的 MP3 文件(Content-Type: audio/mpeg)

错误响应

  • HTTP 404:任务目录不存在或音轨文件不存在 — 先确认任务已完成且 track_name 正确

4. 裁剪音轨片段 — POST /api/trim

请求格式

POST /api/trim
Content-Type: application/x-www-form-urlencoded

请求参数

参数名类型必填说明
task_idstring已完成的分离任务 ID
track_namestring要裁剪的音轨名称(vocals / accompaniment / drums 等)
start_timefloat开始时间,单位秒(例如 30.5 表示 30 秒 500 毫秒)
end_timefloat结束时间,单位秒(必须大于 start_time)

请求示例

POST /api/trim
task_id=a1b2c3d4e5f6&track_name=vocals&start_time=30&end_time=90

响应:返回裁剪后的 MP3 文件,文件名格式为 {track_name}_{起始时间}_{结束时间}.mp3(例如 vocals_0030_0130.mp3

错误响应

  • HTTP 400:缺少必要参数,或 end_time <= start_time
  • HTTP 404:task_id 或 track_name 对应的文件不存在
  • HTTP 500:FFmpeg 裁剪过程出错

5. 获取历史记录 — GET /api/history

响应示例

[
  {
    "task_id": "a1b2c3d4e5f6",
    "filename": "song.mp3",
    "model": "htdemucs",
    "stems": "2stems",
    "status": "completed",
    "track_count": 2,
    "created_at": "2026-04-15T11:30:00",
    "exists": true
  }
]

其中 exists: true/false 表示该任务的输出文件在磁盘上是否仍然存在(可能已被清理删除)。


6. 清理任务文件 — DELETE /api/cleanup/{task_id}

响应{ "message": "已清理 N 个文件" }

⚠️ 此操作会永久删除该任务的所有输出文件和原始上传文件,不可恢复。建议仅在确认不再需要结果时使用。

项目文件结构

sound-split/
├── SKILL.md                          # 本说明文档
├── audio-separator/                  # ★ 主程序目录(核心实现全部在此)
│   ├── server.py                     # ★ Web 服务主程序(FastAPI 应用)
│   │                                 #   包含:API 路由、后台分离逻辑、
│   │                                 #   历史管理、进度追踪、FFmpeg 调用
│   ├── static/
│   │   ├── index.html                # ★ 工具主操作页面(上传 + 配置 + 分离 + 结果展示)
│   │   ├── editor.html               # ★ 音频裁剪编辑器(波形可视化 + 时间选区 + 导出)
│   │   └── landing.html              # 产品介绍页(Demo 试听 + 场景说明)
│   ├── uploads/                      # 上传文件临时存储目录(运行时自动创建)
│   ├── outputs/                      # 分离结果输出目录(每个任务一个子文件夹)
│   ├── trims/                        # 裁剪片段临时存储目录
│   └── history.json                  # 任务历史持久化记录(最多保留 50 条)
├── scripts/                          # 技能脚本目录
└── assets/                           # 技能资源目录
标记 ★ 的为核心实现文件,缺一不可。其余目录均为运行时自动创建,不需要手动准备。

关键约束与注意事项

  1. 隐私安全:所有音频处理均在本地机器完成,数据不会上传到任何外部服务器。AI 模型仅在本地运行。
  1. 资源需求

- 内存:建议至少 4GB RAM(处理长音频时峰值可达 2~3GB) - 磁盘空间:模型缓存 ~500MB + 输出文件(每首歌曲约 10~50MB) - CPU/GPU:优先使用 GPU 加速(需 NVIDIA CUDA),无 GPU 时自动回退 CPU 运行(速度慢 3~10 倍)

  1. 并发限制:同一时间只处理一个任务。提交新任务时会排队等待当前任务完成。
  1. 文件限制

- 单文件大小:建议 ≤ 100MB - 单次时长:建议 ≤ 10 分钟 - 超出限制不会报错但可能导致处理极慢或内存不足

  1. 输出格式:固定输出 MP3(320kbps),不支持自定义码率或格式(如需 WAV 可通过 FFmpeg 手动转码)。
  1. 服务生命周期:关闭终端窗口或 Ctrl+C 会停止服务。已完成的任务结果保存在 outputs/ 和 history.json 中,重启服务后会自动恢复。

常见问题排查

问题现象可能原因解决方法
启动报 ModuleNotFoundErrorPython 包未安装执行 pip install fastapi uvicorn demucs ffmpeg-python
启动报 ffmpeg not foundFFmpeg 未安装Mac: brew install ffmpeg; Linux: apt install ffmpeg
首次运行非常慢正在下载 AI 模型仅首次发生,模型会缓存到 ~/.cache/demucs/
上传后一直显示 pending后台进程未启动刷新页面,查看 server.py 终端是否有错误输出
进度卡在某个百分比不动大文件正常处理中5 分钟以上无变化则可能是死锁,重启服务重试
下载的文件无法播放分离过程中出错检查 outputs/ 对应目录下的 .mp3 文件大小是否 > 0
视频上传后只有画面没有声音视频编码特殊导致 FFmpeg 提取失败先用 FFmpeg 手动提取音频再上传:ffmpeg -i video.mp4 -vn -acodec mp3 audio.mp3

适用场景举例

场景一:翻唱伴奏提取

  1. 打开 http://127.0.0.1:8765/app.html
  2. 上传原唱歌曲 MP3
  3. 选择 2 轨道 + 推荐模式
  4. 点击「开始分离」,等待完成
  5. 下载 accompaniment.mp3 作为伴奏使用

场景二:视频 BGM 替换

  1. 打开工具页面
  2. 直接上传 MP4 视频文件(无需预先提取音频)
  3. 选择 2 轨道
  4. 完成后下载 accompaniment.mp3(原背景音乐)
  5. 在视频剪辑软件中替换为自己的 BGM

场景三:编曲学习分析

  1. 上传想学习的歌曲
  2. 选择 5 轨道 + 高品质模式(更精准的乐器分离)
  3. 分别下载 drums.mp3(鼓点)、bass.mp3(贝斯线)、piano.mp3(钢琴部分)
  4. 反复聆听单轨,学习每种乐器的编排方式

适合场景

01

OpenClaw 用户查找和安装 Skill 时

02

用户想查找某类 Agent Skill 时

03

需要根据任务场景推荐可安装能力包时

04

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

OpenClaw

93.82%
按下载量换算462

安全审计

VirusTotal

未展示

ClawScan

通过

Static analysis

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills