跳到主要内容

AI 智能流式语音识别

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

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

前置条件

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

设置源语言

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

接口

在发起通话或接听通话前,您需要通过 RCCallClientsetSrcLanguageCode 方法设置源语言。具体支持的语言请参考语言代码列表

接口原型

Objective C
- (void)setSrcLanguageCode:(NSString *)languageCode;

参数说明

参数类型说明
languageCodeNSString语音识别的源语言代码,请参考语言代码列表

示例代码

Objective C
[[RCCallClient sharedRCCallClient] setSrcLanguageCode:@"en"];

注册语音识别代理

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

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

接口

在发起通话或接听通话前,您需要通过 RCCallClientsetASRDelegate 方法设置语音识别代理。设置后,您将收到以下回调:

接口原型

Objective C
- (void)setASRDelegate:(id<RCCallASRDelegate>)delegate;

参数说明

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

示例代码

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

Objective C
@interface ASRDelegate () <RCCallASRDelegate>
// 语音识别错误回调
- (void)didASRError:(NSInteger)code;
// 语音识别服务开启回调
- (void)didReceiveStartASR;
// 语音识别服务停止回调
- (void)didReceiveStopASR;
// 语音识别结果回调
- (void)didReceiveASRContent:(RCRTCASRContent *)asrContent;
@end

@implementation ASRDelegate
- (void)didASRError:(NSInteger)code {}
- (void)didReceiveStartASR {}
- (void)didReceiveStopASR {}
- (void)didReceiveASRContent:(RCRTCASRContent *)asrContent {}
@end

注册语音识别代理:

Objective C
ASRDelegate *asrDelegate = [[ASRDelegate alloc] init];
self.asrDelegate = asrDelegate;
[[RCCallClient sharedRCCallClient] setASRDelegate:self.asrDelegate];

开启语音识别服务

在通话接通后,您需要调用 RCCallClientstartASR 方法开启语音识别服务。开启成功后,其他客户端会通过 RCCallASRDelegatedidReceiveStartASR 方法收到通知。

注意

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

接口原型

Objective C
- (void)startASR:(void (^)(BOOL success, NSInteger code))completion;

参数说明

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

示例代码

Objective C
[[RCCallClient sharedRCCallClient] startASR:^(BOOL success, NSInteger code) {
// 开启语音识别服务回调
}];

设置是否接收语音识别

您可以通过 RCCallClientsetEnableASR 方法设置是否接收语音识别。如果选择接收,SDK 会通过 RCCallASRDelegatedidReceiveASRContent 方法通知识别结果。

提示

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

接口原型

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

参数说明

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

示例代码

Objective C
[[RCCallClient sharedRCCallClient] setEnableASR:YES];

停止语音识别服务

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

注意
  • 停止语音识别服务生效后,所有房间内的所有语音流撰写任务都将停止,请谨慎使用。
  • 任何加入通话的客户端都可以调用此接口停止语音识别服务。SDK 不限制调用权限,请根据您的业务需求进行权限控制。停止成功后,SDK 会通过 RCCallASRDelegatedidReceiveStopASR 方法通知其他客户端。

接口原型

Objective C
- (void)stopASR:(void (^)(BOOL success, NSInteger code))completion;

参数说明

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

示例代码

Objective C
[[RCCallClient sharedRCCallClient] stopASR:^(BOOL success, NSInteger code) {
// 停止语音识别服务回调
}];