文档首页> 语音交互服务 SIS> SDK参考> IOS SDK> 使用录音文件识别
更新时间:2022-04-07 GMT+08:00
分享

使用录音文件识别

前提条件

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

初始化Client

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

表1 SisAuthInfo数据结构

参数名称

是否必选

参数类型

描述

ak

NSString

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

sk

NSString

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

endpoint

NSString

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

projectId

NSString

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

表2 SisConfig数据结构

参数名称

是否必选

参数类型

描述

connectionTimeout

NSInteger

连接超时,默认10s,单位s。

readTimeout

NSInteger

连接超时,默认10s,单位s。

请求参数

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

表3 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。

● 如果用户使用轮询方式获取识别结果,则无需提交该参数。

needAnalysisInfo

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参考》中创建热词表章节。

needWordInfo

NSString

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

响应参数

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

    参数名称

    是否必选

    参数类型

    描述

    error_code

    NSString

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

    error_msg

    NSString

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

    job_id

    NSString

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

  2. 录音文件识别状态查询响应参数统一为字典NSDictionary,具体参数如下表 状态查询响应参数表 segment 数据结构表 result 数据结构表 analysis_info数据结构表 word_info 数据结构。调用失败处理方法请参见错误码
表5 状态查询响应参数

参数名称

是否必选

参数类型

描述

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 数据结构

表6 segment 数据结构

参数名称

是否必选

参数类型

描述

start_time

NSInteger

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

end_time

NSInteger

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

result

NSDictionary

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

表7 result 数据结构

参数名称

是否必选

参数类型

描述

text

NSString

识别结果文本。

analysis_info

NSDictionary

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

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

word_info

NSArray

分词输出列表,参见表 word_info 数据结构

表8 analysis_info数据结构

参数名称

是否必选

参数类型

描述

role

NSString

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

emotion

NSString

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

speed

float

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

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

表9 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) {
        //返回的结果
        NSLog(@"返回的结果 = %@",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;
    //发起请求
    __weak typeof(self) weadSelf = self;
    [client getAsrLongResponse:jobId completion:^(NSDictionary * _Nonnull response) {
        //返回的结果
        NSLog(@"返回的结果 = %@",[self convertToJsonString:response]);
        weadSelf.textView.text = [NSString stringWithFormat:@"返回的结果 = \n %@",[self convertToJsonString:response]];
        
    }];
}
分享:

    相关文档

    相关产品

关闭导读