AI 智能总结
AI 智能总结是在 AI 智能流式语音识别功能基础上增加的智能总结功能。该功能能够自动分析会议内容,生成会议摘要、章节摘要、待办事项、话题提取等多种形式的总结内容,帮助用户快速回顾会议要点。
全场景适用
- 音视频会议:自动生成会议纪要,记录会议要点、决策事项和待办任务,提升会议效率。
- 在线培训:生成培训内容摘要和知识点总结,帮助学员快速回顾重点内容。
- 客户沟通:记录客户需求、沟通要点和后续跟进事项,确保信息不遗漏。
前置条件
AI 智能总结是融云 RTC SDK 的高级功能。使用前需要满足以下条件:
服务开通
请提交工单开通。
功能依赖
AI 智能总结是基于 AI 智能流式语音识别开发的功能。使用该功能需要:
- 先集成 AI 智能流式语音识别 功能
- 在加入房间后开启语音识别功能(具体配置方法请参考 AI 智能流式语音识别 文档)
注册智能总结代理
为了接收智能总结相关通知,您需要实现并注册相应的代理。通过代理,您可以接收智能总结任务的状态通知。
在加入房间成功后,您可以通过 RCRTCRoom 的 delegate 属性设置智能总结代理。设置后,您将通过 RCRTCRoomEventDelegate 的 didReceiveStartSummarization 和 didReceiveStopSummarization 方法获得智能总结任务状态通知。
接口原型
@interface RCRTCRoom : RCRTCBaseRoom
@property (nonatomic, weak, nullable) id<RCRTCRoomEventDelegate> delegate;
@end
回调方法说明
| 方法 | 说明 |
|---|---|
didReceiveStartSummarization | 智能总结任务开始回调 |
didReceiveStopSummarization | 智能总结任务停止回调 |
didReceiveStartSummarization 参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
taskId | NSString | 智能总结任务 ID,用于后续生成智能总结 |
didReceiveStopSummarization 参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
taskId | NSString | 智能总结任务 ID |
示例代码
实现 RCRTCRoomEventDelegate 中智能总结相关代理:
@interface RoomDelegate () <RCRTCRoomEventDelegate>
// 智能总结任务开始回调
- (void)didReceiveStartSummarization:(NSString *)taskId;
// 智能总结任务停止回调
- (void)didReceiveStopSummarization:(NSString *)taskId;
@end
@implementation RoomDelegate
- (void)didReceiveStartASR {
// 语音识别开启回调
}
- (void)didReceiveStopASR {
// 语音识别停止回调
}
- (void)didReceiveStartSummarization:(NSString *)taskId {
// 处理智能总结任务开始通知
NSLog(@"智能总结任务开始,任务 ID:%@", taskId);
// 保存 taskId,用于后续生成智能总结
self.summarizationTaskId = taskId;
}
- (void)didReceiveStopSummarization:(NSString *)taskId {
// 处理智能总结任务停止通知
NSLog(@"智能总结任务停止,任务 ID:%@", taskId);
}
@end
注册智能总结代理:
RCRTCRoomConfig *config = [[RCRTCRoomConfig alloc] init];
[[RCRTCEngine sharedInstance] joinRoom:@"roomId" config:config completion:^(RCRTCRoom * _Nullable room, RCRTCCode code) {
self.roomDelegate = [[RoomDelegate alloc] init];
room.delegate = self.roomDelegate;
}];
开启智能总结
在加入房间成功后,您可以通过以下步骤开启智能总结服务:
- 获取房间对象中的本地用户对象。
- 调用 RCRTCLocalUser 的
startSummarization方法开启服务。
开启成功后,其他客户端会 通过 RCRTCRoomEventDelegate 的 didReceiveStartSummarization 方法收到通知。
智能总结依赖语音识别服务,需要在收到 RCRTCRoomEventDelegate 的 didReceiveStartASR 回调后,调用开启智能总结;智能总结为房间级别功能,房间内任意用户开启后,所有用户都会收到开始通知。
接口原型
- (void)startSummarization:(nullable void(^)(BOOL isSuccess, RCRTCCode code, NSString *taskId))completion;
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
completion | Block | 开启智能总结的回调,taskId 为智能总结任务 ID |
示例代码
[[RCRTCEngine sharedInstance] joinRoom:@"roomId" config:config completion:^(RCRTCRoom * _Nullable room, RCRTCCode code) {
self.roomDelegate = [[RoomDelegate alloc] init];
room.delegate = self.roomDelegate;
// 开启语音识别服务
[room.localUser startASR:^(BOOL isSuccess, RCRTCCode code) {
if (isSuccess) {
// 语音识别开启成功后,开启智能总结
[room.localUser startSummarization:^(BOOL isSuccess, RCRTCCode code, NSString *taskId) {
if (isSuccess) {
NSLog(@"智能总结开启成功,任务 ID:%@", taskId);
// 保存 taskId,用于后续生成智能总结
self.summarizationTaskId = taskId;
} else {
NSLog(@"智能总结开启失败,错误码:%ld", (long)code);
}
}];
}
}];
}];
关闭智能总结
您可以通过 RCRTCLocalUser 的 stopSummarization 方法关闭智能总结。
智能总结依赖语音识别服务,如果关闭语音识别,智能总结也会同时关闭。
接口原型
- (void)stopSummarization:(nullable void(^)(BOOL isSuccess, RCRTCCode code))completion;
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
completion | Block | 停止智能总结的回调 |
示例代码
[self.room.localUser stopSummarization:^(BOOL isSuccess, RCRTCCode code) {
if (isSuccess) {
NSLog(@"智能总结关闭成功");
} else {
NSLog(@"智能总结关闭失败,错误码:%ld", (long)code);
}
}];
生成智能总结
在智能总结任务开启后,您可以通过 RCRTCEngine 的 generateSummarization 方法生成智能总结。该方法支持生成会议摘要、章节摘要、待办事项、话题提取等多种形式的总结内容。
接口原型
- (void)generateSummarization:(nonnull NSString *)roomId
taskId:(nonnull NSString *)taskId
startTime:(NSTimeInterval)startTime
endTime:(NSTimeInterval)endTime
config:(nullable RCRTCGenerateSummarizationConfig *)config
contentBlock:(nullable void(^)(NSString *content))contentBlock
completion:(nullable void(^)(BOOL isSuccess, RCRTCCode code))completion;
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
roomId | NSString | 生成智能总结的房间 ID |
taskId | NSString | 智能总结任务 ID,通过 didReceiveStartSummarization 回调获取到 |
startTime | NSTimeInterval | 本次需要总结的开始时间,UTC 时间戳,单位秒,传入 0,表示总结开始的时间 |
endTime | NSTimeInterval | 本次需要总结的结束时间,UTC 时间戳,单位秒,传入 0,表示当前时间,如果总结已经停止,则表示总结结束的时间 |
config | RCRTCGenerateSummarizationConfig | 生成智能总结配置,详见下方 配置说明 |
contentBlock | Block | 内容回调,如果内容比较多,contentBlock 会回调多次 |
completion | Block | 结果回调 |
配置说明
RCRTCGenerateSummarizationConfig 配置类包含以下属性:
| 属性 | 类型 | 说明 |
|---|---|---|
customPrompt | NSString | 自定义提示词,最大长度 100 |
destLang | NSString | 输出智能总结的目标语言代码 |
enableSummarization | BOOL | 是否输出总结摘要,即对整个会议的高度概括,默认 NO |
enableSummarizationDetails | BOOL | 是否输出总结详情,默认 NO |
enableChapterSummary | BOOL | 是否输出章节摘要,即按时间线或话题划分的会议段落总结,默认 NO |
enableTodoList | BOOL | 是否输出待办事项提取,自动识别会议中达成的共识和分配的任务,默认 NO |
enableHashtag | BOOL | 是否输出话题提取,默认 NO |
format | RCRTCSummarizationFormat | 输出格式,RCRTCSummarizationFormatMarkDown 表示 MarkDown 格式,RCRTCSummarizationFormatJSON 表示 JSON 格式,默认 RCRTCSummarizationFormatMarkDown |
示例代码
// 创建智能总结配置
RCRTCGenerateSummarizationConfig *config = [[RCRTCGenerateSummarizationConfig alloc] init];
config.destLang = @"zh"; // 设置输出语言为中文
config.enableSummarization = YES; // 启用总结摘要
config.enableSummarizationDetails = YES; // 启用总结详情
config.enableChapterSummary = YES; // 启用章节摘要
config.enableTodoList = YES; // 启用待办事项提取
config.enableHashtag = YES; // 启用话题提取
config.format = RCRTCSummarizationFormatMarkDown; // 设置输出格式为 MarkDown
// 生成智能总结
[[RCRTCEngine sharedInstance] generateSummarization:@"roomId"
taskId:self.summarizationTaskId
startTime:0
endTime:0
config:config
contentBlock:^(NSString *content) {
// 接收智能总结内容,如果内容较多,此回调会多次调用
NSLog(@"智能总结内容:%@", content);
// 可以在这里拼接所有内容
[self.summarizationContent appendString:content];
}
completion:^(BOOL isSuccess, RCRTCCode code) {
if (isSuccess) {
NSLog(@"智能总结生成成功");
// 使用完整的总结内容
NSLog(@"完整总结内容:%@", self.summarizationContent);
} else {
NSLog(@"智能总结生成失败,错误码:%ld", (long)code);
}
}];
获取语音转文字
在智能总结任务开启后,您可以通过 RCRTCEngine 的 getASRContent 方法获取指定时间段的语音转文字内容。该方法可以获取会议期间的完整语音识别文本。
接口原型
- (void)getASRContent:(nonnull NSString *)roomId
taskId:(nonnull NSString *)taskId
startTime:(NSTimeInterval)startTime
endTime:(NSTimeInterval)endTime
destLang:(nullable NSString *)destLang
contentBlock:(nullable void(^)(NSString *content))contentBlock
completion:(nullable void(^)(BOOL isSuccess, RCRTCCode code))completion;
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
roomId | NSString | 获取语音转文字的房间 ID |
taskId | NSString | 智能总结任务 ID,通过 didReceiveStartSummarization 回调获取到 |
startTime | NSTimeInterval | 本次需要获取语音转文字的开始时间,UTC 时间戳,单位秒,传入 0,表示总结开始的时间 |
endTime | NSTimeInterval | 本次需要获取语音转文字的结束时间,UTC 时间戳,单位秒,传入 0,表示当前时间,如果总结已经停止,则表示总结结束的 时间 |
destLang | NSString | 目标语言代码,如果传入 nil,则使用默认语言 |
contentBlock | Block | 内容回调,如果内容比较多,contentBlock 会回调多次 |
completion | Block | 结果回调 |
示例代码
// 获取语音转文字内容
[[RCRTCEngine sharedInstance] getASRContent:@"roomId"
taskId:self.summarizationTaskId
startTime:0
endTime:0
destLang:@"zh" // 设置目标语言为中文,传入 nil 则使用默认语言
contentBlock:^(NSString *content) {
// 接收语音转文字内容,如果内容较多,此回调会多次调用
NSLog(@"语音转文字内容:%@", content);
// 可以在这里拼接所有内容
[self.asrContent appendString:content];
}
completion:^(BOOL isSuccess, RCRTCCode code) {
if (isSuccess) {
NSLog(@"语音转文字获取成功");
// 使用完整的语音转文字内容
NSLog(@"完整语音转文字内容:%@", self.asrContent);
} else {
NSLog(@"语音转文字获取失败,错误码:%ld", (long)code);
}
}];