TRTC AI 对话提供了显示实时字幕的能力。实时字幕通过 TRTC 的自定义消息发送,可以实现与音频对话毫秒级别的同步。
功能特点
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) { // 一句话说完了 } });