[TOC]

多生物特征融合验证(Multi-biometrics Fusion Verification,简称MFV)平台是科大讯飞推出的新一代个人身份验证平台。功能上支持1:1单一验证,1:1 融合验证,1:N鉴别。生物特征上支持人脸、声纹,并将在未来支持指纹、虹膜等其他特征信息。

1.1. 基本介绍

MFV目前提供的功能组合如下表所示:

1:1单一验证1:1融合验证1:N鉴别
人脸人脸验证人脸声纹融合验证人脸鉴别
声纹声纹验证人脸声纹融合验证声纹鉴别

MFV相关的概念如下表所示:

概念英文标识说明
用户idauth_id用户身份的唯一标识。
组idgroup_id组的唯一标识。组被用来限定1:N鉴别的用户范围。
特征注册enroll上传用户特征数据,在云端生成特征模型。其中,人脸图像数据的大小应控制在200K以下。
特征验证verify上传用户特征数据,云端将其与已注册的特征模型进行比对,返回结果(相似度、是否通过验证等)。
融合验证mixed verify上传用户多项特征数据,云端将其与已注册的多项特征模型进行比对,返回结果(综合相似度、是否通过验证等)。
特征鉴别identify上传用户特征数据,并指定鉴别组id,云端将上传数据与组内用户对应的已注册的特征模型进行比对,返回结果(相似度排行、用户名称)。
业务场景scenes会话的场景。包括:人脸(ifr),声纹(ivp),人脸声纹融合(ifr \ivp),组管理(ipt)。
业务类型sst会话的业务类型。在不同的会话场景(scenes)下有不同的业务类型。
子业务类型ssub子业务类型。包括:人脸(ifr),声纹(ivp),组管理(ipt)。

MFV业务场景与业务类型组合:

场景类型人脸(ifr)声纹(ivp)人脸声纹融合组管理(ipt)
注册--
验证-
鉴别--

子业务操作组合:

人脸(ifr)声纹(ivp)组管理(ipt)
创建--
加入--
查询-
删除
密码下载--

1.2. 功能使用

1:1验证:

  1. 首次使用需先进行特征注册。
  2. 开始验证。设定各项参数,接着开启会话,上传待验证的生物特征数据,最后获取验证结果并解析。

1:N鉴别:

  1. 首次使用需先进行特征注册。
  2. 创建组。
  3. 将相关的用户id加入到组中。
  4. 开始鉴别。指定鉴别组id及各项参数,接着开启会话,上传待鉴别的生物特征数据,最后获取鉴别结果并解析。

1.2.1. 特征注册

人脸注册流程:

  1. 设置参数:业务场景“人脸(ifr)”,业务类型“注册(enroll)”,用户id(auth_id)。
  2. 设置监听,开启会话。
  3. 指定子业务类型“人脸(ifr)”、人脸数据内容及数据长度,然后上传数据。
  4. 待会话监听器返回结果,此次注册操作结束。

