接入自建转写端点,把录音可靠变成输入文字
29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/9 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add apetersson/dsh-voice-input-local该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 接入自建转写端点
- 录音转文字
- 自带语音输入界面
给 DSH 语音输入做本地语音转文字,走任意兼容 OpenAI 的转写端点,另附自带语音 UI 的分支(重试、后台安全采集、内联 voice_input 标记、蓝按钮发送、麦克风右键菜单)
README
由 DeepSeek 最新模型翻译生成dsh-voice-input-local
为 DeepSeek Harness 语音输入提供语音转文字,识别服务由你指定的端点提供——本地端点或已有端点都行,只要能跑转写模型。凡是支持 OpenAI 兼容的 POST /v1/audio/transcriptions 协议的服务都能用:llama-swap、speaches、whisper.cpp server、LocalAI、vLLM、托管 API。下面的示例用 llama-swap 跑 Parakeet v3。
除此之外,还附带一份对官方语音 UI 的 fork,修掉了原版在录音失败或中断时的处理问题。
两个包,使用时无需下载模型:
| 包 | 端 | 作用 |
| speech-to-text-endpoint | Host | 为每个配置的模型注册一个 speechToText 服务商,通过端点的 OpenAI 兼容 /v1/audio/transcriptions 路由做转写 |
| voice-input-plus | Client | 输入框麦克风:重试、后台安全采集、内联标记、蓝色按钮发送、右键选项 |
两者都基于官方 @deepseek-ai/dsh-experimental-voice-input-bundle 构建,语音注册表、已认证的浏览器 Remote、输入框里的麦克风位置都由它负责。
展开完整文档(README 剩余 1 节)
dsh-voice-input-local
为 DeepSeek Harness 语音输入提供语音转文字,识别服务由你指定的端点提供——本地端点或已有端点都行,只要能跑转写模型。凡是支持 OpenAI 兼容的 POST /v1/audio/transcriptions 协议的服务都能用:llama-swap、speaches、whisper.cpp server、LocalAI、vLLM、托管 API。下面的示例用 llama-swap 跑 Parakeet v3。
除此之外,还附带一份对官方语音 UI 的 fork,修掉了原版在录音失败或中断时的处理问题。
两个包,使用时无需下载模型:
| 包 | 端 | 作用 |
| speech-to-text-endpoint | Host | 为每个配置的模型注册一个 speechToText 服务商,通过端点的 OpenAI 兼容 /v1/audio/transcriptions 路由做转写 |
| voice-input-plus | Client | 输入框麦克风:重试、后台安全采集、内联标记、蓝色按钮发送、右键选项 |
两者都基于官方 @deepseek-ai/dsh-experimental-voice-input-bundle 构建,语音注册表、已认证的浏览器 Remote、输入框里的麦克风位置都由它负责。
你能得到什么
- 自己的识别器。 端点跑什么模型就用什么——示例里是 Parakeet v3——全在你自己的机器上。首次使用无需下载:Host 启动时识别器就报告 ready。
- 重试,而不是重录。 官方 UI 在转写失败时会把音频丢掉,只给一个重新录制。这里会保留这段录音,重试转写会把它重新发出去。
- 失焦也能转写。 窗口失去焦点或隐藏后无法继续录音,但可以收尾:这段录音会被转写并留在草稿里。它绝不会自己发送。
- 发送就是蓝色按钮。 录音进行中,输入框的蓝色按钮会一键完成停止、转写、提交。先按停止则只插入文本,供你检查。
- 听写文本有标记。 每段转写返回时都包在 <voice_input>…</voice_input> 里,模型能区分听写和手打——你也能,因为手打的文本留在元素外面。
- 右键点麦克风,可以打开语音输入设置和识别器选项。
环境要求
- DeepSeek Harness 0.2.0-rc.2(客户端包是该版本所带 bundle 的 fork)。
- 一个能访问转写模型的端点。Parakeet v3 的 llama-swap 配置大致如下:
llama-swap config.yaml
apiKeys:
- "${env.LLAMA_SWAP_API_KEY}"
models:
parakeet-v3:
aliases: [parakeet-v3]
cmd: /path/to/audio-venv/bin/python /path/to/audio_service.py
proxy: http://127.0.0.1:18083
checkEndpoint: /health
capabilities:
in: [audio]
out: [text]
- apiKeyEnv 指定的凭据(默认 LLAMA_SWAP_API_KEY),通过 DSH 凭据服务,或在 Host 环境中导出。密钥绝不放在配置文件里。
安装
1. the speech service, browser Remote and microphone seat
dsh plugins enable @deepseek-ai/dsh-experimental-voice-input-bundle
2. the recognizers
dsh plugins install file:$PWD/packages/speech-to-text-endpoint
3. the voice UI fork
dsh plugins install file:$PWD/packages/voice-input-plus
然后应用配置档补丁,把语音服务指向你的识别器,禁用内置的 SenseVoice 模型,并把麦克风席位交给这个分支:
~/.dsh/profiles/<profile>/cordis.patch.yml
- id: speech-to-text
name: "@deepseek-ai/dsh-experimental-speech-to-text"
config:
defaultProvider: parakeet-v3
language: auto
Keeps the provider picker on the local endpoint and avoids a ~239 MB download.
- id: speech-to-text-sensevoice
name: "@deepseek-ai/dsh-experimental-speech-to-text-sensevoice"
disabled: true
conversation.input.activity is a single slot, so exactly one of the two may be enabled.
- id: ui-voice-input
name: "@deepseek-ai/dsh-experimental-client-ui-voice-input"
disabled: true
启动 DSH,打开 Settings → Plugins → Voice input,选择你的识别器。
配置
每个字段都可以在 Settings → Plugins → dsh-speech-to-text-endpoint → Configure 中编辑,也可以在配置档补丁里同一行的 config 块中编辑。
| Key | Default | Meaning |
| baseURL | http://127.0.0.1:10888/v1 | 转写端点的 OpenAI 兼容 base URL |
| apiKeyEnv | LLAMA_SWAP_API_KEY | 凭据引用,每次转写时解析 |
| models | [parakeet-v3] | 该端点提供的模型 id;每个都会成为一个服务商 id |
| wrapTranscript | true | 返回的转写文本包在 <voice_input>…</voice_input> 中 |
| timeoutMs | 900000 | 每次转写的超时时间,覆盖服务器加载模型时的冷启动 |
| maxResponseBytes | 4194304 | 响应大小上限 |
models 就是你的名单:把该端点提供的每个 id 都列出来,每个都会成为独立的服务商。发送的内容只有模型 id、音频和一个 response_format,读取的也只有响应里的 text 字段,所以这里不依赖某个服务器的扩展。哪个识别器是默认值,是另一个选择:在 voice-input bundle 页面上的选择器里设置,存为 speech-to-text.defaultProvider。
设计说明
几个有意思的决定,以及背后的原因:
标签由服务商生成,而不是客户端。 DSH 插件的客户端部分收不到任何配置——启动入口创建时不带配置——所以放在那里的开关永远不会出现在 UI 里。从 Host 返回 <voice_input>…</voice_input>,wrapTranscript 就成了普通的配置字段,任何使用该服务商的一方都能受益。缓存也不花什么代价:标签就附在用户自己的消息里,不需要为它追加动态提示词上下文。早先的一个版本确实用了提示词上下文;DSH 会把它们作为尾部用户消息追加,从不改写系统提示词,所以缓存本来就没有风险,但内联形式完全避免了多出一条历史记录。
蓝色按钮由一个隐形标记启用。 发送按钮归 dsh-client-ui-conversation 所有,只要 draft.trim() === "" 就禁用它,并通过自己的 keyboard.submit 注入来派发——没有插件钩子。所以 fork 只能做两件可行的事:在捕获插入区间之前,往空草稿里写入一个 U+200B(这会翻转 empty 检查),以及在 document 上挂一个捕获阶段的 click 监听器,把主按钮识别为 [data-composer-card] 内最后一个 button[class="_primary"],并在录制 take 期间认领这次点击。每条退出路径都会释放标记,监听器也会在正常发送前剥掉残留,所以它永远不会到达模型。如果上游标记结构变了,最坏情况就是按钮被禁用——和以前一样。
客户端包是 vendored fork。 packages/voice-input-plus/lib/client.js 是从 app.asar 里取出的发布 bundle,加了针对性补丁;上游构建步骤不会重跑。这就是在不给代码签名应用 bundle 打补丁的前提下,改变 composer 行为要付出的代价。完整补丁表见包 README。
已知限制
- DSH 更新不会传到 fork。 需要针对新的 lib/client.js 重新应用补丁表,或者删掉这个包,重新启用随发行版提供的行。
- dsh-hmr 忽略 /node_modules*,而且 pnpm 不会重新复制已变更的 file: 依赖。因此编辑任一包都意味着要把文件部署到配置档副本里并重启 DSH;包 README 里给出了 rsync 命令行。
- 听写出的斜杠命令不再以 / 开头,因为标签排在最前面。
- 右键菜单必须从 getAnchorRect 返回 DOMRect 字段名(left、top、right、bottom)。返回 x/y 会让列表定位到虚无之处,看起来和「右键没反应」一模一样。
- composer 标记是为了弥补缺失的扩展点而做的 DOM 层适配,不是 API。
来源与许可
MIT。packages/voice-input-plus/lib/client.js 是 @deepseek-ai/dsh-experimental-client-ui-voice-input 的修改副本,来自 deepseek-ai/deepseek-harness,该项目采用 MIT 许可;原始版权予以保留。此处内容与 DeepSeek 无隶属关系,也未获其背书。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
apetersson/dsh-voice-input-local
接入自建转写端点,把录音可靠变成输入文字
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,362已汉化DSH
71.4
终端编码代理esengine/DeepSeek-Reasonix
· 指南 · ACP · 扩展开发 · 规格 · 官方网站 · Discord · QQ
★ 36,076已汉化DSH
71.2
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,814已汉化DSH
71.1
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。