🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

音频证据包 Esper967/dsh-music-insight

DeepSeek Harness
Esper96712 天前有提交已提供中文文档扫描:含敏感能力

让你的dsh模型感受音乐

30.4/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Esper967/dsh-music-insight
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么[目录]—
dsh 原生插件 · other
暂无时间戳·判据 →
装得上吗[实装验证]!
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
数据截至 2026/10/22·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/03·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 12 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

⚠︎ 实装验证未通过(unknown · 2026/10/22) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 10 处,展示前 10 条)
  • 写入本地文件
    dsh-plugin/index.js:157
    await mkdir(dir, { recursive: true });
  • 写入本地文件
    dsh-plugin/index.js:162
    await mkdir(beside, { recursive: true });
  • 读取本地文件
    dsh-plugin/index.js:180
    if (!existsSync(path.join(config.repoRoot, "src", "music_insight", "cli.py"))) {
  • 读取本地文件
    dsh-plugin/index.js:238
    if (!existsSync(target)) throw new Error(`music_insight: file not found: ${target}`);
  • 删除本地文件递归
    dsh-plugin/index.js:274
    if (cleanup) await rm(outDir, { recursive: true, force: true }).catch(() => {});
  • 读取本地文件
    dsh-plugin/index.js:280
    const left = await readdir(outDir).catch(() => []);
  • 删除本地文件递归
    dsh-plugin/index.js:281
    if (left.length === 0) await rm(outDir, { recursive: true, force: true }).catch(() => {});
  • 读取本地文件
    dsh-plugin/index.js:290
    const analysis = JSON.parse(await readFile(analysisPath, "utf8"));
  • 读取本地文件
    dsh-plugin/index.js:300
    ...(existsSync(panelPath) ? { panel_path: panelPath } : {}),
  • 读取本地文件
    dsh-plugin/preview-summary.mjs:23
    const analysis = JSON.parse(readFileSync(analysisPath, "utf8"));
扫描于 2026/11/3(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

README

由 DeepSeek 最新模型翻译生成
dsh-music-insight 「让模型感受音乐」 把音频压成一句感受 + 三个情绪词 + 一行走向 不调用任何第三方接口。需要长报告时仍然有(--mode strict 的证据清单) 音频 ──▶ 测量层(确定性算法) ──▶ 感官层(vibe-v2:数字 → 一句感受 / 三个词 / 一行走向) ──▶ 证据层(JSON / PNG / Markdown,需要时才看) ──▶ 任意 LLM 说一句像刚听完的话 纯 CPU、零 API、离线可跑(可选依赖只用于解码与非 WAV 格式)。 测量面板示例 默认输出长这样 听完《雨上がりの空》 glassmoon · 2:59 · 112 BPM · C 大调 感觉 像雨停之后一个人走回家:先是空的,中间暖起来,最后散了。听完是松的。
展开完整文档(README 剩余 1 节)
dsh-music-insight

「让模型感受音乐」

把音频压成一句感受 + 三个情绪词 + 一行走向 不调用任何第三方接口。需要长报告时仍然有(--mode strict 的证据清单)

音频 ──▶ 测量层(确定性算法) ──▶ 感官层(vibe-v2:数字 → 一句感受 / 三个词 / 一行走向) ──▶ 证据层(JSON / PNG / Markdown,需要时才看) ──▶ 任意 LLM 说一句像刚听完的话

纯 CPU、零 API、离线可跑(可选依赖只用于解码与非 WAV 格式)。

测量面板示例

默认输出长这样

听完《雨上がりの空》

glassmoon · 2:59 · 112 BPM · C 大调

感觉

像雨停之后一个人走回家:先是空的,中间暖起来,最后散了。听完是松的。

很亮 / 偏慢 / 空

走向

0:00 起 → 0:26 涨 → 1:34 满 → 2:50 收

112 BPM · 亮 · 暖 · 空

数据

2:59 · 112.3 BPM · C 大调 · -20.8 dB · 2.4/s · 中频 68%

和弦:C 92.9s / F 26.6s / G 23.7s / Am 17.3s(C 大调 / A 小调 二选一)

两种模式

| 模式 | 给谁 | 输出 | 解读提示词 |
| vibe(默认) | 想听感受的人、聊天、播客脚本 | 一句感受 + 三个词 + 一行走向 | LLM_PROMPT_FUN(2–4 句 / ≤100 字,带 1 处数据) |
| strict | 要引用、要核对、要跑评估 | 证据清单,每条结论指回字段 | LLM_PROMPT |

同一份 measurements,两种排法。短的是措辞,不是数据。

vibe 模式要求模型像一个懂行的朋友:第一句说人话、说情绪,然后顺口带 1 处具体数据(1:34 那段 / 最满 -20 dB / C 大调 / 一直绕着 C-F-G),最多 2 个数据点、1 个术语。
数据是给感受撑腰的,不是用来报参数的——所以插件会把「调性 / 高频和弦 / 关键时间点响度」单独喂给模型,让它有东西可引用,又不会变成念报告。

现在能做什么(实测数字)

在 POP909(909 首中文流行)的合成钢琴音频上评估:

| 能力 | 水平 | 说明 |
| 时长 / BPM / 响度 / 明暗 / 结构 | ✅ 可用 | BPM 误差通常在 ±2% 内 |
| 和弦(根音 / 性质) | 🟡 73.8% / 73.0% | 用 librosa 拍点;真实录音更低 |
| 调性 | 🟡 关系大小调二选一 | 由和弦序列反推,歧义会明确标注 |
| 旋律 | 🔴 不可用(19.5%) | 复调遮蔽,见「已知限制」 |
| 感官层(感受 / 情绪词 / 走向) | 🟡 规则映射 | 阈值表可读、可改,不是学习出来的 |

以上是合成音频上的数字,真实录音会更差。完整评估过程与失败记录见 docs/EVAL.md。

它是什么 / 不是什么

| 是 | 不是 |
| 把音频变成可复现的测量数据 | 音乐理解模型 |
| 把测量值压成一句感受(感官层) | 情绪识别 / 扒谱工具 |
| 生成给 LLM 读的听感底稿和提示词 | 自动乐评 SaaS |
| 明确标注置信度与失效条件 | 音频 LLM(它根本听不到声音) |

快速开始

git clone https://github.com/Esper967/music-insight.git
cd music-insight
pip install -e ".[decode]" # numpy + pillow,av 用于 mp3/m4a/flac
pip install -e ".[dev]" # 跑测试

1. 生成两段无版权的测试音频
python examples/make_demo.py out/demo.wav # 19 秒,平的
python examples/make_arc_demo.py out/arc_demo.wav # 36 秒,有起—满—收

2. 一句感受(默认 vibe) music-insight out/arc_demo.wav --out out/demo

3. 证据清单(可引用) music-insight out/arc_demo.wav --out out/demo --mode strict

4. 加上节拍 / 和弦 / 由和弦反推调性 music-insight out/arc_demo.wav --out out/demo --chords

5. 批量分析一个文件夹
python examples/batch.py "某处/音乐文件夹" --out out/batch

输出:

out/demo/
├── panel.png # 波形 + 梅尔谱 + 音高类 + 结构条 ├── analysis.json # 测量值、结构、情绪先验、感官层、元信息 ├── timeline.csv # 8 秒粒度时间线 ├── report.md # 一句感受(vibe)或证据清单(strict) └── LIMITS.md # 失效条件——限制外置,不挡正文

设计原则:短的是措辞,不是数据

- 测量层只放确定性算法,每个数字都能复现、能被基准检验。
- 感官层(vibe.py)只做一件事:把测量值按阈值表压成一句话。
v2 刻意删掉了骨架表、手感表、听感锚点——那些信息留在 analysis.json 里给机器看。
它不新增音频计算,也不判断乐器 / 人声 / 流派。
- strict 模式保留完整的证据索引,供核对。
- 限制外置成 LIMITS.md:限制不会消失,但不该让模型一打开正文就先读到免责声明。
- 全程离线:没有网络层、没有评论抓取、没有性格预设。
「听完什么感觉」这件事,只由这首歌的测量值和一行提示词决定。
- 标题不可信:歌名 / 歌手 / 专辑只是文件标签,可能是错的、被改过的、同名不同曲。
模型在输出前会被告知:不要搜索、不要引用任何网络信息,只按测量转化出的感受说话。

为什么不直接让模型自己翻译数字?因为它每次翻的都不一样,而且容易翻错。
把翻译固化在代码里,措辞就可以被 review、被 git diff、被你说「这句太文艺了,改掉」。

已知限制

- 旋律提取不可用:完整混音上 RPA 19.5%,单独旋律轨 68–77%——瓶颈是复调遮蔽。
- 和弦性质依赖语料先验:QUALITY_PRIORS 来自中文流行,换到古典/爵士会偏。
- 调性只能到关系大小调层级:两者共享全部调内和弦,报告会并列两个候选。
- 节拍跟踪较弱:自研 F-measure 0.21,librosa 0.34;对和弦聚合影响 5–6 个点。
- 感官层的措辞是规则,不是理解:阈值表决定它说你「亮」还是「暗」,改表就能改性格;它不会因为这首歌真的悲伤就说什么。
- 无流派 / 年代 / 乐器识别:需要另外的嵌入模型。
- 完整失效条件见每次运行生成的 LIMITS.md(源码里的 report.LIMITS_MD)。

作为 DeepSeek Harness 插件使用

dsh-plugin/ 是一个符合 DSH 的 Host 插件 bundle,注册一个 music_insight 工具:给一条音频路径,返回一句感受 + 三个情绪词 + 一行走向与文件路径。全程本地离线。

dsh plugin --profile <你的 profile 名> add <本仓库路径>/dsh-plugin

也可以让 agent 调用 plugin_manager 的 install_bundle,target 填 dsh-plugin 的绝对路径。

配置在 dsh-plugin/cordis.patch.yml:

| 键 | 作用 |
| pythonPath | 装了 numpy + pillow(mp3 还需 av)的 Python;留空用 PATH 上的 python |
| repoRoot | music-insight 仓库路径;插件在仓库内时自动推导 |
| defaultChords | 是否默认跑节拍/和弦(默认 true) |
| defaultMode | 默认报告模式:vibe(默认)或 strict |

工具参数:

| 参数 | 说明 |
| file_path | 必需。音频路径,相对路径按会话工作目录解析 |
| mode | vibe(默认)/ strict,覆盖配置默认值 |
| chords | 是否跑节拍/和弦,覆盖配置默认值 |
| output_dir | 可选。输出目录,默认 <歌名>-分析/(放在音频同目录) |

工具描述本身就是给模型的指令:要求「2–4 句、≤100 字、先说感觉、情绪直接说、不总结不排比」,所以模型拿到结果后不会再甩一张频谱表。

已验证:WAV(标准库解码)与 MP3(PyAV,含 ID3 标签)都能跑通。

改完插件里的措辞后,不用重启 DSH 就能预览模型会读到什么:

node dsh-plugin/preview-summary.mjs out/demo/analysis.json vibe

测试

pip install -e ".[dev]"
pytest -q # 31 个测试,不需要下载数据集,也不联网

Roadmap

1. 旋律提取(dominant melody extraction,例如 Basic Pitch)——当前最大空白
2. 和弦继续提升:更多和弦类型、更大评测集、真实录音验证
3. 调性定到绝对调名(需要旋律或终止式信息)
4. CLAP / MERT 嵌入 → 流派与情绪标签(有监督、可评估)
5. 可选音频 LLM 后端:真的把声音给模型听,而不是只看测量(唯一能拿到音色的路)

Prior art

- MOSS-Music-Data-Pipeline — 训练语料标注管线
- review-music — MIR → 结构化评论,思路最接近
- Musia — 本地音乐工具链封装
- LTU / Music Flamingo — 训练音频编码器的路线,需要 GPU 与数据

差异点:测量与措辞分层(数字可核对、措辞可 review)、零 API 纯本地、全程离线。
「听完什么感觉」只由这首歌本身决定,不掺别人的评论、不套性格预设。

许可

MIT
预览分享卡片长什么样 ↓Esper967/dsh-music-insight
分享 · DeepSeek Harness Hub
Esper967/dsh-music-insight

让你的dsh模型感受音乐

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部