人脸注册示例代码:

  1. // 人脸参数
  2. // 设置sub 参数请求业务类型
  3. [self.identityVerifier setParameter:@"mfv" forKey:[IFlySpeechConstant MFV_SUB]];
  4. // 设置scenes,
  5. // 有“ifr(人脸)”,“ivp(声纹)”,“ifr|ivp(人脸和声纹)”三种取值,
  6. // 指明注册的特征种类
  7. [self.identityVerifier setParameter:@"ifr" forKey:[IFlySpeechConstant MFV_SCENES]];
  8. NSString* auth_id=self.authIdLabel.text;
  9. [self.identityVerifier setParameter:@"enroll" forKey:[IFlySpeechConstant MFV_SST]];
  10. // 设置delegate ,auth_id,开始会话
  11. [self.identityVerifier setParameter:auth_id forKey:[IFlySpeechConstant MFV_AUTH_ID]];
  12. [self.identityVerifier startWorking];
  13. // 人脸数据参数
  14. NSString* dwtParams=[NSString stringWithFormat:@"%@=%@,",[IFlySpeechConstant MFV_SST],@"enroll"];
  15. dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant MFV_AUTH_ID],auth_id];
  16. // 压缩人脸数据并写入
  17. NSData* data=[self.face compressedData];
  18. [self.identityVerifier write:@"ifr" data:data offset:0 length:(int)[data length] withParams:dwtParams];
  19. [self.identityVerifier stopWrite:@"ifr"];
  20. // 回调接口定义如下, 使用方法参考demo源码;
  21. // 错误回调
  22. - (void)onCompleted:(IFlySpeechError *)error{}
  23. // 结果回调,results中包含有json格式结果,字段说明参考附录身份验证结果说明。
  24. - (void)onResults:(IFlyIdentityResult *)results isLast:(BOOL)isLast{}
  25. // 扩展接口,用于抛出音量和vad_eos消息
  26. - (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. 待会话监听器返回结果,此次注册操作结束。

声纹注册示例代码:

  1. // 下载声纹密码
  2. // 取消上次会话、清空参数
  3. [self.identityVerifier cancel];
  4. [self.identityVerifier setParameter:nil forKey:[IFlySpeechConstant
  5. PARAMS]];
  6. // 设置scenes 为“ivp(声纹)”
  7. [self.identityVerifier setParameter:@"ivp" forKey:[IFlySpeechConstant MFV_SCENES]];
  8. // 设置密码参数
  9. NSString* params=[NSString stringWithFormat:@"%@=%d,%@=%d,",[IFlySpeechConstant MFV_PWDT],3,[IFlySpeechConstant MFV_RGN],TOTAL_TIMES];
  10. // 执行获取密码操作
  11. [self.identityVerifier execute:@"ivp" cmd:@"download" params:params];
  12. // 声纹注册
  13. // 取消上次会话、清空参数
  14. [self.identityVerifier cancel];
  15. [self.identityVerifier setParameter:nil forKey:[IFlySpeechConstant PARAMS]];
  16. // 设置sub 参数请求业务类型,可选值:
  17. // mfv(默认,融合验证),ivp(声纹),ifr(人脸)
  18. [self.identityVerifier setParameter:@"mfv" forKey:[IFlySpeechConstant MFV_SUB]];
  19. // 设置scenes,
  20. // 有“ifr(人脸)”,“ivp(声纹)”,“ifr|ivp(人脸和声纹)”三种取值,
  21. // 指明注册的特征种类
  22. [self.identityVerifier setParameter:@"ivp" forKey:[IFlySpeechConstant MFV_SCENES]];
  23. // 设置delegate ,auth_id,开始会话
  24. self.identityVerifier.delegate=self;
  25. [self.identityVerifier setParameter:auth_id forKey:[IFlySpeechConstant MFV_AUTH_ID]];
  26. [self.identityVerifier startWorking];
  27. // 准备声纹注册相关参数,如训练次数、密码内容和密码类型等
  28. // 注意:注册时使用的源码需要先从语音云下载再使用,详情参见demo源码;
  29. NSString* dwtParams=nil;
  30. dwtParams=[NSString stringWithFormat:@"%@=%@,",[IFlySpeechConstant MFV_SST],@"enroll"];
  31. dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant MFV_RGN],[NSNumber numberWithInt:TOTAL_TIMES]];
  32. NSString* dlPtxt=[numberPasswords componentsJoinedByString:@"-"];
  33. dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant MFV_PTXT],dlPtxt];
  34. dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant MFV_PWDT],@"3"];
  35. // 开启VAD 功能 设置VAD_BOS(前端点) VAD_EOS(后端点) 设置采样率
  36. dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant VAD_ENABLE],@"1"];
  37. dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant VAD_BOS],@"10000"];
  38. dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant VAD_EOS],@"2000"];
  39. dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant MFV_DATA_FORMAT],@"16000"];
  40. // 写入音频数据,data为音频数据
  41. // 需要开发者自行从外部录音机IFlyPcmRecorder获取,获取方法详
  42. // 见demo源码。
  43. // writeData可以连续多次调用,调用的时候要指定子业务类型、子业务参数、写入
  44. // 数据及长度
  45. NSData *audioBuffer = [NSData dataWithBytes:buffer length:size];
  46. [self.identityVerifier write:@"ivp" data:audioBuffer offset:0 length:(int)[audioBuffer length] withParams:dwtParams];
  47. // 写入完成后,需要调用stopWrite停止写入,在停止的时候同样需要指定子业务类型。
  48. // 只有stopWrite之后,才会触发delegate的回调接口,返回结果或者错误。
  49. [self.identityVerifier stopWrite:@"ivp"];
  50. // 回调接口定义如下, 使用方法参考demo源码;
  51. // 错误回调
  52. - (void)onCompleted:(IFlySpeechError *)error{}
  53. // 结果回调,results中包含有json格式结果,字段说明参考附录身份验证结果说明。
  54. - (void)onResults:(IFlyIdentityResult *)results isLast:(BOOL)isLast{}
  55. // 扩展接口,用于抛出音量和vad_eos消息
  56. - (void)onEvent:(int)eventType arg1:(int)arg1 arg2:(int)arg2 extra:(id)obj{}

