TRTC AI 对话实时字幕功能

最近更新时间:2024-11-08 18:05:32

我的收藏
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) { // 一句话说完了 } });