5 分钟跑通本地语音 Agent
第一目标平台:MacBook Pro M1 Pro。当前 Alpha 可从相邻 Muxiva 源码构建项目 Python Binding;正式 Release 流水线已准备同版本 wheel。
1. 安装
确认官方 DSH 与 Muxiva CLI 已安装,然后在插件源码目录执行:
npm run doctor -- --fix
npm run models
dsh plugin --profile web add .
doctor --fix 只创建本项目的 .muxiva/venv,不会改系统 Python。模型下载固定 revision 并执行 SHA-256 校验。
2. 运行
TERMINAL Anpm startTERMINAL Bdsh --profile web模型安装完成后,运行 npm run test:e2e 可在不调用云模型和麦克风的情况下认证真实 TTS → PCM → VAD/ASR 闭环。
3. 使用
- 打开 DSH 打印的 Web 地址。
- 新建或打开一个 Session。
- 点击输入框上方的大型语音 Orb。
- 允许浏览器麦克风权限,然后直接说话。
- Agent 播放回答时继续说话,验证即时打断。
架构
16 kHz PCM
barge-in
preview
zh/en final
session / tools
24 kHz PCM
低延迟 Zipformer Partial 只用于 UI 预览;VAD 截断后由 SenseVoice 自动检测中英文并生成唯一提交给 Agent 的 Final。Agent 文本先按自然句边界聚合,再通过 Muxiva formatter 与独立 normalizer Node 清除 Markdown、emoji 并口语化中文数字,最后进入 Kokoro。
打断语义
Silero 检测到新语音时,Muxiva 发出 muxiva.voice.speech.started Signal,取消 TTS 并清空播放;浏览器同步调用 DSH session.cancel()。新 ASR Final 到达后开启下一 Turn。Generation fence 会丢弃已经在后台返回的旧 PCM。
默认模型
| 层 | 默认选择 | 原因 |
|---|---|---|
| VAD | Silero ONNX | 成熟、轻量、MIT |
| ASR Preview | Zipformer2 CTC zh small | 真流式、低延迟、Apache-2.0 |
| ASR Final | SenseVoiceSmall int8 | 中英自动检测、ITN、Apple Silicon CPU |
| Text | speech_text_normalizer | Markdown / emoji / 中文数字口语化 |
| TTS | Kokoro v1.1 zh/en | 中文音色 zf_032、24 kHz、可取消 |
性能数据
第一台认证机器是 16 GB MacBook Pro M1 Pro。当前展示的延迟数字是 Release Gate,不是实测结果;第一份公开实测报告随 npm Release 发布。每个版本必须提交包含 p50/p95/p99、ASR/TTS 实时系数、CPU、峰值内存、中文 CER、英文 WER、打断残留和 30 分钟稳定性的版本化 JSON,否则 Release 会失败。完整测量边界见仓库的 Performance and acceptance。
Doctor
npx @muxiva/dsh-voice doctor检查 Apple Silicon、Node、Muxiva CLI、项目 Python 导入和每个模型校验和。任何一行失败都不会启动 Graph。
安全
- 桥只绑定
127.0.0.1,拒绝第二个浏览器客户端。 - 内部 Node Host 平面使用每次启动生成的 256-bit token。
- npm 安装不执行 prepare/postinstall。
- 音频不上传,无云端 fallback。
- 模型不打进 npm 包,按锁文件单独下载。
- 稳定版前会为浏览器平面补充不落盘的 bearer challenge。
发布到哪里
DSH 当前没有集中式插件市场。正式发布采用 npm 包 @muxiva/dsh-voice,GitHub 仓库添加 dsh-plugin Topic,并提供 GitHub Pages Showcase。每个版本精确声明兼容的 DSH RC 与 Muxiva Release。