AI 智能总结
AI 智能总结是在 AI 智能流式语音识别功能基础上增加的智能总结功能。该功能能够自动分析会议内容,生成会议摘要、章节摘要、待办事项、话题提取等多种形式的总结内容,帮助用户快速回顾会议要点。
全场景适用
- 音视频会议:自动生成会议纪要,记录会议要点、决策事项和待办任务,提升会议效率。
- 在线培训:生成培训内容摘要和知识点总结,帮助学员快速回顾重点内容。
- 客户沟通:记录客户需求、沟通要点和后续跟进事项,确保信息不遗漏。
前置条件
AI 智能会议纪要是融云 RTC SDK 的高级功能。使用前需要满足以下条件:
服务开通
请提交工单开通。
功能依赖
AI 智能会议纪要基于 AI 智能流式语音识别,客户端使用该功能需要先集成 AI 智能流式语音识别 并开启语音识别服务。
设置昵称
设置的昵称不会被翻译,如有需求,可在加入房间时通过配置 IJoinRTCRoomOptions 中的 nickName 参数设置昵称。
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
nickName | string | 人员昵称,长度不超过 64 |
示例代码
rtcClient.joinRTCRoomWithOptions(roomId, {
nickName: 'testNickName'
});
设置智能总结事件通知
加入房间成功后,房间内其他人开启、关闭会议纪要时,本端可以通过 RCRTCRoom#registerRoomListener 方法设置 onReceiveStartSummarization 和 onReceiveStopSummarization 两个回调,接收会议纪要的开关状态变更。
room.registerRoomListener({
/**
* 开始智能总结
* @param taskId 可用于获取会议纪要、会议语音转文字内容
*/
onReceiveStartSummarization(taskId: string) {
// 业务层 todo
},
/**
* 结束智能总结
* @param taskId
*/
onReceiveStopSummarization(taskId: string) {
// 业务层 todo
},
})
开启智能总结
开始智能总结任务为房间级别接口。房间内开始智能总结任务后,房间内其他人会通过 IRoomEventListener 的 onReceiveStartSummarization 收到通知,获取 taskId。智能总结任务开始后,房间内的语音识别内容会被用于智能总结生成文本内容,可通过 stopSummarization 接口关闭智能总结。
智能总结依赖语音识别服务,需在房间监听事件 onReceiveStartASR 中执行。
/**
* 开始智能总结
*
* @description 执行时机:需在房间监听事件 `onReceiveStartASR` 中执行。
*
* @discussion
1. 智能总结任务依赖语音识别服务
2. 开始智能总结任务为房间级别接口,房间内开始智能总结任务,房间内其他人通过 IRoomEventListener 的 onReceiveStartSummarization 收到通知,拿到任务 Id
3. 智能总结任务开始后,房间内的语音识别内容会被用于智能总结生成文本内容
4. 智能总结任务开始后,可通过 stopSummarization 接口关闭
*
* @returns taskId 智能总结任务 Id
*/
const { code, taskId } = await room.startSummarization();
关闭智能总结
关闭智能总结任务为房间级别接口,房间内关闭智能总结任务,房间内其他人通过 IRoomEventListener 的 onReceiveStopSummarization 收到通知。
智能总结依赖语音识别服务,如果关闭语音识别,智能总结也会同时关闭。
room.stopSummarization();
生成智能总结
在智能总结任务开启后,您可以通过 RCRTCClient 的 generateSummarization 方法生成智能总结。该方法支持生成会议摘要、章节摘要、待办事项、话题提取等多种形式的总结内容。
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
roomId | string | 必传,生成智能总结的房间 Id |
taskId | string | 必传,智能总结任务 Id,通过 startSummarization 返回或 onReceiveStartSummarization 回调获取到 |
startTime | number | 本次需要总结的开始时间,UTC 时间戳,单位秒,传入 0,表示总结开始的时间 |
endTime | number | 本次需要总结的结束时间,UTC 时间戳,单位秒,传入 0,表示当前时间,如果总结已经停止,则表示总结结束的时间 |
config | IRCRTCGenerateSummarizationConfig | 生成智能总结配置。未配置 customPrompt 时,config 中的 enableSummarization、enableSummarizationDetails、enableChapterSummary、enableTodoList、enableHashtag 必须有一个为 true,否则不会产生任何总结内容 |
contentBlock | Function | 内容回调,如果内容比较多,contentBlock 会回调多次,isEnd 为 true 时,代表内容回调结束 |
IRCRTCGenerateSummarizationConfig 说明:
| 参数 | 类型 | 说明 |
|---|---|---|
customPrompt | string | 自定义提示词,最大长度 100 |
destLang | string | 输出智能总结的目标语言代码 |
enableSummarization | boolean | 是否输出总结摘要。即对整个会议的高度概括,默认 false |
enableSummarizationDetails | boolean | 是否输出总结详情,默认为 false |
enableChapterSummary | boolean | 是否输出章节摘要,即按时间线或话题划分的会议段落总结,默认为 false |
enableTodoList | boolean | 是否输出待办事项提取,自动识别会议中达成的共识和分配的任务,默认为 false |
enableHashtag | boolean | 是否输出话题提取,默认为 false |
format | RCRTCGenerateSummarizationFormat 枚举 | 输出格式,默认为 markdown |
代码示例
const startTime = 0;
const endTime = 0;
rtcClient.generateSummarization(
roomId, // 需输入实际 roomId
taskId, // 需输入实际 taskId
startTime,
endTime,
{
enableSummarization: true,
enableSummarizationDetails: true,
enableChapterSummary: true,
enableTodoList: true,
enableHashtag: true
},
(data: string, isEnd: boolean) => {
console.log('generateSummarization data block:', data, isEnd);
});
获取语音转文字内容
在智能总结任务开启后,您可以通过 RCRTCClient 的 getASRContent 方法获取指定时间段的语音转文字内容。该方法可以获取会议期间的完整语音识别文本。
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
roomId | string | 必传,获取语音转文字的房间 Id |
taskId | string | 必传,智能总结任务 Id,通过 startSummarization 返回或 onReceiveStartSummarization 回调获取到 |
startTime | number | 本次需要获取语音转文字的开始时间,UTC 时间戳,单位秒,传入 0,表示总结开始的时间 |
endTime | number | 本次需要获取语音转文字的结束时间,UTC 时间戳,单位秒,传入 0,表示当前时间,如果总结已经停止,则表示总结结束的时间 |
destLang | string | 目标语言代码,默认为语音源语言 |
contentBlock | Function | 内容回调,如果内容比较多,contentBlock 会回调多次,isEnd 为 true 时,代表内容回调结束 |
代码示例
const startTime = 0;
const endTime = 0;
rtcClient.getASRContent(
roomId, // 需输入实际 roomId
taskId, // 需输入实际 taskId
startTime,
endTime,
(data: string, isEnd: boolean) => {
console.log('getASRContent data block:', data, isEnd);
},
'en',
);