🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] 多生物特征融合验证(Multi-biometrics Fusion Verification,简称MFV)平台是科大讯飞推出的新一代个人身份验证平台。功能上支持**1:1单一验证,1:1 融合验证,1:N鉴别**。生物特征上支持**人脸、声纹**,并将在未来支持指纹、虹膜等其他特征信息。 ## 基本介绍 MFV目前提供的功能组合如下表所示: | |1:1单一验证 |1:1融合验证|1:N鉴别| | --- | --- | --- | --- | |人脸 | 人脸验证 |人脸声纹融合验证|人脸鉴别| |声纹 |声纹验证 |人脸声纹融合验证|声纹鉴别| MFV相关的概念如下表所示: | 概念| 英文标识| 说明| |:---:|:---:|---| | 用户id| auth_id| 用户身份的唯一标识。| |组id| group_id| 组的唯一标识。<br>组被用来限定1:N鉴别的用户范围。| |特征注册| enroll| 上传用户特征数据,在云端生成特征模型。<br>其中,人脸图像数据的大小应控制在200K以下。| |特征验证| verify| 上传用户特征数据,云端将其与已注册的特征模型<br>进行比对,返回结果(相似度、是否通过验证等)。| |融合验证| mixed verify| 上传用户多项特征数据,云端将其与已注册的多项<br>特征模型进行比对,返回结果(综合相似度、是否通过验证等)。| |特征鉴别| identify| 上传用户特征数据,并指定鉴别组id,云端将上传<br>数据与组内用户对应的已注册的特征模型进行比对,<br>返回结果(相似度排行、用户名称)。| |业务场景| scenes| 会话的场景。<br>包括:人脸(ifr),声纹(ivp),<br>人脸声纹融合(ifr \| ivp),组管理(ipt)。| |业务类型| sst| 会话的业务类型。<br>在不同的会话场景(scenes)下有不同的业务类型。| |子业务类型| ssub| 子业务类型。<br>包括:人脸(ifr),声纹(ivp),组管理(ipt)。| MFV业务场景与业务类型组合: | 场景类型 | 人脸(ifr) | 声纹(ivp) | 人脸声纹融合<br>(ifr \| ivp) | 组管理(ipt) | |:---:|:---:|:---:|:---:|:---:| |注册|√|√|-|-| |验证|√|√|√|-| |鉴别|√|√|-|-| 子业务操作组合: | |人脸(ifr)|声纹(ivp)|组管理(ipt)| |:---:|:---:|:---:|:---:| |创建|-|-|√| |加入|-|-|√| |查询|-|√|√| |删除|√|√|√| |密码下载|-|√|-| ## 功能使用 **1:1验证:** > 1. 首次使用需先进行特征注册。 >2. 开始验证。设定各项参数,接着开启会话,上传待验证的生物特征数据,最后获取验证结果并解析。 **1:N鉴别:** > 1. 首次使用需先进行特征注册。 >2. 创建组。 >3. 将相关的用户id加入到组中。 >4. 开始鉴别。指定鉴别组id及各项参数,接着开启会话,上传待鉴别的生物特征数据,最后获取鉴别结果并解析。 ### 特征注册 **人脸注册流程:** > 1. 设置参数:业务场景“人脸(ifr)”,业务类型“注册(enroll)”,用户id(auth_id)。 >2. 设置监听,开启会话。 >3. 指定子业务类型“人脸(ifr)”、人脸数据内容及数据长度,然后上传数据。 >4. 待会话监听器返回结果,此次注册操作结束。 **人脸注册示例代码:** ~~~ // 取消上次会话、清空参数 [self.identityVerifier cancel]; [self.identityVerifier setParameter:nil forKey:[IFlySpeechConstant PARAMS]]; // 人脸参数 // 设置sub 参数请求业务类型 [self.identityVerifier setParameter:@"mfv" forKey:[IFlySpeechConstant MFV_SUB]]; // 设置scenes, // 有“ifr(人脸)”,“ivp(声纹)”,“ifr|ivp(人脸和声纹)”三种取值, // 指明注册的特征种类 [self.identityVerifier setParameter:@"ifr" forKey:[IFlySpeechConstant MFV_SCENES]]; NSString* auth_id=self.authIdLabel.text; [self.identityVerifier setParameter:@"enroll" forKey:[IFlySpeechConstant MFV_SST]]; // 设置delegate ,auth_id,开始会话 [self.identityVerifier setParameter:auth_id forKey:[IFlySpeechConstant MFV_AUTH_ID]]; [self.identityVerifier startWorking]; // 人脸数据参数 NSString* dwtParams=[NSString stringWithFormat:@"%@=%@,",[IFlySpeechConstant MFV_SST],@"enroll"]; dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant MFV_AUTH_ID],auth_id]; // 压缩人脸数据并写入 NSData* data=[self.face compressedData]; [self.identityVerifier write:@"ifr" data:data offset:0 length:(int)[data length] withParams:dwtParams]; [self.identityVerifier stopWrite:@"ifr"]; // 回调接口定义如下, 使用方法参考demo源码; // 错误回调 - (void)onError:(IFlySpeechError *)error{} // 结果回调,results中包含有json格式结果,字段说明参考附录身份验证结果说明。 - (void)onResults:(IFlyIdentityResult *)results isLast:(BOOL)isLast{} // 扩展接口,用于抛出音量和vad_eos消息 - (void)onEvent:(int)eventType arg1:(int)arg1 arg2:(int)arg2 extra:(id)obj{} ~~~ **声纹注册:** > 1. 从云端下载声纹注册所用的数字密码文本。 >2. 设置参数:业务场景“声纹(ivp)”,业务类型“注册(enroll)”,用户id(auth_id)。 >3. 设置监听,开启会话。 >4. 指定子业务类型“声纹(ifr)”,设定声纹注册相关参数“训练次数(rgn)、密码内容(ptxt)、密码类型(pwdt)”,并指定声纹数据内容及长度,然后上传数据。 >5. 待会话监听器返回结果,此次注册操作结束。 **声纹注册示例代码:** ~~~ // 下载声纹密码 // 取消上次会话、清空参数 [self.identityVerifier cancel]; [self.identityVerifier setParameter:nil forKey:[IFlySpeechConstant PARAMS]]; // 设置scenes 为“ivp(声纹)” [self.identityVerifier setParameter:@"ivp" forKey:[IFlySpeechConstant MFV_SCENES]]; // 设置密码参数 NSString* params=[NSString stringWithFormat:@"%@=%d,%@=%d,",[IFlySpeechConstant MFV_PWDT],3,[IFlySpeechConstant MFV_RGN],TOTAL_TIMES]; // 执行获取密码操作 [self.identityVerifier execute:@"ivp" cmd:@"download" params:params]; // 声纹注册 // 取消上次会话、清空参数 [self.identityVerifier cancel]; [self.identityVerifier setParameter:nil forKey:[IFlySpeechConstant PARAMS]]; // 设置sub 参数请求业务类型,可选值: // mfv(默认,融合验证),ivp(声纹),ifr(人脸) [self.identityVerifier setParameter:@"mfv" forKey:[IFlySpeechConstant MFV_SUB]]; // 设置scenes, // 有“ifr(人脸)”,“ivp(声纹)”,“ifr|ivp(人脸和声纹)”三种取值, // 指明注册的特征种类 [self.identityVerifier setParameter:@"ivp" forKey:[IFlySpeechConstant MFV_SCENES]]; // 设置delegate ,auth_id,开始会话 self.identityVerifier.delegate=self; [self.identityVerifier setParameter:auth_id forKey:[IFlySpeechConstant MFV_AUTH_ID]]; [self.identityVerifier startWorking]; // 准备声纹注册相关参数,如训练次数、密码内容和密码类型等 // 注意:注册时使用的源码需要先从语音云下载再使用,详情参见demo源码; NSString* dwtParams=nil; dwtParams=[NSString stringWithFormat:@"%@=%@,",[IFlySpeechConstant MFV_SST],@"enroll"]; dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant MFV_RGN],@"5"]; NSString* dlPtxt=[numberPasswords componentsJoinedByString:@"-"]; dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant MFV_PTXT],dlPtxt]; dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant MFV_PWDT],@"3"]; // 开启VAD 功能 设置VAD_BOS(前端点) VAD_EOS(后端点) 设置采样率 dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant VAD_ENABLE],@"1"]; dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant VAD_BOS],@"10000"]; dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant VAD_EOS],@"2000"]; dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant MFV_DATA_FORMAT],@"16000"]; // 写入音频数据,data为音频数据 // 需要开发者自行从外部录音机IFlyPcmRecorder获取,获取方法详 // 见demo源码。 // writeData可以连续多次调用,调用的时候要指定子业务类型、子业务参数、写入 // 数据及长度 NSData *audioBuffer = [NSData dataWithBytes:buffer length:size]; [self.identityVerifier write:@"ivp" data:audioBuffer offset:0 length:(int)[audioBuffer length] withParams:dwtParams]; // 写入完成后,需要调用stopWrite停止写入,在停止的时候同样需要指定子业务类型。 // 只有stopWrite之后,才会触发delegate的回调接口,返回结果或者错误。 [self.identityVerifier stopWrite:@"ivp"]; // 回调接口定义如下, 使用方法参考demo源码; // 错误回调 - (void)onError:(IFlySpeechError *)error{} // 结果回调,results中包含有json格式结果,字段说明参考附录身份验证结果说明。 - (void)onResults:(IFlyIdentityResult *)results isLast:(BOOL)isLast{} // 扩展接口,用于抛出音量和vad_eos消息 - (void)onEvent:(int)eventType arg1:(int)arg1 arg2:(int)arg2 extra:(id)obj{} ~~~ ### 特征验证 根据场景不同,特征验证又分为**人脸验证、声纹验证以及人脸声纹融合验证**。验证的过程和注册的过程很相似,以下是**融合验证**的示例代码。 ~~~ // 取消上次会话、清空参数 [self.identityVerifier cancel]; [self.identityVerifier setParameter:nil forKey:[IFlySpeechConstant PARAMS]]; // 设置sst为verify [self.identityVerifier setParameter:@"verify" forKey:[IFlySpeechConstant MFV_SST]]; // 设置scenes,有“ifr(人脸)”,“ivp(声纹)”,“ifr|ivp(人脸和声纹)”三种取值,指明验证的// 特征种类,这里设置为“人脸+声纹”融合验证 [self.identityVerifier setParameter:@"ivp|ifr" forKey:[IFlySpeechConstant MFV_SCENES]]; [self.identityVerifier setParameter:@"mix" forKey:[IFlySpeechConstant MFV_VCM]]; // 设置delegate 、auth_id,开始会话 self.identityVerifier.delegate=self; [self.identityVerifier setParameter:auth_id forKey:[IFlySpeechConstant MFV_AUTH_ID]]; [self.identityVerifier startWorking]; // 准备人脸参数 NSString* dwtParams=[NSString stringWithFormat:@"%@=%@,",[IFlySpeechConstant MFV_AUTH_ID],auth_id]; dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant MFV_SST],@"verify"]; // 写入人脸照片数据,imageData为bitmap格式 NSData* data= UIImageJPEGRepresentation(self.face, 1.0); [self.identityVerifier write:@"ifr" data:data offset:0 length:(int)[data length] withParams:dwtParams]; [self.identityVerifier stopWrite:@"ifr"]; // 准备声纹验证相关参数,如密码内容和密码类型等 NSString* dwtParams=nil; dwtParams=[NSString stringWithFormat:@"%@=%@,",[IFlySpeechConstant MFV_SST],@"verify"]; NSString* ptxt=self.numberLabel.text; dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant MFV_PTXT],ptxt]; dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant MFV_PWDT],@"3"]; dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant VAD_ENABLE],@"1"]; dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant VAD_BOS],@"10000"]; dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant VAD_EOS],@"2000"]; dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant MFV_DATA_FORMAT],@"16000"]; // 写入音频数据,data为音频数据,需要开发者自行从外部录音机PcmRecorder获取, // 获取方法详见demo源码。writeData可以连续多次调用。 // 调用的时候要指定子业务类型、子业务参数、写入数据及长度 NSData *audioBuffer = [NSData dataWithBytes:buffer length:size]; [self.identityVerifier write:@"ivp" data:audioBuffer offset:0 length:(int)[audioBuffer length] withParams:dwtParams]; // 音频数据写入完成 [self.identityVerifier stopWrite:@"ivp"]; // 回调接口定义如下, 使用方法参考demo源码; // 错误回调 - (void)onError:(IFlySpeechError *)error{} // 结果回调,results中包含有json格式结果,字段说明参考附录身份验证结果说明。 - (void)onResults:(IFlyIdentityResult *)results isLast:(BOOL)isLast{} // 扩展接口,用于抛出音量和vad_eos消息 - (void)onEvent:(int)eventType arg1:(int)arg1 arg2:(int)arg2 extra:(id)obj{} ~~~ ### 特征鉴别 根据场景不同,特征鉴别分为**人脸鉴别和声纹鉴别**。两种鉴别流程相同,以**人脸鉴别**为例。 ~~~ // 取消上次会话、清空参数 [self.identityVerifier cancel]; [self.identityVerifier setParameter:nil forKey:[IFlySpeechConstant PARAMS]]; // 设置业务场景 [self.identityVerifier setParameter:@"ifr" forKey:[IFlySpeechConstant MFV_SCENES]]; // 设置业务类型 [self.identityVerifier setParameter:@"identify" forKey:[IFlySpeechConstant MFV_SST]]; // 设置写入数据参数 NSString* dwtParams=[NSString stringWithFormat:@"%@=%@,group_id=%@,topc=3",[IFlySpeechConstant MFV_SST],@"identify",self.groupID]; // 开始会话 [self.identityVerifier startWorking]; // 向子业务写入数据,人脸数据可以一次写入 NSData* data=[self.face compressedData]; [self.identityVerifier write:@"ifr" data:data offset:0 length:(int)[data length] withParams:dwtParams]; // 写入完毕 [self.identityVerifier stopWrite:@"ifr"]; // 回调接口定义如下, 使用方法参考demo源码; // 错误回调 - (void)onError:(IFlySpeechError *)error{} // 结果回调,results中包含有json格式结果,字段说明参考附录身份验证结果说明。 - (void)onResults:(IFlyIdentityResult *)results isLast:(BOOL)isLast{} // 扩展接口,用于抛出音量和vad_eos消息 - (void)onEvent:(int)eventType arg1:(int)arg1 arg2:(int)arg2 extra:(id)obj{} ~~~ ### 模型操作 声纹模型目前支持的操作有**查询(query)、删除(delete)、密码下载(download)**三种。人脸模型目前支持**删除(delete)**操作。 声纹密码下载(download),已经在声纹模型注册的过程中展示,此处不再赘述。 以**声纹模型查询**为例: ~~~ // 取消上次会话、清空参数 [self.identityVerifier cancel]; [self.identityVerifier setParameter:nil forKey:[IFlySpeechConstant PARAMS]]; // 设置场景为声纹 [self.identityVerifier setParameter:@"ivp" forKey:[IFlySpeechConstant MFV_SCENES]]; // 准备声纹验证相关参数,即密码内容和密码类型 [self.identityVerifier setParameter:[NSString stringWithFormat:@"%d",TOTAL_TIMES] forKey:[IFlySpeechConstant MFV_RGN]]; NSString* params=[NSString stringWithFormat:@"%@=%d,",[IFlySpeechConstant MFV_PWDT],3]; [self.identityVerifier setParameter:auth_id forKey:[IFlySpeechConstant MFV_AUTH_ID]]; // 调用execute方法执行操作。第一个参数为子业务类型,取值为“ivp”、“ifr”,// 第二个参数为操作类型,支持“query”(查询)、“delete”(删除)和 //“download”(密码下载)三种。 // 声纹密码下载也是通过调用execute方法,具体实现见IFlyMFVDemo源码。 [self.identityVerifier execute:@"ivp" cmd:@"query" params:params]; // 回调接口定义如下, 使用方法参考demo源码; // 错误回调 - (void)onError:(IFlySpeechError *)error{} // 结果回调,results中包含有json格式结果,字段说明参考附录身份验证结果说明。 - (void)onResults:(IFlyIdentityResult *)results isLast:(BOOL)isLast{} // 扩展接口,用于抛出音量和vad_eos消息 - (void)onEvent:(int)eventType arg1:(int)arg1 arg2:(int)arg2 extra:(id)obj{} ~~~ ### 组管理 组管理目前支持的操作有:**创建组、删除组、查询组用户、用户加入组以及用户退出组**。 **创建组**示例代码: ~~~ // 取消上次会话、清空参数 [self.identityVerifier cancel]; [self.identityVerifier setParameter:nil forKey:[IFlySpeechConstant PARAMS]]; // 设置会话场景 [self.identityVerifier setParameter:@"ipt" forKey:[IFlySpeechConstant MFV_SCENES]]; // 用户id NSString* authId=self.authIdLabel.text; [self.identityVerifier setParameter:authId forKey:[IFlySpeechConstant MFV_AUTH_ID]]; // 设置模型参数,若无可以传空字符串 NSString* params =[NSString stringWithFormat:@"auth_id=%@,scope=group,group_name=%@",authId,self.groupNameText.text]; // 执行模型操作 [self.identityVerifier execute:@"ipt" cmd:@"add" params:params]; // 回调接口定义如下, 使用方法参考demo源码; // 错误回调 - (void)onError:(IFlySpeechError *)error; // 结果回调,results中包含有json格式结果,字段说明参考附录身份验证结果说明。 - (void)onResults:(IFlyIdentityResult *)results isLast:(BOOL)isLast{} // 扩展接口,用于抛出音量和vad_eos消息 - (void)onEvent:(int)eventType arg1:(int)arg1 arg2:(int)arg2 extra:(id)obj{} ~~~ **删除组**示例代码: ~~~ // 取消上次会话、清空参数 [self.identityVerifier cancel]; [self.identityVerifier setParameter:nil forKey:[IFlySpeechConstant PARAMS]]; // 设置会话场景 [self.identityVerifier setParameter:@"ipt" forKey:[IFlySpeechConstant MFV_SCENES]]; // 用户id NSString* authId=self.authIdLabel.text; [self.identityVerifier setParameter:authId forKey:[IFlySpeechConstant MFV_AUTH_ID]]; // 设置模型参数,若无可以传空字符传 NSString* params =[NSString stringWithFormat:@"scope=group,group_id=%@",self.groupIdText.text]; // 执行模型操作 [self.identityVerifier execute:@"ipt" cmd:@"delete" params:params]; // 回调接口定义如下, 使用方法参考demo源码; // 错误回调 - (void)onError:(IFlySpeechError *)error{} // 结果回调,results中包含有json格式结果,字段说明参考附录身份验证结果说明。 - (void)onResults:(IFlyIdentityResult *)results isLast:(BOOL)isLast{} // 扩展接口,用于抛出音量和vad_eos消息 - (void)onEvent:(int)eventType arg1:(int)arg1 arg2:(int)arg2 extra:(id)obj{} ~~~ **查询组用户**示例代码: ~~~ // 取消上次会话、清空参数 [self.identityVerifier cancel]; [self.identityVerifier setParameter:nil forKey:[IFlySpeechConstant PARAMS]]; // 设置会话场景 [self.identityVerifier setParameter:@"ipt" forKey:[IFlySpeechConstant MFV_SCENES]]; // 用户id NSString* authId=self.authIdLabel.text; [self.identityVerifier setParameter:authId forKey:[IFlySpeechConstant MFV_AUTH_ID]]; // 设置模型参数,若无可以传空字符传 NSString* params =[NSString stringWithFormat:@"auth_id=%@,scope=group,group_id=%@",authId,self.groupIdText.text]; // 执行模型操作 [self.identityVerifier execute:@"ipt" cmd:@"query" params:params]; // 回调接口定义如下, 使用方法参考demo源码; // 错误回调 - (void)onError:(IFlySpeechError *)error{} // 结果回调,results中包含有json格式结果,字段说明参考附录身份验证结果说明。 - (void)onResults:(IFlyIdentityResult *)results isLast:(BOOL)isLast{} // 扩展接口,用于抛出音量和vad_eos消息 - (void)onEvent:(int)eventType arg1:(int)arg1 arg2:(int)arg2 extra:(id)obj{} ~~~ **用户加入组**示例代码: ~~~ // 取消上次会话、清空参数 [self.identityVerifier cancel]; [self.identityVerifier setParameter:nil forKey:[IFlySpeechConstant PARAMS]]; // 设置会话场景 [self.identityVerifier setParameter:@"ipt" forKey:[IFlySpeechConstant MFV_SCENES]]; // 用户id NSString* authId=self.authIdLabel.text; [self.identityVerifier setParameter:authId forKey:[IFlySpeechConstant MFV_AUTH_ID]]; // 设置模型参数,若无可以传空字符传 NSString* params =[NSString stringWithFormat:@"auth_id=%@,scope=person,group_id=%@",authId,self.groupIdText.text]; // 执行模型操作 [self.identityVerifier execute:@"ipt" cmd:@"add" params:params]; // 回调接口定义如下, 使用方法参考demo源码; // 错误回调 - (void)onError:(IFlySpeechError *)error; // 结果回调,results中包含有json格式结果,字段说明参考附录身份验证结果说明。 - (void)onResults:(IFlyIdentityResult *)results isLast:(BOOL)isLast; // 扩展接口,用于抛出音量和vad_eos消息 - (void)onEvent:(int)eventType arg1:(int)arg1 arg2:(int)arg2 extra:(id)obj; ~~~ **用户退出组**示例代码: ~~~ // 取消上次会话、清空参数 [self.identityVerifier cancel]; [self.identityVerifier setParameter:nil forKey:[IFlySpeechConstant PARAMS]]; // 设置会话场景 [self.identityVerifier setParameter:@"ipt" forKey:[IFlySpeechConstant MFV_SCENES]]; // 用户id NSString* authId=self.authIdLabel.text; [self.identityVerifier setParameter:authId forKey:[IFlySpeechConstant MFV_AUTH_ID]]; // 设置模型参数,若无可以传空字符传 NSString* params =[NSString stringWithFormat:@"auth_id=%@,scope=person,group_id=%@",authId,self.groupIdText.text]; // 执行模型操作 [self.identityVerifier execute:@"ipt" cmd:@"delete" params:params]; // 回调接口定义如下, 使用方法参考demo源码; // 错误回调 - (void)onError:(IFlySpeechError *)error[] // 结果回调,results中包含有json格式结果,字段说明参考附录身份验证结果说明。 - (void)onResults:(IFlyIdentityResult *)results isLast:(BOOL)isLast{} // 扩展接口,用于抛出音量和vad_eos消息 - (void)onEvent:(int)eventType arg1:(int)arg1 arg2:(int)arg2 extra:(id)obj{} ~~~ ## 参数设置 多生物特征融合验证平台的参数分为两种,分别为MFV主参数和子业务参数。 MFV主参数通过IFlyIdentityVerifier 的- (BOOL)setParameter:(NSString *)value forKey:(NSString *)key方法进行设置,参数如下表所示: |名称 |说明| 取值范围| 默认值| |:---:|---|---|---| |auth_id| 用户id,用户身份的唯一标识| 自拟,长度6-18位,仅包括英文、数字| 无| |group_id| 通过组管理功能创建的鉴别组的唯一标识| 长度20以内的字符串,由组管理功能创建得到,或由他人告知| 无,在鉴别场景下必须指定| |scenes| 会话场景| ifr(人脸),ivp(声纹),ifr \| ivp(人脸+声纹),组管理(ipt)| 无,必须指定| |sst| 会话的业务类型| enroll(注册),verify(验证),identify(鉴别)| 无,必须指定| |vcm| 验证模式,仅在验证场景下使用| sin(单一特征),mix(融合),agi(灵活)| 无,在验证场景下必须指定| |afc| 灵活验证保留结果时间| 0-43200s| 无,只在vcm设置成agi时生效| |prot_type| 联网协议| ssl| 非ssl协议| |sslcert| 证书内容| 证书内容| 赛门铁克安全证书(仅在prot_type=ssl时生效)| **注意:** > 1. scenes和vcm必须组合使用:例如指定vcm为sin 则scenes只可以选择ifr 或者 ivp单独业务,vcm选择mix则scenes只可以选择ifr|ivp。另:agi(灵活)模式可以设置sences=ifr|ivp,在当次会话只发送一种业务数据,服务端保留验证结果,如在设置的时间间隔内再传入另外的业务数据即可做到混合验证。 > 2. prot_type、sslcert参数也可在IFlySpeechUtility. createUtility时传入,之后每次会话都会生效。 > 3. 支持服务端回调通知业务。当用户进行了注册、验证操作后,讯飞服务端发送结果消息给开发者的业务服务器,如需此服务请联系:msp_support@iflytek.com **子业务参数**以String格式的键-值对在调用IflyIdentityVerifier的-(void)write:(NSString*)ssub data:(NSData*)data offset:(int)offset length:(int)length withParams:(NSString*)params;写入子业务特征数据或者调用-(void)execute:(NSString*)ssub cmd:(NSString*)cmd params:(NSString*)params;执行模型操作时传入,对应于params参数。详见IFlyMFVDemo。 ivp(声纹)子业务参数: |名称| 说明| 取值| 默认值| |:---:|---|---|---| |rgn| 注册次数。| 2-9| 5(建议使用默认值,效果最好) | |ptxt |密码文本,指定声纹密码注册时使用的声纹密码内容。| 由服务端下发,比如数字密码所需的数字串。 |无,必须指定| |pwdt| 密码类型,指定声纹密码注册时使用的声纹密码类型。| 3(数字密码)<br>注:其他类型暂不支持。| 无,必须指定| ipt(组管理)子业务参数: |名称| 说明| 取值| 默认值| |:---:|:---:|:---:|:---:| |auth_id| 用户id| | 设备id,必须指定| |scope |操作对象| group(组)<br>person(成员)| 无,必须指定| |group_name| 创建的组名称| | 无,必须指定| |group_id| 加入的组id| | 无,必须指定| 结果格式说明详见 [附录](附录.md) 中身份验证结果说明。