1.2.2. 特征验证

  1. 根据场景不同,特征验证又分为**人脸验证、声纹验证以及人脸声纹融合验证**。验证的过程和注册的过程很相似,以下是**融合验证**的示例代码。
  2. // 取消上次会话、清空参数
  3. [self.identityVerifier cancel];
  4. [self.identityVerifier setParameter:nil forKey:[IFlySpeechConstant PARAMS]];
  5. // 设置sst为verify
  6. [self.identityVerifier setParameter:@"verify" forKey:[IFlySpeechConstant MFV_SST]];
  7. // 设置scenes,有“ifr(人脸)”,“ivp(声纹)”,“ifr|ivp(人脸和声纹)”三种取值,指明验证的// 特征种类,这里设置为“人脸+声纹”融合验证
  8. [self.identityVerifier setParameter:@"ivp|ifr" forKey:[IFlySpeechConstant MFV_SCENES]];
  9. [self.identityVerifier setParameter:@"mix" forKey:[IFlySpeechConstant MFV_VCM]];
  10. // 设置delegate 、auth_id,开始会话
  11. self.identityVerifier.delegate=self;
  12. [self.identityVerifier setParameter:auth_id forKey:[IFlySpeechConstant MFV_AUTH_ID]];
  13. [self.identityVerifier startWorking];
  14. // 准备人脸参数
  15. NSString* dwtParams=[NSString stringWithFormat:@"%@=%@,",[IFlySpeechConstant MFV_AUTH_ID],auth_id];
  16. dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant MFV_SST],@"verify"];
  17. // 写入人脸照片数据,imageData为bitmap格式
  18. NSData* data=[self.face compressedData];
  19. [self.identityVerifier write:@"ifr" data:data offset:0 length:(int)[data length] withParams:dwtParams];
  20. [self.identityVerifier stopWrite:@"ifr"];
  21. // 准备声纹验证相关参数,如密码内容和密码类型等
  22. NSString* dwtParams=nil;
  23. dwtParams=[NSString stringWithFormat:@"%@=%@,",[IFlySpeechConstant MFV_SST],@"verify"];
  24. NSString* ptxt=self.numberLabel.text;
  25. dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant MFV_PTXT],ptxt];
  26. dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant MFV_PWDT],@"3"];
  27. dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant VAD_ENABLE],@"1"];
  28. dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant VAD_BOS],@"10000"];
  29. dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant VAD_EOS],@"2000"];
  30. dwtParams=[dwtParams stringByAppendingFormat:@"%@=%@,",[IFlySpeechConstant MFV_DATA_FORMAT],@"16000"];
  31. // 写入音频数据,data为音频数据,需要开发者自行从外部录音机PcmRecorder获取,
  32. // 获取方法详见demo源码。writeData可以连续多次调用。
  33. // 调用的时候要指定子业务类型、子业务参数、写入数据及长度
  34. NSData *audioBuffer = [NSData dataWithBytes:buffer length:size];
  35. [self.identityVerifier write:@"ivp" data:audioBuffer offset:0 length:(int)[audioBuffer length] withParams:dwtParams];
  36. // 音频数据写入完成
  37. [self.identityVerifier stopWrite:@"ivp"];
  38. // 回调接口定义如下, 使用方法参考demo源码;
  39. // 错误回调
  40. - (void)onCompleted:(IFlySpeechError *)error{}
  41. // 结果回调,results中包含有json格式结果,字段说明参考附录身份验证结果说明。
  42. - (void)onResults:(IFlyIdentityResult *)results isLast:(BOOL)isLast{}
  43. // 扩展接口,用于抛出音量和vad_eos消息
  44. - (void)onEvent:(int)eventType arg1:(int)arg1 arg2:(int)arg2 extra:(id)obj{}

