写曲、换音色、渲染成片,一条链路走完
29.8/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add JMX-4869/dsh-media该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 36 处,展示前 28 条)
- 读取本地文件src/dsh-av/convert.js:170
if (!existsSync(j(rmvpeFile))) { - 读取本地文件src/dsh-av/convert.js:172
+ (existsSync(j('rmvpe_fp16.onnx')) - 读取本地文件src/dsh-av/convert.js:177
if (!existsSync(j('hubert_fp16.onnx'))) throw new Error('缺 ' + j('hubert_fp16.onnx')) - 读取本地文件src/dsh-av/convert.js:178
if (!existsSync(voiceOnnx)) throw new Error('缺音色:' + voiceOnnx) - 发起网络请求src/dsh-av/index.js:72
const r = await fetch(`http://127.0.0.1:${TTS_PORT}/tts?text=x&text_lang=zh`, { - 读取本地文件src/dsh-av/index.js:82
if (!existsSync(TTS_PY)) { logs.push('TTS: 找不到 runtime —— ' + TTS_PY); return false } - 读取本地文件src/dsh-av/index.js:106
if (!existsSync(ref) || !existsSync(txt)) return null - 读取本地文件src/dsh-av/index.js:107
const text = readFileSync(txt, 'utf8').trim() - 读取本地文件src/dsh-av/index.js:117
if (!existsSync(script)) return { ok: false, message: '包内缺 tools/tts_oneshot.py' } - 读取本地文件src/dsh-av/index.js:118
if (!existsSync(py)) return { ok: false, message: '找不到 Python 运行时:' + py } - 写入本地文件src/dsh-av/index.js:321
appendFileSync(join(HOME, 'load.log'), lines.join('\n') + '\n') - 读取本地文件src/dsh-av/index.js:375
if (!existsSync(htmlPath)) { - 发起网络请求src/dsh-av/index.js:465
const r = await fetch(`http://127.0.0.1:${TTS_PORT}/tts`, { - 写入本地文件src/dsh-av/index.js:481
writeFileSync(output, buf) - 读取本地文件src/dsh-av/mel.mjs:19
const meta = JSON.parse(readFileSync(metaPath, 'utf8')); - 读取本地文件src/dsh-av/mel.mjs:20
const buf = readFileSync(binPath); - 写入本地文件src/dsh-av/render.js:176
if (!existsSync(o.outDir)) mkdirSync(o.outDir, { recursive: true }) - 读取本地文件src/dsh-av/render.js:176
if (!existsSync(o.outDir)) mkdirSync(o.outDir, { recursive: true }) - 写入本地文件src/dsh-av/render.js:302
writeFileSync(join(o.outDir, 'f' + String(f + 1).padStart(5, '0') + '.png'), c.toPNG()) - 读取本地文件src/dsh-av/voices.js:25
if (!existsSync(dir)) return null - 读取本地文件src/dsh-av/voices.js:26
const files = readdirSync(dir) - 读取本地文件src/dsh-av/voices.js:31
if (existsSync(infoPath)) { - 读取本地文件src/dsh-av/voices.js:33
info = JSON.parse(readFileSync(infoPath, 'utf8')) - 读取本地文件src/dsh-av/voices.js:42
try { mb += statSync(join(dir, f)).size / 1048576 } catch { } - 读取本地文件src/dsh-av/voices.js:61
if (!existsSync(voicesDir)) return [] - 写入本地文件src/dsh-av/voices.js:98
if (!existsSync(d)) mkdirSync(d, { recursive: true }) - 读取本地文件src/dsh-av/wav.js:21
const buf = readFileSync(path) - 写入本地文件src/dsh-av/wav.js:100
writeFileSync(path, buf)
扫描于 2026/11/3(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DeepSeek Harness 音视频插件套件:dsh-av(音色转换 / 音频渲染)+ 音乐台(Web Audio 作曲台,导出的 WAV 可直接喂给 dsh-av)
README
由 DeepSeek 最新模型翻译生成DSH 音视频插件 · dsh-av
一个插件。两件事,其实是同一件事的两头。
| 层 | 干什么 | 怎么实现的 |
| 声音 | 把一段音频的音色换成某个人的 | hubert(波形→内容特征)+ rmvpe(音高)+ net_g(合成波形),三个 ONNX 网络在 Node 里直接跑 —— 不依赖 Python,不依赖 torch |
| 视频 | 把音频渲染成片子 | 频谱 / 波形 / 歌词 / 曲线,拼 mp4 那一步要 ffmpeg |
| 音乐台 | 从零写一段曲子 | 内置的网页作曲台,装在设置页里;单文件、零依赖、全中文 |
它们是一条链路,不是一个套件:
音乐台写曲子 ──导出 WAV──▶ av { action:"convert" } 换音色 ──▶ av { action:"video" } 渲染成片
所以音乐台就在这个包里,不是另一个插件 —— 它是这条链路的输入端。
包
- 压缩包:packages/dsh-av-0.5.6.zip(116 KB,19 个文件)
- 源码:src/dsh-av/
目录里必须有:index.js(宿主:av 工具 + /dsh-music 路由)、client.js(客户端:设置页里的音乐台)、www/音乐台.html(页面本体)。
展开完整文档(README 剩余 1 节)
DSH 音视频插件 · dsh-av
一个插件。两件事,其实是同一件事的两头。
| 层 | 干什么 | 怎么实现的 |
| 声音 | 把一段音频的音色换成某个人的 | hubert(波形→内容特征)+ rmvpe(音高)+ net_g(合成波形),三个 ONNX 网络在 Node 里直接跑 —— 不依赖 Python,不依赖 torch |
| 视频 | 把音频渲染成片子 | 频谱 / 波形 / 歌词 / 曲线,拼 mp4 那一步要 ffmpeg |
| 音乐台 | 从零写一段曲子 | 内置的网页作曲台,装在设置页里;单文件、零依赖、全中文 |
它们是一条链路,不是一个套件:
音乐台写曲子 ──导出 WAV──▶ av { action:"convert" } 换音色 ──▶ av { action:"video" } 渲染成片
所以音乐台就在这个包里,不是另一个插件 —— 它是这条链路的输入端。
包
- 压缩包:packages/dsh-av-0.5.6.zip(116 KB,19 个文件)
- 源码:src/dsh-av/
目录里必须有:index.js(宿主:av 工具 + /dsh-music 路由)、client.js(客户端:设置页里的音乐台)、www/音乐台.html(页面本体)。
安装
1. 解压 packages/dsh-av-0.5.6.zip 到任意目录,例如 <某处>/dsh-av
2. 装那个目录(不是 zip):
plugin_manager { action: "install_bundle", target: "<绝对路径>/dsh-av" }
3. 重启 DSH(宿主半边要重新装载才会注册 /dsh-music 这条路由)
4. 音乐台在:设置 → 音乐台
模型
models/ 约 700 MB,不在包里。先看缺哪几件:
av { action: "setup" }
它会打印缺的是哪一组、各自该多大、从哪来。没有模型时,除音色转换外的路径照常能跑。
音乐台能干什么
- 钢琴卷帘:横向时间、纵向音高;点一下放音符,拖右边缘改长度,拖身体挪位置
- 步进网格:一格一个十六分音符,一条轨一行
- 音色 30 种(键盘 / 弦乐 / 管乐 / 电声 / 打击 / 氛围)+ 你自己录的采样
- 导出 WAV(手写 WAV 头、分段渲染)/ MIDI / 工程 JSON / 采样包
- 撤销 Ctrl+Z,全屏 一键铺满,缩放 4–64px 每格,滚轮 上下翻音高
已知限制
- models/(约 700 MB)不在包里
- 音乐台在 >2× 缩放时画布文字会略微软化
- 音乐台的音量 / 声像 / 音色改动不进撤销栈(滑杆拖动太频繁)
许可
MIT。第三方依赖(onnxruntime 等)各自遵循其原始许可。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
JMX-4869/dsh-media
写曲、换音色、渲染成片,一条链路走完
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,330已汉化DeepSeek 客户端
74.5
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,826已汉化DSH
72.2
花束设计alchaincyf/huashu-design
一句话生成网页、原型、PPT 与信息图等可交付设计
★ 28,638已汉化DSH
71.7
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,349已汉化DSH
71.6
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,311已汉化DSH
71.4
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。