AI 对话字幕回调

TRTC AI 对话提供了显示实时字幕的能力。实时字幕通过 TRTC 的自定义消息发送,可以实现与音频对话毫秒级别的同步。
通过 TRTC SDK 接收自定义消息功能,在客户端上监听回调来接收实 AI 字幕的数据。cmdID 固定是1。

功能特点

1. 实时性:字幕与音频对话同步,延迟在毫秒级别。
2. 灵活性:使用自定义消息格式,便于集成和扩展。

消息格式

实时字幕消息使用 JSON 格式,具体字段如下:
字段
类型
描述
type
Number
消息类型,10000表示实时字幕
sender
String
说话人的 userid
receiver
Array
接收者 userid 列表,该消息实际在房间内广播
payload
Object
消息负载,包含字幕详细信息
payload 对象包含以下字段:
字段
类型
描述
text
String
语音识别出的原文本
start_time
String
这句话的开始时间,格式为 "HH:MM:SS"
end_time
String
这句话的结束时间,格式为 "HH:MM:SS"
roundid
String
唯一标识一轮对话的 ID
end
Boolean
如果为 true,代表这是一句完整的话

示例消息

{
"type": 10000,
"sender": "user_a",
"receiver": [],
"payload": {
"text": "你好,很高兴认识你。",
"start_time": "00:00:01",
"end_time": "00:00:03",
"roundid": "conversation_123456",
"end": true
}
}

实现注意事项

1. 消息处理:接收方需要正确解析 JSON 消息,并根据 type 字段识别实时字幕消息。
2. 时间同步:使用 start_time 和 end_time 确保字幕与音频正确对齐。
3. 对话分段:使用 end 字段判断一句话是否结束,可用于界面更新或存储完整对话。

Web SDK 自定义消息解析如下

trtcClient.on(TRTC.EVENT.CUSTOM_MESSAGE, (event) => {
let data = new TextDecoder().decode(event.data);
let jsonData = JSON.parse(data);
console.log(`receive custom msg from ${event.userId} cmdId: ${event.cmdId} seq: ${event.seq} data: ${data}`);
if (jsonData.type == 10000 && jsonData.payload.end == false) {
// 字幕中间状态
} else if (jsonData.type == 10000 && jsonData.payload.end == true) {
// 一句话说完了
}
});