前言¶
在 DeepSeek Harness(DSH)里做音视频相关任务时,助手往往只能「建议你去装 ffmpeg、自己跑命令」,无法稳定地读容器信息、抽音轨或产出带时间轴的字幕。若把 whisper.cpp 或 OpenAI 兼容转写 API 也接进同一套工具,对话里一句「把这段录音转成 srt」就能落到可执行步骤。dsh-audio-tools 就是面向这类需求的社区插件:把探针、格式转换/抽轨和语音转写封装成三个工具,并附带 skill 说明何时调用哪一个。
这是什么¶
dsh-audio-tools(维护者 Ren-xing,GitHub:Ren-xing/dsh-audio-tools)是 DSH 下的模型推理类插件。官方简介为:用本机 ffmpeg 做 probe、转换/抽取音轨,并用 whisper.cpp 或任意 OpenAI 兼容 API 做语音转文字。
插件本身零 npm 依赖,不打包 ffmpeg,也不会在后台替你下载 ffmpeg(本地 whisper 模型与二进制需按需运行安装脚本)。源码与问题反馈见 GitHub 仓库;社区目录页见 SkillHub 插件页。
| 工具 | 作用 |
|---|---|
audio_probe |
读容器、时长、码率、采样率、声道、标签、音视频流 |
audio_convert |
转 mp3/wav/flac/m4a/aac/ogg/opus/wma/aiff;从视频抽音轨;裁剪;重采样;单声道;响度归一化 |
audio_transcribe |
语音转文字,返回全文与带时间轴分段,可写 .txt / .srt |
同时注册同名 skill(skills/dsh-audio/SKILL.md),用于提示模型在合适场景选用上述工具。
运行要求¶
安装插件前,先满足环境与外部依赖:
- DeepSeek Harness 0.2.x(资料中实测 0.2.1-rc.2);
package.json声明dsh≥ 0.2.0。 - Node.js ≥ 20(DSH 自带 24,一般无需另装)。
- ffmpeg + ffprobe 必须在 PATH 中,或在配置里显式指定路径;插件不自带。
Windows 上安装 ffmpeg 可任选资料中的一种方式,例如 winget:
winget install --id Gyan.FFmpeg -e
新开终端验证:
ffmpeg -version
ffprobe -version
资料说明:不需要 GPU;本地转写默认走 CPU。若使用 CUDA 版 whisper,可自行替换配置中的 whisperPath。
安装与启用¶
DSH 桌面 profile 的插件需用应用自带的 CLI 管理(普通 dsh 不能替代 desktop profile 的安装流程)。推荐从本地 tgz 安装(资料未提供 github:owner/repo 一键命令,请勿凭名称拼接):
$dsh = "C:\Users\<你>\Desktop\杂七杂八\deepseek\resources\runtime\cli\bin\dsh.cmd"
# 或默认: "$env:LOCALAPPDATA\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd"
& $dsh plugin --profile desktop add "C:\path\to\dsh-audio-tools-0.1.0.tgz"
该命令会更新 profile 的 dependencies、因包声明 dsh.bundle 而写入 dsh.profile.bundles,并校验 cordis.patch.yml 可解析。也可在插件市场/管理界面安装本地 tgz,效果相同。
完全退出 DeepSeek Harness(含托盘)后再启动;启动时 patch 会把 dsh-audio 条目写入运行配置。确认方式:新建对话询问「列出你有哪些 audio 工具」,应看到 audio_probe / audio_convert / audio_transcribe。
若工具未出现,检查 %USERPROFILE%\.dsh\profiles\desktop\package.json 的 dsh.profile.bundles 是否包含 dsh-audio-tools,以及启动日志里是否有 dsh-audio-tools 报错。资料强调:不要通过改 profile 里的 cordis.yml 快照来装插件;用户侧配置覆盖应写在 cordis.patch.yml。
配置¶
所有配置键可选;类型或键名错误只会告警,不会阻止 profile 启动。在 profile 的 cordis.patch.yml 中用 id dsh-audio 定位,例如:
- id: dsh-audio
config:
ffmpegPath: 'D:\tools\ffmpeg\bin\ffmpeg.exe'
ffprobePath: 'D:\tools\ffmpeg\bin\ffprobe.exe'
modelDir: 'D:\models\whisper'
defaultModel: 'small'
language: 'zh'
backend: 'cli'
timeoutMs: 900000
常用项(默认值以 README 为准):
| 键 | 默认 | 说明 |
|---|---|---|
ffmpegPath / ffprobePath |
null |
不填则在 PATH 查找 |
whisperPath |
null |
不填则找 <插件>/vendor/whisper/whisper-cli.exe,再找 PATH |
modelDir |
~/.dsh/audio-models |
存放 ggml-*.bin |
defaultModel |
small |
tiny / base / small / medium / large-v3 |
language |
zh |
转写语言;auto 为自动检测 |
backend |
cli |
cli(whisper.cpp)或 api(OpenAI 兼容) |
apiBaseUrl / apiKey / apiModel |
见 README | API 后端;单文件上限 24 MB |
timeoutMs |
600000 |
单次 ffmpeg/whisper 超时(毫秒) |
仅当 backend: cli 时需要本地 whisper.cpp。在插件目录执行安装脚本(会下载 Windows 二进制与 ggml 模型):
cd "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\dsh-audio-tools"
node scripts\setup-whisper.mjs --model small
国内默认走 hf-mirror.com;要官方 Hugging Face 源可加 --mirror hf。中文日常使用 small 起步;追求准确率可用 medium。
典型用法¶
直接对助手用自然语言描述任务即可。README 中的示例包括:
- 查看某 mp4 的时长、码率与音轨信息。
- 转成指定码率的 mp3,或从时间点起裁剪并做响度归一化。
- 将录音转写为带时间轴字幕并保存为 srt,或转写后让助手总结内容。
工具也可按 JSON 参数调用。探针示例:
{ "path": "D:/media/lecture.mp4" }
audio_convert 必填 input;可选 format、output、bitrate、sampleRate、channels、start/duration、normalize、audioStream、overwrite 等(详见 README 参数表)。
audio_transcribe 必填 input;可选 language、model、backend、prompt(仅 cli)、srt、output 等。
适用场景与注意¶
适合谁:已在 DSH desktop profile 下工作、本机或网关侧有 ffmpeg,且需要把「看媒体信息 → 抽轨/转码 → 转写/出字幕」串在同一会话里的开发者或内容处理流程。
安全与边界(来自 README):不打包 ffmpeg,缺失时会报错并提示安装方式;不原地覆盖输入文件,同路径输出需 overwrite: true 且先写临时文件再替换;外部命令通过参数数组调用,不拼 shell;超时默认 10 分钟,到点终止子进程树;API 密钥仅存本地配置。
权限与信任:插件以当前 DSH 进程权限运行,可读写你指定的路径并调用 ffmpeg/whisper 或配置的 API。安装前应阅读 源码 与 MIT 许可证,自行评估是否纳入环境。
平台说明:资料中的安装脚本、路径示例与 whisper 二进制主要针对 Windows;Linux/macOS 用户若使用插件,需自行保证 ffmpeg 在 PATH 或可配置路径,本地 cli 转写需自备可用的 whisper 可执行文件与模型目录。
中文路径:Windows 版 whisper.cpp 对非 ASCII 路径敏感;插件会在转写时使用英文临时目录并对模型做硬链接/复制。若仍失败,可调整 TEMP 或改用 backend: "api"。
SkillHub 上的社区目录与 DeepSeek / 幻方无官方从属关系;DSH 生态强调「一切皆插件」,本插件是社区维护的扩展之一。
结尾¶
dsh-audio-tools 把 ffmpeg 侧的探针与转码、以及 whisper.cpp 或 OpenAI 兼容 API 的转写,收敛为三个可对话调用的工具,并零 npm 依赖、不捆绑 ffmpeg,适合在 DSH 里做可复现的音视频处理链路。