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

音视频工坊 JMX-4869/dsh-media

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

写曲、换音色、渲染成片,一条链路走完

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 源安装(明细见下方安装检查)

状态速览

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

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
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 等)各自遵循其原始许可。
预览分享卡片长什么样 ↓JMX-4869/dsh-media
分享 · DeepSeek Harness Hub
JMX-4869/dsh-media

写曲、换音色、渲染成片,一条链路走完

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