语音边界与话轮
VAD 提供语音起止信号,运行时负责话轮状态与输入收束。

默认媒体路径
WSS + PCM
16 kHz 单声道
设备接入
MQTT
原生协议适配
浏览器实验能力
WebRTC
明确标记实验性
外部协议在边缘终止。进入房间后,人、设备与 Agent 使用同一份媒体和控制契约。
边缘接入
运行时管理话轮,把独立的 ASR、LLM 与 TTS 阶段串成流式响应,并在新语音出现时协同取消进行中的工作。
VAD 提供语音起止信号,运行时负责话轮状态与输入收束。
将语音转换为阶段性与最终文本。
读取最终上下文并持续生成回复。
把回复合成为 Agent 参与者的音频。
启用后,转写与译文和音频共享同一个房间语境。
检测到新的用户语音后,取消尚未完成的模型与合成任务,再开始下一话轮。
Room Operations 把当前节点状态、控制面记录与浏览器联调放进一条可重复的排查路径。

工作空间范围
从受管记录与当前节点观测中找到目标房间,再进入详情。
在边缘选择协议,在房间内复用同一条实时媒体主线。
使用 WSS 传输 PCM 或 Opus,房间绑定由客户端身份决定。
WSS 为默认路径使用 WSS + PCM 接入实时音频与事件。WebRTC 作为浏览器实验路径保留。
客户端 Token 隔离身份由 MQTT Gateway 终止原生或 aispea 协议,再桥接到同一个房间媒体入口。
边缘协议适配Agent 使用工作空间限定的房间身份加入,并遵守与其他参与者相同的媒体与控制契约。
运行时能力取决于部署配置控制面把长期凭据与实时连接凭据分开。Gateway 再把客户端解析到工作空间限定的房间。
长期凭据
Workspace API Key 只用于服务端调用 Console API,不发送到浏览器或设备。
短期连接身份
服务端只把工作空间范围内的客户端身份交给对应终端。
鉴权 + 房间解析
Gateway 验证 Token,再向控制面解析客户端绑定的房间。
限定后的房间名
数据面使用 w_<workspaceId>:<room> 形式隔离同名房间。
浏览器不会收到 Workspace API Key、Provider Key 或房间签名密钥。
Console 管理持久配置与身份。独立实时服务终止协议、路由房间媒体并运行 AI 参与者。
拥有 PostgreSQL 中的工作空间、客户端、房间记录与运行时配置。
按内部媒体契约连接 Gateway、MQTT Gateway、Room 与 Agent runtime。
服务端签发客户端身份,终端连接 Gateway,并进入控制面分配的房间。
在工作空间内建立设备或应用身份。
由服务端使用 Workspace API Key 签发。
默认通过 WSS 协商 PCM 音频。
接收花名册、媒体与实时控制事件。
// server.ts: keep the Workspace API Key on your server.
const response = await fetch(`${hearoConsole}/api/v1/clients/ephemeral`, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.HEARO_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ room: "support", kind: "web" }),
});
const session = await response.json();
// Return only session.token from your authenticated app endpoint.
// client.ts: the browser receives a client token, never the API Key.
const { token } = await fetch("/api/voice-session", {
method: "POST",
}).then((result) => result.json());
const voice = new WebSocket(
`${gateway}?token=${encodeURIComponent(token)}&encoding=pcm_s16le`
);
voice.binaryType = "arraybuffer";