• 沒有找到結果。

使用录音文件识别

}

7.2 使用录音文件识别

前提条件

● 确保已经按照配置好IOS开发环境。

● 确保已存在待识别的音频文件并上传OBS或者有公网可访问服务器上(需保证可 使用域名访问),示例音频可参考下载SDK压缩包文件。如果音频存放在OBS 上,确保服务已授权访问OBS,可参考配置OBS服务。

初始化 Client

初始化AsrCustomizationClient,其参数包括SisAuthInfo和SisConfig,详见表

SisAuthInfo数据结构、表 SisConfig数据结构。

7-7 SisAuthInfo 数据结构

参数名称 是否必选 参数类型 描述

ak 是 NSString 用户的ak,可参考AK/SK认证。

sk 是 NSString 用户的sk,可参考AK/SK认证。

endpoint 是 NSString

终端节点如sis-ext.cn-north-4.myhuaweicloud.com。

projectId 是 NSString 项目ID,同region一一对应,参考获 取项目。

7-8 SisConfig 数据结构

参数名称 是否必选 参数类型 描述

connectionTime

out 否 NSInteger 连接超时,默认

10s,单位s。

readTimeout 否 NSInteger 连接超时,默认

10s,单位s。

请求参数

请求类为AsrCustomLongRequest,详见表 AsrCustomLongRequest数据结构。

7-9 AsrCustomLongRequest 数据结构

参数名称 是否必选 参数类型 描述

dataUrl 是 NSString 存放录音文件地址:

● 推荐使用华为云OBS:授权配置请参见

OBS配置。

● 您也可以把录音文件放在自行搭建服务 器上,提供下载文件的地址。URL不能 使用IP地址,只能使用域名,请尽量避 免中文

audioFormat 是 NSString 音频格式,具体信息请参见《API参考》中

录音文件识别章节。

property 是 NSString 属性字符串,语言_采样率_模型,如 chinese_8k_common。具体信息请参见

《API参考》中录音文件识别章节。

addPunc 否 NSString 表示是否在识别结果中添加标点,取值为 yes 、no,默认no。

digitNorm 否 NSString 表示是否将语音中的数字识别为阿拉伯数 字,取值为yes 、 no,默认为yes。

callbackUrl 否 NSString 表示回调 url,用户用于接收识别结果的服 务器地址,不支持ip方式调用,url长度小 于2048字节。服务请求方法为Post方式,

请求体为Json格式。

● 如果用户使用回调方式获取识别结果,

需提交该参数,处理成功后用户服务器需 返回状态码为200。

● 如果用户使用轮询方式获取识别结果,

则无需提交该参数。

needAnalysis

Info 否 BOOL 是否选择分析信息。当前仅对8k模型有

效。如果选择false,则声道、话者分离、

情绪检测、速度信息均无效。默认false。

diarization 否 BOOL 是否需要话者分离,表示识别结果会包含 role项,默认true。

channel 否 NSString 语音文件声道信息,可以为MONO(缺 省)、LEFT_AGENT、RIGHT_AGENT。

emotion 否 BOOL 是否需要做情绪检测,默认true。

speed 否 BOOL 是否需要输出语速信息,默认true。

vocabularyId 否 NSString 热词表id,不使用则不填写。创建热词表 请参考《API参考》中创建热词表章节。

needWordInf

o 否 NSString 表示是否在识别结果中输出分词结果信

息,取值为“yes”和“no”,默认为

“no”。

响应参数

1. 录音文件识别的响应参数统一为字典NSDictionary,具体参数如表 响应参数。

7-10 响应参数 参数名称 是否必

参数类 型

描述

error_cod

e 否 NSStrin

g 参见错误码列表,调用成功无此字段。

error_msg 否 NSStrin

g 返回错误信息,调用成功无此字段。

job_id 是 NSStrin

g 创建的任务标识, 如果创建任务成功时必须存 在。

2. 录音文件识别状态查询响应参数统一为字典NSDictionary,具体参数如下表 状态

查询响应参数、表 segment 数据结构、表 result 数据结构、表 analysis_info数 据结构和表 word_info 数据结构。

7-11 状态查询响应参数

参数名称 是否必选 参数类型 描述

error_code 否 NSString 参见错误码。

error_msg 否 NSString 返回错误信息。

job_id 否 NSString 录音文件识别任务标识符使用

“callback_url”回调url时,该字段会随 结果发送至用户服务器。使用get接口查 询,不会出现该字段。

status 否 NSString 当前识别状态。具体状态如下所示:

WAITING 等待识别。

FINISHED 识别已经完成。

ERROR 识别过程中发生错误。

