dsh-local-transcribe:基于 whisper.cpp 的完全本地语音转写 DSH 插件

前言

在 DSH 里做会议记录、播客整理或从视频抽字幕时,若走云端 ASR,既要上传音频,又受配额与隐私策略约束。自备 whisper.cpp 可以本地推理,但命令行拼路径、合并多段文件、对齐时间轴仍要手工处理。dsh-local-transcribe 由维护者 bizbin 发布,归类为模型推理,把 whisper.cpp 接到 DSH:提供侧边栏可视化面板,并在智能体会话中暴露 transcribe_audio 工具,转写与音频处理均在本机完成。

这是什么

dsh-local-transcribe 是 DeepSeek Harness(DSH)插件,用 whisper.cpp 做完全本地语音转文本,音频不上传外网。宿主仓库:bizbin/dsh-local-transcribe;社区目录页:SkillHub 插件页。许可证 MIT;package.json 标明版本 1.0.0,要求 DSH >=0.2.2-rc.1 且使用 web profile。

核心功能

可视化面板

打开侧边栏波形图标后,可拖拽或浏览本地文件;多文件可按顺序合并再识别。上传文件落在 ~/.dsh/storages/local-transcribe-uploads/,单文件上限 500 MB。转写过程中显示阶段与进度;结束后可预览全文、分段时间轴,播放合并音频,并就地编辑文本后保存(会重写原始 txt 并重新生成 markdown)。

智能体工具 transcribe_audio

任意 agent 会话可调用:单文件用 path,多文件按序合并用 paths;可选 language、prompt、output_dir、output_name、markdown、keep_wav 等。返回完整文本、分段时间轴与输出文件路径。

格式与安全

支持的输入包括 m4a、mp3、wav、flac、aac、ogg、opus、wma、m4b、amr、aiff、aif、caf,以及 mp4、mov、mkv、avi、webm、m4v、ts、3gp、mpg、mpeg 等视频容器。面板 HTTP 路由(/local-transcribe/rpc、/local-transcribe/upload、/local-transcribe/play/*)仅接受环回地址(127.0.0.1 / localhost),插件卸载时路由会移除;转写依赖本机二进制,音频不离开本机。

环境与依赖

使用前需满足:

  1. 已运行 DSH(≥ 0.2.2-rc.1),且 profile 为 web。
  2. 系统 PATH 上有 ffmpeg / ffprobe(macOS 可用 brew install ffmpeg)。
  3. 已编译 whisper.cpp,能得到 whisper-cli 可执行文件,并下载 ggml 模型文件。

whisper.cpp 与模型示例如下(摘自官方 README):

git clone https://github.com/ggml-org/whisper.cpp
cd whisper.cpp && cmake -B build -DCMAKE_BUILD_TYPE=Release && cmake --build build -j
curl -L -o ggml-medium.bin https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-medium.bin

安装与启用

在 DSH 中可通过 Plugin Manager,或由智能体执行 install_bundle,指向本插件解压后的绝对路径。README 给出的直接安装说明为:

# 在 DSH 中向智能体说明,或在 Plugin Manager UI 中执行:
#   install_bundle <dsh-local-transcribe 目录的绝对路径>

也可从 Plugin Manager 安装 bundle(需先取得仓库内容到本地目录)。插件以当前 DSH 进程权限运行,安装前请自行查看源码与 MIT 许可证。

配置

在 profile 的 cordis.patch.yml 中,为 local-transcribe 条目填写 config:

- id: local-transcribe
  config:
    whisperCli: /path/to/whisper.cpp/build/bin/whisper-cli
    model: /path/to/ggml-medium.bin
    # ffmpeg: ffmpeg
    # ffprobe: ffprobe
    # language: zh
    # prompt: '以下是普通话的句子。'
    # threads: 10
配置项 默认值 含义
whisperCli PATH 上的 whisper-cli whisper-cli 可执行文件路径
model (必填) ggml 模型文件的绝对路径
ffmpeg / ffprobe ffmpeg / ffprobe PATH 或绝对路径
language zh 默认语言;auto 为自动检测
prompt 以下是普通话的句子。 whisper 初始 prompt
threads 10 whisper-cli 线程数

whisperCli 与 model 是日常使用里最常需要改的两项。

典型用法

面板工作流

  1. 打开侧边栏波形图标。
  2. 拖拽或选择音频(或视频),调整多文件顺序,指定输出目录、语言与 prompt。
  3. 点击 Transcribe,等待进度完成。
  4. 预览时间轴、试听合并音频,按需编辑后点 Save edits。

默认输出目录为首个输入文件旁,或由面板指定的 output_dir,生成:

  • <name>_原始转写.txt — 纯文本
  • <name>_带时间轴.json — 毫秒级分段
  • <name>_转写稿.md — 按分钟分节的 markdown

在会话中调用 transcribe_audio

在已加载该插件的 DSH 会话中,让智能体对本地文件调用 transcribe_audio:单文件传 path,多段合并传有序 paths,并按需设置 language、output_dir 等;工具返回全文、时间轴与写出路径,便于后续摘要或入库。

适用场景与注意

适合需要在本地处理会议录音、采访、课程视频字幕,且希望与 DSH 智能体共用同一套转写能力的开发者。中文默认可将 language 设为 zh,并用 README 中的 prompt 示例减少误识别。

注意:转写速度与质量取决于所选 ggml 模型与 threads;面板单文件 500 MB 限制需自行拆分超大素材。DSH 生态强调「一切皆插件」;SkillHub 等目录为社区站点,与 DeepSeek / 幻方无官方从属关系。

链接

  • 目录页:https://www.skillhub.cn/plugins/bizbin/dsh-local-transcribe
  • GitHub:https://github.com/bizbin/dsh-local-transcribe
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