AI 智能流式语音识别
该功能支持在音视频通话、音视频会议、语聊房以及直播等多种场景下实时转写音频内容。此 AI 智能流式语音识别具有高准确率和低延迟的特点。
目前支持超过 50 种语言的识别,包括中文、英文、日语、韩语、阿拉伯语、法语、西班牙语、泰语、印尼语等,详见语音识别语言代码。
前置条件
AI 智能流式语音识别是融云 RTC SDK 的高级功能。若要使用,请在 AI 服务的服务购买页面开通此功能。
设置源语言
为提高语音识别的准确度,请根据您的业务需求设置合适的源语言。默认源语言为中文。
接口
在发起通话或接听通话前,您需要通过 RCCallClient 的 setSrcLanguageCode 方法设置源语言。具体支持的语言请参考语音识别语言代码。
接口原型
Objective C
- (void)setSrcLanguageCode:(NSString *)languageCode;
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
languageCode | NSString | 语音识别的源语言代码,请参考语音识别语言代码。 |
示例代码
Objective C
[[RCCallClient sharedRCCallClient] setSrcLanguageCode:@"en"];
注册语音识别代理
为了接收语音识别相关通知,您需要实现并注册相应的代理。通过代理,您可以接收以下通知:
- 语音识别服务的开启和停止
- 语音识别结果
- 语音识别错误
接口
在发起通话或接听通话前,您需要通过 RCCallClient 的 setASRDelegate 方法设置语音识别代理。设置后,您将收到以下回调:
- 开启服务成功:通过 RCCallASRDelegate 的
didReceiveStartASR方法通知。 - 停止服务成功:通过 RCCallASRDelegate 的
didReceiveStopASR方法通知。 - 识别结果:通过 RCCallASRDelegate 的
didReceiveASRContent方法通知。 - 识别错误:通过 RCCallASRDelegate 的
didASRError方法通知。
接口原型
Objective C
- (void)setASRDelegate:(id<RCCallASRDelegate>)delegate;
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
didASRError | 函数 | 语音识别错误回调 |
didReceiveStartASR | 函数 | 语音识别服务开启回调 |
didReceiveStopASR | 函数 | 语音识别服务停止回调 |
didReceiveASRContent | 函数 | 语音识别结果回调 |
asrContent参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
userId | NSString | 当前语音识别关联用户的 ID |
msgId | NSString | 当前语音识别的 ID,用于关联当前语音识别结果 |
timeUTC | NSTimeInterval | 当前语音识别的时间戳(单位:秒) |
msg | NSString | 当前语音识别结果 |
isEnd | BOOL | 当前语音识别是否结束,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];