create_time 否 NSString 任务创建时间,遵循 RFC 3339格式。

格式示例:2018-12-04T13:10:29.310Z。

start_time 否 NSString 开始识别时间,遵循 RFC 3339格式。

当status为FINISHED或ERROR时存在。

格式示例:2018-12-04T13:10:29.310Z。

finish_time 否 NSString 识别完成时间,遵循 RFC 3339格式。

当status为FINISHED或ERROR时存在。

格式示例:2018-12-04T13:10:29.310Z。

参数名称 是否必选 参数类型 描述

segments 否 NSArray 识别结果, 多句结果的数组。

数据结构参见表 segment 数据结构。

7-12 segment 数据结构

参数名称 是否必选 参数类型 描述

start_time 是 NSInteger 一句的起始时间戳,单位ms。

end_time 是 NSInteger 一句的结束时间戳,单位ms。

result 是 NSDiction

ary 调用成功表示识别结果,调用失败时无此 字段。数据结构参见表 result 数据结

构。

7-13 result 数据结构

参数名称 是否必选 参数类型 描述

text 是 NSString 识别结果文本。

analysis_info 否 NSDiction

ary 每一句的质检分析结果对象。

仅在识别配置中的need_analysis_info不 为null时存在该返回结果。数据结构参见

表 analysis_info数据结构。

word_info 否 NSArray 分词输出列表,参见表 word_info 数据

结构。

7-14 analysis_info 数据结构

参数名称 是否必选 参数类型 描述

role 否 NSString 角色类型,目前仅支持 AGENT(座 席),USER(用户)。

emotion 否 NSString 情绪类型,目前仅支持NORMAL(正 常),ANGRY(愤怒)。

speed 否 float 语速信息,单位是每秒字数。

在识别配置中speed为true时存在。

7-15 word_info 数据结构

参数名称 是否必选 参数类型 描述

start_time 否 NSInteger 起始时间 end_time 否 NSInteger 结束时间

word 否 NSString 分词

示例代码

/// 录音文件识别 - (void)longDemo{

//授权信息

SisAuthInfo *authInfo = [[SisAuthInfo alloc] initWithAk:kAppKey sk:kAppSecret endpoint:kEndpoint projectId:kProjectId];

//时间设置

SisConfig *config = [[SisConfig alloc] initDefault];

//请求参数赋值

AsrCustomLongRequest *request = [[AsrCustomLongRequest alloc] init];

//设置音频格式

request.audioFormat = @"pcm8k16bit";

//设置语言_采样率_模型,如chinese_8k_common request.property = @"chinese_8k_common";

//设置否是添加标点,yes 或no,默认是no request.addPunc = @"yes";

//设置是否在识别结果中输出分词结果信息,取值为“yes”和“no”,默认为“no”

request.needWordInfo = @"yes";

//设置声道,MONO/LEFT_AGENT/RIGHT_AGENT, 默认是单声道MONO request.channel = @"MONO";

//设置是否需要话者分离,若是,则识别结果包含role,默认true request.diarization = @(YES);

//设置是否需要情绪检测,默认true。

request.emotion = @(YES);

//设置是否需要速度。默认true。

request.speed = @(YES);

//设置音频文件地址

request.dataUrl = @"https://eastcom-api-test.obs.cn-north-4.myhuaweicloud.com/%E5%BD%95%E9%9F

%B3.wav";

//实例化请求对象

AsrCustomizationClient *client = [[AsrCustomizationClient alloc] initWithAuthInfo:authInfo config:config];

///是否开启SSL校验默认YES 开启 client.sslCertifi = NO;

//发起请求

__weak typeof(self) weadSelf = self;

[client submitJob:request completion:^(NSDictionary * _Nonnull response) { //返回的结果

- (void)getAsrLongResponse:(NSString *)jobId{

//授权信息

SisAuthInfo *authInfo = [[SisAuthInfo alloc] initWithAk:kAppKey sk:kAppSecret endpoint:kEndpoint projectId:kProjectId];

//时间设置

SisConfig *config = [[SisConfig alloc] initDefault];

//实例化请求对象

AsrCustomizationClient *client = [[AsrCustomizationClient alloc] initWithAuthInfo:authInfo config:config];

///是否开启SSL校验 默认YES 开启 client.sslCertifi = YES;

//发起请求

[client getAsrLongResponse:jobId completion:^(NSDictionary * _Nonnull response) { //返回的结果

NSLog(@"返回的结果 = %@",[self convertToJsonString:response]);

weadSelf.textView.text = [NSString stringWithFormat:@"返回的结果 = \n %@",[self convertToJsonString:response]];

}];

}