neurocis/a0_voqualizer
GitHub: neurocis/a0_voqualizer
这是一个为Agent Zero代理提供实时、全双工流式语音交互能力的WebSocket桥接插件,解决了语音输入与AI代理之间的低延迟、可打断的流式传输问题。
Stars: 0 | Forks: 0
# a0_voqualizer
**🎙️ 为 Agent Zero 提供的实时流式语音 ↔ 代理 ↔ 语音传输。**
`a0_voqualizer` 是一个全双工 WebSocket 桥接插件,可将麦克风或电话音频流式传输到 Agent Zero,返回流式 ASR 的部分和最终结果,流式传输代理令牌的增量,并将合成的流式 TTS 音频发送回客户端。它支持打断、编解码器协商、会话恢复、有界队列背压、按会话的承载令牌授权、浏览器设置/测试器 UI 以及可移植的移动/VoIP 参考客户端。
## 当前状态
M1–M8.4 功能已实现,v0.1.0 候选发布版打包已就绪:
- WebSocket 协议处理器:`plugins/a0_voqualizer/ws_voqualizer`
- REST 管理端点:`/api/plugins/a0_voqualizer/voqualizer_admin`
- 带有确定性模拟提供程序(用于测试)的 ASR/TTS 适配器
- A5.5 按会话 `bearer_token` 语义
- 插件内测试器、提供程序设置面板和诊断覆盖层
- iOS、Android、Twilio Media Streams 和 Asterisk 参考示例
- 安全审查、确定性编解码器模糊测试、32 会话负载测试工具以及稳定的错误分类/遥测
常规 pytest 是确定性的,不需要后端重启、真实凭据、外部网络、模型下载、实时浏览器、实时 LLM/提供程序调用、平台 SDK、电话账户、Node 安装、Asterisk 安装或实时 A0 后端。
## 快速入门
1. 在 Agent Zero 中启用该插件。
2. 打开 **A0 Voqualizer 设置** 模态框 — 这是标准的 A0 插件设置模态框,内容由 `webui/config.html` 填充(行为开关、默认提供程序、协议默认值、运行时限制)。
3. 点击 **打开提供程序编辑器** 以加载精美的提供程序编辑器 `webui/providers.html`,用于 ASR/TTS 提供程序的增删改查和 **测试提供程序**。
4. 点击 **打开测试器** 以启动 `webui/tester.html`。
5. 在测试器中,点击 **连接**,然后点击 **启动麦克风**。
测试器通过 `audio-worklet.js` 捕获 PCM16/16k 麦克风音频,在 `tester-store.js` 中使用 A2 4 字节头进行分帧,使用签发的 `bearer_token` 发送 `voqualizer_audio_chunk`,渲染 ASR/代理响应,播放流式 PCM16 TTS,并显示延迟/帧诊断信息。
## WebSocket 协议
客户端 → 服务器:
- `voqualizer_init` — 握手、提供程序/编解码器协商、会话绑定。
- `voqualizer_audio_chunk` — A2 分帧的二进制音频加上按会话的令牌。
- `voqualizer_user_text` — 直接文本/TTS 冒烟测试路径。
- `voqualizer_control` — `mute`、`unmute`、`barge_in`、`end_session`、`resume`。
- `voqualizer_ping` — 心跳。
服务器 → 客户端:
- `voqualizer_ready` — 能力、协商的提供程序/编解码器、`session_id` 以及按会话的 `bearer_token`。
- `voqualizer_asr_partial` / `voqualizer_asr_final` — 流式转录文本。
- `voqualizer_agent_delta` / `voqualizer_agent_response_final` — 代理输出。
- `voqualizer_tts_chunk` / `voqualizer_tts_done` — 流式 TTS 音频。
- `voqualizer_error` — 稳定的 A8.3 错误分类。
- `voqualizer_pong` — 心跳回复。
### A2 音频帧
`voqualizer_audio_chunk` 载荷包含一个 4 字节的网络字节序头部,后跟编解码器有效载荷字节:
| 字节 | 字段 |
|---|---|
| 0–1 | `uint16 seq` |
| 2–3 | `uint16 ts_ms` |
| 4… | 音频有效载荷 |
默认的可移植编解码器路径是 `pcm16/16k`。电话示例在 µ-law/8k 或有符号线性 PCM16/8k 与 PCM16/16k 之间进行转码。
## 配置和设置面板
- 默认配置位于 `default_config.yaml`。
- 运行时覆盖层在保存时位于 `config.json`。
- `webui/config.html` 是标准的 A0 插件 **设置模态框** 片段(使用 Alpine `` 和 `x-model` 绑定来处理行为、默认提供程序、协议默认值和运行时限制)。
- `webui/providers.html` 是精美的独立 **提供程序编辑器**,用于 ASR/TTS 提供程序的增删改查、默认值设置和 **测试提供程序** 按钮。
- `webui/config-store.js` 使用 `credentials: 'same-origin'` 调用同源管理端点进行提供程序的加载/保存/测试。
## 文档
- `docs/security/review.md` — A8.1 安全审查。
- `docs/performance/load-test-32-sessions.md` — A8.2 负载测试报告。
- `docs/protocol/errors.md` — A8.3 稳定的错误分类 + 遥测。
- `docs/clients/portability.md` — M7 客户端可移植性矩阵。
- `examples/README.md` — 示例客户端索引。
- `CHANGELOG.md` — v0.1.0 发行说明。
## 示例
- `examples/ios-swift/` — iOS Swift 参考客户端。
- `examples/android-kotlin/` — Android Kotlin 参考客户端。
- `examples/twilio-media-streams/` — Node.js Twilio 桥接。
- `examples/asterisk-audiofork/` — Python Asterisk AudioSocket 桥接。
## 布局
```
a0_voqualizer/
├── api/ # WS endpoint + REST admin
├── helpers/ # auth, codec, frame, jitter, registry, telemetry
├── webui/ # settings panel, tester, AudioWorklet
├── examples/ # iOS, Android, Twilio, Asterisk
├── docs/ # security, performance, protocol, client docs
├── tools/ # deterministic load harness
└── tests/ # pytest suites
```
## 许可证
MIT — 请参阅 `LICENSE`。
标签:Android, Asterisk, CMS安全, DSL, iOS, JavaScript, PMD, Python, REST API, SEO 语音搜索, Twilio, VoIP 集成, WebSocket 桥接, 人工智能代理, 代理助手, 会话管理, 实时流处理, 实时通信, 授权认证, 插件开发, 数据可视化, 无后门, 测试工具, 浏览器兼容, 移动应用开发, 管理界面, 编码协商, 背压机制, 诊断工具, 语音代理, 语音合成 (TTS), 语音控制, 语音识别 (ASR), 负载均衡, 负载测试, 逆向工具, 通信协议, 音频流处理, 音频编解码