Skip to content
跳到项目内容
全部项目
AI 产品/内部体验

语音交互应用平台

连接 ASR、语言模型与语音合成的应用平台与桌面工作台

RustAxumWebSocketMCPElectron
平台总览 · 能力资源与近 7 日观测01 / 03

项目速览

业务背景

不同语音应用需要复用识别、对话、合成和工具调用能力,同时管理厂商资源、模型选择与发布版本。平台将这些配置组织为项目与应用,形成 ASR → LLM → TTS 级联和厂商原生实时两种会话;桌面工作台把同样的能力带到本机,供开发者用 CLI、MCP 与技能调用。

负责范围
  • 项目与应用管理
  • 语音级联链路与厂商实时协议
  • MCP 工具调用
  • 权限、发布与回滚
  • 桌面工作台、CLI 与全局技能
426 项

Rust 回归

上线前全量结果,另有 3 项浏览器专项单独执行;公网门禁 16 项、冒烟 6 项通过。

413 / 798 ms

厂商首包

官方授权实测:Paraformer 首个中间结果、CosyVoice 合成首包,测试音频 4.6 秒。

10 个工具

桌面 MCP

桌面工作台 0.2.0 提供 CLI、标准 MCP 与 3 个全局技能;成品验收 12 项通过。

01

核心业务

语音应用平台将项目、应用、厂商资源和发布版本分开管理。应用可以选择 ASR、LLM、TTS 与 MCP 工具;已有资源配置可以复用,但修改厂商资源不会直接改写已经发布的应用快照。

运行端既处理 ASR → LLM → TTS 级联,也处理阿里、豆包等厂商实时协议。工程重点是轮次、传输、模型配置和工具调用之间的状态一致性,尤其要区分服务端已生成回复、浏览器已收到音频和用户已播放完成。

平台已以独立入口部署到云服务器供内部体验,原有业务服务与入口保持不动;同期推出桌面端工作台,把 ASR、LLM、TTS 单步和级联配方带到本机,并通过 CLI、MCP 和全局技能供开发工具调用。

01应用与发布
项目和应用配置保存为版本快照,体验入口绑定发布配置,支持回滚。
02厂商资源
模型目录、地址、鉴权方式和能力配置按 Provider 管理,凭据只在服务端使用。
03实时会话
ASR、模型回复、音频播放和 MCP 调用按会话与轮次归属,终态后拒绝迟到事件。
04桌面工作台
本机授权后提供 ASR、LLM、TTS 单步与级联配方,CLI、10 个 MCP 工具和 3 个全局技能复用同一套能力。
02

技术栈

界面
JavaScript浏览器音频WebSocket
服务端
RustAxumTokioSQLx
数据与校验
SQLiteJSON Schema加密凭据存储
接入协议
ASR / LLM / TTS Adapter厂商实时协议MCP
桌面端
ElectronReactTypeScriptCLI
03

系统架构与部署

管理端生成应用快照,运行端装载固定配置。厂商协议适配与 MCP 工具通过会话编排连接,数据记录保留轮次和故障原因。

平台后端

Rust / Axum / Tokio / SQLite

管理应用、资源、会话、发布快照与权限,持久化轮次和处理阶段。

实时连接

WebSocket / 厂商 Adapter

代理音频与事件,分别约束上行厂商连接和下行浏览器连接。

浏览器体验

WebAudio / 测试麦克风 / 配置界面

接收正式回复与音频,展示会话阶段和故障状态;浏览器与厂商两侧每 20 秒主动探测连接。

桌面工作台

Electron / React / TypeScript

macOS arm64 内部体验版;CLI 与标准 MCP 复用平台能力。

04

核心业务链路

配置更新与已发布应用隔离

  1. 1厂商资源
  2. 2应用配置
  3. 3发布快照
  4. 4会话初始化

模型发现只更新资源目录,不自动切换应用模型;应用重新发布后才使用新选择。拉取目录失败保留上一次成功结果,过期的异步响应不能覆盖并发修改后的账号配置。

传输失败后保持不可恢复的轮次终态

  1. 1写入期限
  2. 2首个故障原因
  3. 3停止事件
  4. 4持久化 failed / cancelled

上游和浏览器写入设置期限,失败后不再复用对应 sink。客户端正常关闭保留取消原因;故障后到达的完成、输入或输出事件不会把已失败轮次改成成功。初始化失败只向仍健康的浏览器通知。

05

关键机制与取舍

01跨厂商协议统一的是业务语义

约束
级联 ASR / LLM / TTS 与厂商实时接口的帧格式、轮次结束和音频输出不同,简单转发无法形成可解释的应用状态。
做法
将厂商协议封装为 Adapter,平台会话保存统一的轮次与处理阶段;正式回复、思考内容与音频结果分别处理。模型目录刷新有大小、超时和重定向限制,不将上游错误正文透传到界面。
效果
应用配置面向能力和资源,实时运行仍保留厂商协议特征,避免通过隐藏差异制造错误兼容。

02双跳连接的首故障与关闭语义

约束
上游先失败、浏览器随后关闭时,收尾通知又可能失败。如果每次错误都覆盖原因,真实问题会被最后一个连接错误掩盖。
做法
记录首个传输故障,同时独立标记浏览器是否可写。失败或已发送关闭帧后拒绝后续事件;数据库暂时失败时停止业务接收,并在关闭路径按原始原因重试保存。
效果
正常取消、上游发送失败和浏览器发送失败有明确区别,迟到事件不能恢复终止轮次。

03与原有业务并存的隔离上线

约束
服务器上已有业务服务在运行,新平台上线不能改动原入口,也不能和原业务共用一份正在写入的数据库。
做法
新平台使用独立入口和数据目录,业务快照迁移后新旧两库各自写入。上线前跑 Rust 全量回归、公网门禁与冒烟,并逐页截图检查平台和项目视图;失效的厂商模型在配置中替换,不改代码。
效果
原有入口不受影响;真实级联讯飞 ASR → DeepSeek → 讯飞 TTS 以合成语音输入跑通。部分自研模型路由尚未迁移,不写作全链可用。
06

AI 协作开发

Rust 服务的功能迭代、回归门禁和独立入口部署由 Agent 推进,61 份带日期的验收文档记录每一轮改动。

  • Agent 负责

    回归门禁与独立部署

    每轮改动跑 418–426 项 Rust 回归和 16 项公网门禁,以独立入口部署内部体验版本,原业务入口不动。

  • 验证口径

    模拟部分单独标注

    浏览器测试使用真实 Chrome 与 WebAudio,厂商协议用本地 Mock,验收文档明确标为模拟;真实级联只用合成语音输入验证。

  • 仓库规则

    清理只动可重建产物

    先停预览并确认端口释放,只删除已批准、可重建的构建产物,不执行 git clean 或 reset,并报告回收的空间。

一次部署用了带未提交改动的工作区快照,线上版本与仓库提交对不上,记录里明确写出这一点。

07

阶段成果

  • 项目、应用、资源发现、MCP、发布与审计以独立入口上线内部体验,原有业务入口不变。
  • 传输故障、正常关闭与迟到事件经过故障注入和浏览器协议模拟验证;实体设备、压力测试与长期稳定性尚未验收。

继续浏览

语音交互应用平台 · 平台总览 · 能力资源与近 7 日观测
100%
语音交互应用平台放大预览

平台总览 · 能力资源与近 7 日观测

别急,先让缓存热一下。