1.2.3. 特征鉴别

  1. 根据场景不同,特征鉴别分为**人脸鉴别和声纹鉴别**。两种鉴别流程相同,以**人脸鉴别**为例。
  2. // 取消上次会话、清空参数
  3. [self.identityVerifier cancel];
  4. [self.identityVerifier setParameter:nil forKey:[IFlySpeechConstant PARAMS]];
  5. // 设置业务场景
  6. [self.identityVerifier setParameter:@"ifr" forKey:[IFlySpeechConstant MFV_SCENES]];
  7. // 设置业务类型
  8. [self.identityVerifier setParameter:@"identify" forKey:[IFlySpeechConstant MFV_SST]];
  9. // 设置写入数据参数
  10. NSString* dwtParams=[NSString stringWithFormat:@"%@=%@,group_id=%@,topc=3",[IFlySpeechConstant MFV_SST],@"identify",self.groupID];
  11. // 开始会话
  12. [self.identityVerifier startWorking];
  13. // 向子业务写入数据,人脸数据可以一次写入
  14. NSData* data=[self.face compressedData];
  15. [self.identityVerifier write:@"ifr" data:data offset:0 length:(int)[data length] withParams:dwtParams];
  16. // 写入完毕
  17. [self.identityVerifier stopWrite:@"ifr"];
  18. // 回调接口定义如下, 使用方法参考demo源码;
  19. // 错误回调
  20. - (void)onCompleted:(IFlySpeechError *)error{}
  21. // 结果回调,results中包含有json格式结果,字段说明参考附录身份验证结果说明。
  22. - (void)onResults:(IFlyIdentityResult *)results isLast:(BOOL)isLast{}
  23. // 扩展接口,用于抛出音量和vad_eos消息
  24. - (void)onEvent:(int)eventType arg1:(int)arg1 arg2:(int)arg2 extra:(id)obj{}

1.2.4. 模型操作

  1. 声纹模型目前支持的操作有**查询(query)、删除(delete)、密码下载(download)**三种。人脸模型目前支持**删除(delete)**操作。
  2. 声纹密码下载(download),已经在声纹模型注册的过程中展示,此处不再赘述。
  3. 以**声纹模型查询**为例:
  4. // 取消上次会话、清空参数
  5. [self.identityVerifier cancel];
  6. [self.identityVerifier setParameter:nil forKey:[IFlySpeechConstant PARAMS]];
  7. // 设置场景为声纹
  8. [self.identityVerifier setParameter:@"ivp" forKey:[IFlySpeechConstant MFV_SCENES]];
  9. // 准备声纹验证相关参数,即密码内容和密码类型
  10. [self.identityVerifier setParameter:[NSString stringWithFormat:@"%d",TOTAL_TIMES] forKey:[IFlySpeechConstant MFV_RGN]];
  11. NSString* params=[NSString stringWithFormat:@"%@=%d,",[IFlySpeechConstant MFV_PWDT],3];
  12. [self.identityVerifier setParameter:auth_id forKey:[IFlySpeechConstant MFV_AUTH_ID]];
  13. // 调用execute方法执行操作。第一个参数为子业务类型,取值为“ivp”、“ifr”,// 第二个参数为操作类型,支持“query”(查询)、“delete”(删除)和
  14. //“download”(密码下载)三种。
  15. // 声纹密码下载也是通过调用execute方法,具体实现见IFlyMFVDemo源码。
  16. [self.identityVerifier execute:@"ivp" cmd:@"query" params:params];
  17. // 回调接口定义如下, 使用方法参考demo源码;
  18. // 错误回调
  19. - (void)onCompleted:(IFlySpeechError *)error{}
  20. // 结果回调,results中包含有json格式结果,字段说明参考附录身份验证结果说明。
  21. - (void)onResults:(IFlyIdentityResult *)results isLast:(BOOL)isLast{}
  22. // 扩展接口,用于抛出音量和vad_eos消息
  23. - (void)onEvent:(int)eventType arg1:(int)arg1 arg2:(int)arg2 extra:(id)obj{}

