边生成边播报,不再等一整段回答
传统做法是「等模型把整段话写完,再送去合成语音」,一句话稍长就要等好几秒,体验像在对着机器喊命令。 本服务端把链路拆细:识别结果实时回流、模型流式输出、按标点切句后立即送进语音合成, 第一句音频往往在模型还在写第二句时就已经开始播了。
- 语音识别与识别文本同屏显示,边说边出字
- 按中文标点智能分句,避免把一句话切得七零八落
- 音频按帧连续下发,客户端无需缓冲整段再播放
- 连接按进程隔离,一个人说长句不会卡住另一个人的对话
| 行为 | 没有打断能力 | 本服务端 |
|---|---|---|
| AI 说话时说话 | 被忽略,或等它说完 | 立即停止播报 |
| 上游模型请求 | 继续跑到结束,白白消耗额度 | 立刻中止,不再计费 |
| 已合成的音频 | 继续播完这一整段 | 直接丢弃,残留 0 字节 |
| 打断后 | 需要重新唤醒再来一次 | 自动接续你的新问题 |
像跟真人说话一样,随时插话
打断的关键不在前端,而在服务端能不能「一边说话一边听」。本服务端在播报期间持续以非阻塞方式 轮询 socket,一旦收到新的语音帧或文本输入,就立刻中止当前回答——包括向上游模型发送中止信号, 而不是只把音量关掉。
- 监听循环不阻塞,插话响应稳定在百毫秒级
- 被打断的半截回答会以「已中断」状态保存,方便回看
- 打断后你说的话会被当成新一轮问题继续处理
- 管理员可在「系统设置 → 对话行为」全局关闭,或按智能体单独设置
每次都像在跟同一个老朋友聊天
记忆不是把整段聊天记录塞回去,而是让模型自己「做笔记」:从对话里抽取关于你的事实与偏好, 按「用户 + 智能体」两个维度隔离存放。下次开新会话时,只把相关的少量记忆注入系统提示词, 既省 token,又让回答自然带上你的信息。
- 自动抽取,不用手动填写任何「用户画像」
- 写入前做相似度去重,不会反复堆积同一件事
- 超长对话会自动压缩成摘要,避免细节被挤掉
- 后台可逐条查看、单独删除,也能按智能体或整库清空
- 设备 2 台
- 智能体 1 个
- 记忆 12 条
- 对话 46 段
- 设备 1 台
- 智能体 2 个
- 记忆 5 条
- 对话 18 段
一套服务端,多人共用也互不打扰
每个账号拥有独立的设备、智能体、记忆与对话记录。所有查询都在数据库层带上用户条件, 控制器还会额外校验记录归属;即使有人手工拼一个别人的 ID 提交,也只会拿到「无权访问」。
- 列表页、详情页、删除操作全部做归属校验
- 越权请求按标准语义返回 403,而不是「假装成功」
- 设备绑定有尝试次数限制,防止验证码被逐个试出来
- 管理员可代管全部账号,普通用户只能看到自己
开源小智固件刷完即连,不用改设备代码
服务端内置了设备侧的 OTA 配网接口与 WebSocket 协议实现。设备开机请求 OTA 地址, 服务端自动下发 WebSocket 地址与一次性鉴权令牌;之后设备按固定帧长上送音频, 剩下的识别、生成、合成全部由服务端完成。
- OTA 地址与请求协议自动匹配,返回 ws 或 wss 不用手改配置
- 未绑定设备下发 6 位验证码,绑定后立即作废,不再重复下发
- 网页端与硬件端共用同一套智能体配置,改一次两边都生效
- 设备列表可看在线状态、累计通话时长,支持重发验证码与解绑
// 设备开机请求 OTA,服务端下发连接信息 { "websocket": { "url": "wss://你的域名/ws/", "token": "048213" }, "activation": { "code": "048213", "message": "6位验证码已下发" }, "firmware": { "version": "1.0.0" } }
- 按住说话,松手即发送,也可直接打字
- AI 回答途中说话即可打断,无需等它说完
- 刷新页面后继续上次的会话,不必重开
- 可在页面内切换智能体,一个页面管理多个角色
- 逐字流式显示回答,不是「转圈等一坨」
没有硬件,也能完整跑一遍语音体验
网页端与硬件端走的是同一条服务端链路,因此它既是最好的上手方式,也是最好的排障工具: 模型通不通、语音识别准不准、打断灵不灵,在浏览器里点几下就知道了。
- 基于 WebSocket 长连接,认证用一次性令牌,不暴露账号凭据
- 需要 HTTPS 环境才能调用麦克风,服务端默认已支持
- 对话过程实时显示连接状态、识别文本与合成进度
三类能力分开配,谁的便宜用谁的
语音识别、大语言模型、语音合成是三个独立的供应商条目。 你完全可以让识别用一家、生成用另一家、合成再用第三家,各自填自己的地址与密钥。 每个智能体还能指定不同的组合,用来做效果对比。
- 支持 OpenAI 兼容接口,以及自建 / 私有化推理服务
- 可设一个全局默认,新注册用户自动继承,省去逐个配置
- 保存前先做连通性测试,避免上线后才发现密钥写错
- 密钥在页面上脱敏显示,日志里不会明文落盘
| 能力 | 用途 |
|---|---|
| ASR | 把你的语音转成文字 |
| LLM | 理解意图并生成回复,人设与记忆在这里生效 |
| TTS | 把回复文字转成语音,决定音色与语速 |
| VLLM | 预留的视觉模型位,用于图像理解类扩展 |
出问题时,能自己查到原因
语音链路涉及外部模型服务,偶尔失败在所难免。服务端把每次关键调用与异常都写进日志, 并在后台提供查看入口,让你不必登录服务器就能定位是密钥、地址还是网络的问题。
- 对话记录区分「正常完成」与「被用户打断」两种状态
- 日志按天滚动,支持直接搜索错误关键字
- 概览页显示近七天对话趋势与待完成的配置项
需要二次开发?接口是现成的
除了设备协议与网页端,服务端还暴露了语音识别与语义理解的 HTTP 接口,可接进你自己的应用。
上传音频,返回识别文本。适合把语音输入接进客服、记事等场景。
curl -X POST "https://你的域名/api/asr" \ -H "Cookie: 你的会话" \ -F "audio=@voice.wav"
直接送文本,返回模型回答。适合把智能体能力接入小程序或公众号。
curl -X POST "https://你的域名/api/nlu" \ -H "Content-Type: application/json" \ -d "{\"text\":\"帮我推荐一段豫剧\"}"