AI 智能流式语音识别
该功能支持在音视频通话、音视频会议、语聊房以及直播等多种场景下实时转写音频内容。此 AI 智能流式语音识别具有高准确率和低延迟的特点。
目前支持超过 50 种语言的识别,包括中文、英文、日语、韩语、阿拉伯语、法语、西班牙语、泰语、印尼语等,详见语言代码列表。
前置条件
AI 智能流式语音识别是融云 RTC SDK 的高级功能。若要使用,请提交工单开通此功能。
设置源语言
为提高语音识别的准确度,请根据您的业务需求设置合适的源语言。默认源语言为中文。
接口
在加入房间时,您需要通过 RCRTCRoomConfig 中的 srcLanguageCode
属性设置源语言。具体支持的语言请参考语言代码列表。
接口原型
- (void)joinRoom:(NSString *)roomId
config:(RCRTCRoomConfig *)config
completion:(nullable void (^)(RCRTCRoom *_Nullable room, RCRTCCode code))completion;
参数说明
参数 | 类型 | 说明 |
---|---|---|
roomId | NSString | 需要加入的房间 ID |
config | RCRTCRoomConfig | 加入房间的配置信息 |
completion | Block | 加入房间的回调 |
config
参数说明:
参数 | 类型 | 说明 |
---|---|---|
srcLanguageCode | NSString | 语音识别的源语言代码,请参考语言代码列表 |
示例代码
RCRTCRoomConfig *config = [[RCRTCRoomConfig alloc] init];
config.srcLanguageCode = @"en";
[[RCRTCEngine sharedInstance] joinRoom:@"roomId" config:config completion:^(RCRTCRoom * _Nullable room, RCRTCCode code) {
// 加入房间回调
}];
注册语音识别代理
为了接收语音识别相关通知,您需要实现并注册相应的代理。通过代理,您可以接收以下通知:
- 语音识别服务的开启和停止
- 语音识别结果
接口
在加入房间成功后,您可以通过 RCRTCRoom 的 delegate
属性设置语音识别代理。设置后,您将收到以下回调:
- 开启服务成功:通过 RCRTCRoomEventDelegate 的
didReceiveStartASR
方法通知。 - 停止服务成功:通过 RCRTCRoomEventDelegate 的
didReceiveStopASR
方法通知。 - 识别结果:通过 RCRTCRoomEventDelegate 的
didReceiveASRContent
方法通知。
接口原型
@interface RCRTCRoom : RCRTCBaseRoom
@property (nonatomic, weak, nullable) id<RCRTCRoomEventDelegate> delegate;
@end
参数说明
参数 | 类型 | 说明 |
---|---|---|
didReceiveStartASR | 函数 | 语音识别服务开启回调 |
didReceiveStopASR | 函数 | 语音识别服务停止回调 |
didReceiveASRContent | 函数 | 语音识别结果回调 |
asrContent
参数说明:
参数 | 类型 | 说明 |
---|---|---|
userId | NSString | 当前语音识别关联用户的 ID |
msgId | NSString | 当前语音识别的 ID,用于关联当前语音识别结果 |
timeUTC | NSTimeInterval | 当前语音识别的时间戳(单位:秒) |
msg | NSString | 当前语音识别结果 |
isEnd | BOOL | 当前语音识别是否结束,YES 表示已结束 |
示例代码
实现 RCRTCRoomEventDelegate 中语音识别相关代理:
@interface RoomDelegate () <RCRTCRoomEventDelegate>
// 语音识别服务开启回调
- (void)didReceiveStartASR;
// 语音识别服务停止回调
- (void)didReceiveStopASR;
// 语音识别结果回调
- (void)didReceiveASRContent:(RCRTCASRContent *)asrContent;
@end
@implementation RoomDelegate
- (void)didReceiveStartASR {}
- (void)didReceiveStopASR {}
- (void)didReceiveASRContent:(RCRTCASRContent *)asrContent {}
@end
注册语音识别代理:
RCRTCRoomConfig *config = [[RCRTCRoomConfig alloc] init];
config.srcLanguageCode = @"en";
[[RCRTCEngine sharedInstance] joinRoom:@"roomId" config:config completion:^(RCRTCRoom * _Nullable room, RCRTCCode code) {
this.roomDelegate = [[RoomDelegate alloc] init];
room.delegate = this.roomDelegate;
}];
开启语音识别服务
在加入房间成功后,您可以通过以下步骤开启语音识别服务:
- 获取房间对象中的本地用户对象
- 调用 RCRTCLocalUser 的
startASR
方法开启服务
开启成功后,其他客户端会通过 RCRTCRoomEventDelegate 的 didReceiveStartASR
方法收到通知。
任何加入房间的客户端都可以调用此接口开启语音识别服务。SDK 不限制调用权限,请根据您的业务需求进行权限控制。
接口
接口原型
- (void)startASR:(nullable RCRTCOperationCallback)completion;
参数说明
参数 | 类型 | 说明 |
---|---|---|
completion | Block | 开启语音识别服务的回调 |
示例代码
RCRTCRoomConfig *config = [[RCRTCRoomConfig alloc] init];
config.srcLanguageCode = @"en";
[[RCRTCEngine sharedInstance] joinRoom:@"roomId" config:config completion:^(RCRTCRoom * _Nullable room, RCRTCCode code) {
this.roomDelegate = [[RoomDelegate alloc] init];
room.delegate = this.roomDelegate;
[room.localUser startASR:^(BOOL isSuccess, RCRTCCode code) {
// 开启语音识别服务回调
}];
}];
设置是否接收语音识别
在加入房间成功后,您可以通过 RCRTCLocalUser 的 setEnableASR
方法设置是否接收语音识别。如果选择接收,SDK 会通过 RCRTCRoomEventDelegate 的 didReceiveASRContent
方法通知识别结果。
此接口具有预设功能。您可以在房间开启语音识别服务前调用,当服务开启后,SDK 会根据您的设置自动接收语音识别结果。
接口
接口原型
- (int)setEnableASR:(BOOL)enable;
参数说明
参数 | 类型 | 说明 |
---|---|---|
enable | BOOL | YES :接收语音识别NO :停止接收语音识别 |
示例代码
[this.room.localUser setEnableASR:YES];
停止语音识别服务
您可以通过 RCRTCLocalUser 的 stopASR
方法停止语音识别服务。
任何加入房间的客户端都可以调用此接口停止语音识别服务。SDK 不限制调用权限,请根据您的业务需求进行权限控制。停止成功后,SDK 会通过 RCRTCRoomEventDelegate 的 didReceiveStopASR
方法 通知其他客户端。
接口
接口原型
- (void)stopASR:(nullable RCRTCOperationCallback)completion;
参数说明
参数 | 类型 | 说明 |
---|---|---|
completion | Block | 停止语音识别服务的回调 |
示例代码
[this.room.localUser stopASR:^(BOOL isSuccess, RCRTCCode code) {
// 停止语音识别服务回调
}];