1.2.5. 组管理

  1. 组管理目前支持的操作有:**创建组、删除组、查询组用户、用户加入组以及用户退出组**。
  2. **创建组**示例代码:
  3. // 取消上次会话、清空参数
  4. [self.identityVerifier cancel];
  5. [self.identityVerifier setParameter:nil forKey:[IFlySpeechConstant PARAMS]];
  6. // 设置会话场景
  7. [self.identityVerifier setParameter:@"ipt" forKey:[IFlySpeechConstant MFV_SCENES]];
  8. // 用户id
  9. NSString* authId=self.authIdLabel.text;
  10. [self.identityVerifier setParameter:authId forKey:[IFlySpeechConstant MFV_AUTH_ID]];
  11. // 设置模型参数,若无可以传空字符串
  12. NSString* params =[NSString stringWithFormat:@"auth_id=%@,scope=group,group_name=%@",authId,self.groupNameText.text];
  13. // 执行模型操作
  14. [self.identityVerifier execute:@"ipt" cmd:@"add" params:params];
  15. // 回调接口定义如下, 使用方法参考demo源码;
  16. // 错误回调
  17. - (void)onCompleted:(IFlySpeechError *)error;
  18. // 结果回调,results中包含有json格式结果,字段说明参考附录身份验证结果说明。
  19. - (void)onResults:(IFlyIdentityResult *)results isLast:(BOOL)isLast{}
  20. // 扩展接口,用于抛出音量和vad_eos消息
  21. - (void)onEvent:(int)eventType arg1:(int)arg1 arg2:(int)arg2 extra:(id)obj{}
  1. **删除组**示例代码:
  2. // 取消上次会话、清空参数
  3. [self.identityVerifier cancel];
  4. [self.identityVerifier setParameter:nil forKey:[IFlySpeechConstant PARAMS]];
  5. // 设置会话场景
  6. [self.identityVerifier setParameter:@"ipt" forKey:[IFlySpeechConstant MFV_SCENES]];
  7. // 用户id
  8. NSString* authId=self.authIdLabel.text;
  9. [self.identityVerifier setParameter:authId forKey:[IFlySpeechConstant MFV_AUTH_ID]];
  10. // 设置模型参数,若无可以传空字符传
  11. NSString* params =[NSString stringWithFormat:@"scope=group,group_id=%@",self.groupIdText.text];
  12. // 执行模型操作
  13. [self.identityVerifier execute:@"ipt" cmd:@"delete" params:params];
  14. // 回调接口定义如下, 使用方法参考demo源码;
  15. // 错误回调
  16. - (void)onCompleted:(IFlySpeechError *)error{}
  17. // 结果回调,results中包含有json格式结果,字段说明参考附录身份验证结果说明。
  18. - (void)onResults:(IFlyIdentityResult *)results isLast:(BOOL)isLast{}
  19. // 扩展接口,用于抛出音量和vad_eos消息
  20. - (void)onEvent:(int)eventType arg1:(int)arg1 arg2:(int)arg2 extra:(id)obj{}
  1. **用户加入组**示例代码:
  2. // 取消上次会话、清空参数
  3. [self.identityVerifier cancel];
  4. [self.identityVerifier setParameter:nil forKey:[IFlySpeechConstant PARAMS]];
  5. // 设置会话场景
  6. [self.identityVerifier setParameter:@"ipt" forKey:[IFlySpeechConstant MFV_SCENES]];
  7. // 用户id
  8. NSString* authId=self.authIdLabel.text;
  9. [self.identityVerifier setParameter:authId forKey:[IFlySpeechConstant MFV_AUTH_ID]];
  10. // 设置模型参数,若无可以传空字符传
  11. NSString* params =[NSString stringWithFormat:@"auth_id=%@,scope=person,group_id=%@",authId,self.groupIdText.text];
  12. // 执行模型操作
  13. [self.identityVerifier execute:@"ipt" cmd:@"add" params:params];
  14. // 回调接口定义如下, 使用方法参考demo源码;
  15. // 错误回调
  16. - (void)onCompleted:(IFlySpeechError *)error;
  17. // 结果回调,results中包含有json格式结果,字段说明参考附录身份验证结果说明。
  18. - (void)onResults:(IFlyIdentityResult *)results isLast:(BOOL)isLast;
  19. // 扩展接口,用于抛出音量和vad_eos消息
  20. - (void)onEvent:(int)eventType arg1:(int)arg1 arg2:(int)arg2 extra:(id)obj;
  1. **用户退出组**示例代码:
  2. // 取消上次会话、清空参数
  3. [self.identityVerifier cancel];
  4. [self.identityVerifier setParameter:nil forKey:[IFlySpeechConstant PARAMS]];
  5. // 设置会话场景
  6. [self.identityVerifier setParameter:@"ipt" forKey:[IFlySpeechConstant MFV_SCENES]];
  7. // 用户id
  8. NSString* authId=self.authIdLabel.text;
  9. [self.identityVerifier setParameter:authId forKey:[IFlySpeechConstant MFV_AUTH_ID]];
  10. // 设置模型参数,若无可以传空字符传
  11. NSString* params =[NSString stringWithFormat:@"auth_id=%@,scope=person,group_id=%@",authId,self.groupIdText.text];
  12. // 执行模型操作
  13. [self.identityVerifier execute:@"ipt" cmd:@"delete" params:params];
  14. // 回调接口定义如下, 使用方法参考demo源码;
  15. // 错误回调
  16. - (void)onCompleted:(IFlySpeechError *)error[]
  17. // 结果回调,results中包含有json格式结果,字段说明参考附录身份验证结果说明。
  18. - (void)onResults:(IFlyIdentityResult *)results isLast:(BOOL)isLast{}
  19. // 扩展接口,用于抛出音量和vad_eos消息
  20. - (void)onEvent:(int)eventType arg1:(int)arg1 arg2:(int)arg2 extra:(id)obj{}

1.3. 参数设置

多生物特征融合验证平台的参数分为两种,分别为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

1.3.1. 子业务参数

  1. //以String格式的键-值对在调用
  2. IflyIdentityVerifier的-(void)write:(NSString*)ssub data:(NSData*)data offset:(int)offset length:(int)length withParams:(NSString*)params;
  3. //写入子业务特征数据或者调用
  4. -(void)execute:(NSString*)ssub cmd:(NSString*)cmd params:(NSString*)params;
  5. //执行模型操作时传入,对应于params参数。详见IFlyMFVDemo。

ivp(声纹)子业务参数:

名称说明取值默认值
rgn注册次数。2-95(建议使用默认值,效果最好)
ptxt密码文本,指定声纹密码注册时使用的声纹密码内容。由服务端下发,比如数字密码所需的数字串。无,必须指定
pwdt密码类型,指定声纹密码注册时使用的声纹密码类型。3(数字密码)注:其他类型暂不支持。无,必须指定

ipt(组管理)子业务参数:

名称说明取值默认值
auth_id用户id设备id,必须指定
scope操作对象group(组)person(成员)无,必须指定
group_name创建的组名称无,必须指定
group_id加入的组id无,必须指定

结果格式说明详见 附录 中身份验证结果说明。