跳到主要内容

AI 智能流式语音识别

该功能支持在音视频通话、音视频会议、语聊房以及直播等多种场景下实时转写音频内容。此 AI 智能流式语音识别具有高准确率和低延迟的特点。

目前支持超过 50 种语言的识别,包括中文、英文、日语、韩语、阿拉伯语、法语、西班牙语、泰语、印尼语等,详见语言代码列表

前置条件

AI 智能流式语音识别是融云 RTC SDK 的高级功能。若要使用,请提交工单开通此功能。

设置源语言

为提高语音识别的准确度,请根据您的业务需求设置合适的源语言。默认源语言为中文。

接口

在加入房间时,您需要通过 RCRTCRoomConfig 中的 srcLanguageCode 属性设置源语言。具体支持的语言请参考语言代码列表

接口原型

Objective C
- (void)joinRoom:(NSString *)roomId
config:(RCRTCRoomConfig *)config
completion:(nullable void (^)(RCRTCRoom *_Nullable room, RCRTCCode code))completion;

参数说明

参数类型说明
roomIdNSString需要加入的房间 ID
configRCRTCRoomConfig加入房间的配置信息
completionBlock加入房间的回调
  • config 参数说明
参数类型说明
srcLanguageCodeNSString语音识别的源语言代码,请参考语言代码列表

示例代码

Objective C
RCRTCRoomConfig *config = [[RCRTCRoomConfig alloc] init];
config.srcLanguageCode = @"en";
[[RCRTCEngine sharedInstance] joinRoom:@"roomId" config:config completion:^(RCRTCRoom * _Nullable room, RCRTCCode code) {
// 加入房间回调
}];

注册语音识别代理

为了接收语音识别相关通知,您需要实现并注册相应的代理。通过代理,您可以接收以下通知:

  • 语音识别服务的开启和停止
  • 语音识别结果

接口

在加入房间成功后,您可以通过 RCRTCRoomdelegate 属性设置语音识别代理。设置后,您将收到以下回调:

接口原型

Objective C
@interface RCRTCRoom : RCRTCBaseRoom
@property (nonatomic, weak, nullable) id<RCRTCRoomEventDelegate> delegate;
@end

参数说明

参数类型说明
didReceiveStartASR函数语音识别服务开启回调
didReceiveStopASR函数语音识别服务停止回调
didReceiveASRContent函数语音识别结果回调
  • asrContent 参数说明
参数类型说明
userIdNSString当前语音识别关联用户的 ID
msgIdNSString当前语音识别的 ID,用于关联当前语音识别结果
timeUTCNSTimeInterval当前语音识别的时间戳(单位:秒)
msgNSString当前语音识别结果
isEndBOOL当前语音识别是否结束,YES 表示已结束

示例代码

实现 RCRTCRoomEventDelegate 中语音识别相关代理:

Objective C
@interface RoomDelegate () <RCRTCRoomEventDelegate>
// 语音识别服务开启回调
- (void)didReceiveStartASR;
// 语音识别服务停止回调
- (void)didReceiveStopASR;
// 语音识别结果回调
- (void)didReceiveASRContent:(RCRTCASRContent *)asrContent;
@end

@implementation RoomDelegate
- (void)didReceiveStartASR {}
- (void)didReceiveStopASR {}
- (void)didReceiveASRContent:(RCRTCASRContent *)asrContent {}
@end

注册语音识别代理:

Objective C
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;
}];

开启语音识别服务

在加入房间成功后,您可以通过以下步骤开启语音识别服务:

  1. 获取房间对象中的本地用户对象
  2. 调用 RCRTCLocalUserstartASR 方法开启服务

开启成功后,其他客户端会通过 RCRTCRoomEventDelegatedidReceiveStartASR 方法收到通知。

注意

任何加入房间的客户端都可以调用此接口开启语音识别服务。SDK 不限制调用权限,请根据您的业务需求进行权限控制。

接口

接口原型

Objective C
- (void)startASR:(nullable RCRTCOperationCallback)completion;

参数说明

参数类型说明
completionBlock开启语音识别服务的回调

示例代码

Objective C
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) {
// 开启语音识别服务回调
}];
}];

设置是否接收语音识别

在加入房间成功后,您可以通过 RCRTCLocalUsersetEnableASR 方法设置是否接收语音识别。如果选择接收,SDK 会通过 RCRTCRoomEventDelegatedidReceiveASRContent 方法通知识别结果。

提示

此接口具有预设功能。您可以在房间开启语音识别服务前调用,当服务开启后,SDK 会根据您的设置自动接收语音识别结果。

接口

接口原型

Objective C
- (int)setEnableASR:(BOOL)enable;

参数说明

参数类型说明
enableBOOLYES:接收语音识别
NO:停止接收语音识别

示例代码

Objective C
[this.room.localUser setEnableASR:YES];

停止语音识别服务

您可以通过 RCRTCLocalUserstopASR 方法停止语音识别服务。

注意

任何加入房间的客户端都可以调用此接口停止语音识别服务。SDK 不限制调用权限,请根据您的业务需求进行权限控制。停止成功后,SDK 会通过 RCRTCRoomEventDelegatedidReceiveStopASR 方法通知其他客户端。

接口

接口原型

Objective C
- (void)stopASR:(nullable RCRTCOperationCallback)completion;

参数说明

参数类型说明
completionBlock停止语音识别服务的回调

示例代码

Objective C
[this.room.localUser stopASR:^(BOOL isSuccess, RCRTCCode code) {
// 停止语音识别服务回调
}];