指标
此页面说明通过 WebRTC 数据通道发送给客户端的指标。
最后更新于
这有帮助吗?
这有帮助吗?
{
"label": "rtvi-ai",
"type": "metrics",
"data": {
"ttfb": [
{
"processor": "<PROCESSOR_INSTANCE>",
"model": "<MODEL_NAME>",
"value": "<TTFB_SECONDS>"
}
]
}
}{
"label": "rtvi-ai",
"type": "metrics",
"data": {
"processing": [
{
"processor": "<PROCESSOR_INSTANCE>",
"model": "<MODEL_NAME>",
"value": "<PROCESSING_SECONDS>"
}
]
}
}{
"label": "rtvi-ai",
"type": "metrics",
"data": {
"custom": [
{
"processor": "<PROCESSOR_INSTANCE>",
"model": "<MODEL_NAME>",
"metric": "<CUSTOM_METRIC_NAME>",
"value": "<CUSTOM_METRIC_VALUE>",
"type": "NeuroSyncMetricsData"
},
{
"processor": "<PROCESSOR_INSTANCE>",
"model": "<MODEL_NAME>",
"metric": "<CUSTOM_METRIC_NAME>",
"value": "<CUSTOM_METRIC_VALUE>",
"type": "NeuroSyncMetricsData"
}
]
}
}import { Room, RoomEvent } from "livekit-client";
const CORE_SERVICE_BASE_URL = "https://live.convai.com";
const API_KEY = "<X-Api-Key>";
const CHARACTER_ID = "<your character_id>";
async function startVoiceSessionAndWatchMetrics() {
// 1) 调用启用了 debug 的 /connect
const connectResp = await fetch(`${CORE_SERVICE_BASE_URL}/connect`, {
method: "POST",
headers: {
"x-api-key": API_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
character_id: CHARACTER_ID,
debug: true,
}),
});
if (!connectResp.ok) {
throw new Error(`/connect failed: ${connectResp.status}`);
}
const connectData = await connectResp.json();
const { room_url, token, session_id } = connectData;
// 2) 使用 room_url + token 加入 WebRTC 房间
const room = new Room();
room.on(RoomEvent.Connected, () => {
console.log("已连接到房间");
});
room.on(RoomEvent.DataReceived, (payload) => {
// LiveKit 数据负载是字节 -> 解码 -> 解析 JSON
let msg;
try {
const text = new TextDecoder().decode(payload);
msg = JSON.parse(text);
} catch {
return;
}
// 3) 仅过滤 RTVI 指标消息
if (msg?.label !== "rtvi-ai") return;
if (msg?.type !== "metrics") return;
const ttfb = msg?.data?.ttfb ?? [];
const processing = msg?.data?.processing ?? [];
const custom = msg?.data?.custom ?? [];
console.log("RTVI 指标", { ttfb, processing, custom });
});
room.on(RoomEvent.Disconnected, () => {
console.log("已断开与房间的连接");
});
await room.connect(room_url, token);
// 返回对象,以便调用方稍后断开连接/清理
return { room, session_id };
}
// 示例用法:
startVoiceSessionAndWatchMetrics().catch(console.error);