NPU 语音识别 sakuraboy9128-cmd/dsh-sensevoice-npu
DeepSeek Harness把本地语音识别推理切换到 Intel NPU 运行
29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/1 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add sakuraboy9128-cmd/dsh-sensevoice-npu该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · model
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 32 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 10 处,展示前 10 条)
- 写入本地文件lib/index.js:102
mkdirSync(workDir, { recursive: true }); - 写入本地文件lib/index.js:103
writeFileSync(join(workDir, 'provider-status.json'), - 执行外部命令固定命令lib/index.js:131
spawnSync('taskkill', ['/PID', String(child.pid), '/T', '/F'], { stdio: 'ignore', windowsHide: true }); - 读取本地文件lib/index.js:141
async function inspectResources(config, paths) { if (!existsSync(config.pythonPath)) return { ready: false, reason: `python not found: ${config.pytho - 读取本地文件lib/index.js:143
if (!existsSync(file)) return { ready: false, reason: `${label} not found: ${file}` }; - 读取本地文件lib/index.js:145
if (config.useVad && !existsSync(paths.vad)) return { ready: false, reason: `vad not found: ${paths.vad}` }; - 写入本地文件lib/index.js:168
mkdirSync(this.paths.workDir, { recursive: true }); - 写入本地文件lib/index.js:169
appendFileSync(this.logPath, `${new Date().toISOString()} ${line}\n`); - 执行外部命令来自配置/变量lib/index.js:197
const child = spawn(this.config.pythonPath, ['-u', worker, payload], { - 发起网络请求lib/index.js:314
const response = await fetch(`http://127.0.0.1:${port}/transcribe?language=${encodeURIComponent(language)}`, {
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 切换语音识别至NPU
- OpenVINO推理
- 本地语音转文字
DSH 语音转文字服务商,用 OpenVINO 在 Intel NPU 上跑 SenseVoiceSmall
README
由 DeepSeek 最新模型翻译生成dsh-sensevoice-npu
把 DSH 的本地语音识别切到 Intel NPU(OpenVINO),并接入官方语音输入模块。
它向官方 @deepseek-ai/dsh-experimental-speech-to-text 服务再注册一个 provider,因此语音按钮、设置卡片、准备进度 UI、语音 API 全部沿用原实现,只有后端推理换成 NPU。
为什么要单独做一个插件
DSH 自带的 dsh-experimental-speech-to-text-sensevoice 在结构上只能用 CPU:
* lib/worker.js 里识别器与 VAD 都写死 provider: "cpu";
* 随包的 sherpa-onnx-win-x64 是 CPU 版 ONNX Runtime,sherpa 的 openvino provider 只会打印 “OpenVINOExecutionProvider is not available … Fallback to cpu”;
* ONNX Runtime 官方没有 Windows 版 OpenVINO 构建;
* 直接让 OpenVINO 编译该模型会让 NPU 编译器崩溃(x_length 生成的注意力 mask 带来无界动态维度)。
展开完整文档(README 剩余 1 节)
dsh-sensevoice-npu 把 DSH 的本地语音识别切到 Intel NPU(OpenVINO),并接入官方语音输入模块。 它向官方 @deepseek-ai/dsh-experimental-speech-to-text 服务再注册一个 provider,因此语音按钮、设置卡片、准备进度 UI、语音 API 全部沿用原实现,只有后端推理换成 NPU。 为什么要单独做一个插件 DSH 自带的 dsh-experimental-speech-to-text-sensevoice 在结构上只能用 CPU: * lib/worker.js 里识别器与 VAD 都写死 provider: "cpu"; * 随包的 sherpa-onnx-win-x64 是 CPU 版 ONNX Runtime,sherpa 的 openvino provider 只会打印 “OpenVINOExecutionProvider is not available … Fallback to cpu”; * ONNX Runtime 官方没有 Windows 版 OpenVINO 构建; * 直接让 OpenVINO 编译该模型会让 NPU 编译器崩溃(x_length 生成的注意力 mask 带来无界动态维度)。 本插件把 x_length 烘焙成常量(NPU 编译器即可接受),按帧桶编译成 IR 跑在 NPU 上,再由一个 Python 子进程通过带鉴权的本地回环 HTTP 提供服务。 目录结构 | 路径 | 作用 | | lib/index.js | cordis 插件:注册 provider、拉起 worker、驱动准备状态机 | | lib/worker.py | 本地回环 HTTP worker(每次请求一段 WAV,Bearer 鉴权) | | lib/sensevoice_npu.py | 前端(fbank + LFR + CMVN)、Silero VAD、NPU 会话、CTC 解码 | | runtime/bootstrap.ps1 | 创建 worker 所需的 Python 虚拟环境 | 前端与 sherpa-onnx 完全对齐:同一套 kaldi_native_fbank 参数、ApplyLfr(7/6)、以及用 ONNX 元数据里的 neg_mean/inv_stddev 做 (x + neg_mean) * inv_stddev,所以识别结果与官方 CPU provider 一致。 安装 前置:模型文件 worker 需要以下三个文件(本插件不下载模型,注册时 downloadSources 为空): | 相对 dataRoot 的路径 | 大小 | | models/sensevoice-onnx/model.int8.onnx | 约 228 MB | | models/sensevoice-onnx/tokens.txt | 约 0.3 MB | | models/silero/silero_vad.onnx | 约 1.7 MB | 官方 dsh-experimental-speech-to-text-sensevoice provider 会把它们下载到同一个 dataRoot(<DSH home>/speech-to-text/sensevoice),所以先让官方 provider 准备一次,或手动放到上表位置即可。 1. 建环境(需要 64 位 Python 3.11–3.13 与 Intel NPU 驱动): pwsh -File runtime/bootstrap.ps1 2. 装进带语音输入 bundle 的 profile(DSH 桌面端用的是 desktop profile): dsh plugin --profile desktop add "file:C:/path/to/dsh-sensevoice-npu" pnpm 是拷贝安装,迭代时把拷贝换成指向工作区的 junction: $d = "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\dsh-sensevoice-npu" Remove-Item -Recurse -Force $d New-Item -ItemType Junction -Path $d -Target C:\path\to\dsh-sensevoice-npu 3. 本 bundle 自带的 cordis.patch.yml 已经完成「选中 provider + 注册插件」两件事,且不含任何机器专属路径:pythonPath 默认取 bootstrap 产物, dataRoot 默认取 DSH 语音根目录。只有你把环境挪到别处时,才需要往 ~/.dsh/profiles/desktop/cordis.patch.yml 追加覆盖(先备份): - id: speech-to-text-npu name: 'dsh-sensevoice-npu' config: pythonPath: <自定义 venv>\Scripts\python.exe # 仅当 bootstrap 用了 -VenvDir dataRoot: <自定义语音根目录> # 仅当 DSH_HOME 非默认 4. 重启 DSH。语音输入卡片会出现 SenseVoiceSmall · Intel NPU (NPU) 并默认使用它;首次准备会编译一次 NPU 图(约 2.5 分钟),之后启动约 0.2 秒。 若卡片仍指向 CPU provider,在语音输入设置里手动选 NPU 那个(显式选择会覆盖 patch 默认值)。 配置项 | 键 | 默认 | 说明 | | pythonPath | %LOCALAPPDATA%\dsh-sensevoice-npu\venv\Scripts\python.exe | worker 解释器(bootstrap 产物) | | dataRoot | <DSH home>\speech-to-text\sensevoice | DSH 语音根目录,模型读自 <dataRoot>/models | | precision | int8 | int8(model.int8.onnx)或 fp32(model.onnx) | | device | NPU | 识别器设备(NPU/GPU/CPU) | | vadDevice | CPU | Silero VAD 设备;模型极小且是动态 shape,NPU 编译会拒绝 | | useVad | true | 去静音、把长录音切成若干段 | | buckets | 插件配置里为 [256] | 允许编译的帧桶;256 帧 ≈ 15 秒音频 | | prewarmBuckets | [256] | worker 就绪前先编译的桶 | | idleTimeoutMs | 600000 | 空闲回收 worker(编译产物仍留在磁盘缓存) | 每多一个桶大约多占 800 MB 磁盘(烘焙 IR + OpenVINO NPU 缓存)并多一次约 2.5 分钟的编译,默认只用一个桶即可。 实测(Core Ultra X7 358H / Arc B390 / NPU 驱动 32.0.100.5540) | 场景 | 结果 | | 热启动(缓存命中) | 0.21 s | | 4.5 s 中文 | 今天天气不错,我们去公园散步吧,0.66 s | | 5.2 s 中文 | 明天上午10点开会,记得带上项目进度报告,0.48 s | | 14.5 s 中文 | 整句正确,0.65 s | | 每个桶首次编译 | 100–145 s,之后走缓存 | CPU 只负责前端(fbank + VAD,几毫秒)与 JSON 转发,重头计算全在 NPU。 需要说明的是:这么短的音频上 NPU 并不比 CPU 版 sherpa 快(约 0.5 s vs 0.2 s),收益在于把重活从 CPU/GPU 挪走。 开发 node --test # 6 个测试,无依赖 覆盖注册契约(provider id、设备标签、诊断文件)、pythonPath/dataRoot 的可移植默认值,以及两个若不早拦就会在后面才炸的配置:空桶列表与相对路径。 常见问题 * 确认 profile 是否真的加载了插件、当前阶段与设备: Get-Content "$env:USERPROFILE\.dsh\speech-to-text\sensevoice\npu\provider-status.json" * 提示 NPU device not visible → 升级 Intel NPU 驱动(已测 32.0.100.5540)。 * 提示 NPU compile failed → 删除 <dataRoot>/npu 重试,并确认磁盘剩余空间(每个桶约 1 GB)。 * 首次用到新桶时较慢 → 正在编译;之后走缓存。 * 卡片仍显示 CPU provider → 在语音输入设置里手动选 SenseVoiceSmall · Intel NPU (NPU)。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
sakuraboy9128-cmd/dsh-sensevoice-npu
把本地语音识别推理切换到 Intel NPU 运行
相关插件 · 模型接入
API 中继安全审计toby-bridges/api-relay-audit
面向 AI API 中转与 LLM 代理的本地安全审计。
★ 897已汉化DSH
69.4
免费搜索插件DDDMUC/dsh-free-search
DeepSeek Harness 免费搜索插件 —— 无需 API key,零成本,多引擎可切换。 一个给…
★ 761已汉化DSH
68.7
免费联网搜索liustack/modsearch
在官方 App 里模型能联网,切到 API 就不能了。ModSearch 把联网补回来:网页搜索、X…
★ 863已汉化DSH
68.5
OpenCode 免费模型FishBottle7/opencode2dsh
在 DSHDeepSeek Harness里原生使用 OpenCode Zen 的免费匿名模型。
★ 379已汉化DSH
67.8
AI 模型网关tingly-dev/tingly-box
Tingly Box Web UI 演示
★ 373已汉化DSH
67.4
WorkBuddy 账号池XDTrees/dsh-xdpool
把你能白嫖的模型额度接进 DSH 同一个池:WorkBuddy 多账号自动容错、十三家扫码登录、76…
★ 359已汉化DSH
67.1