1. 身份验证

    身份验证(IdentityVerifier),又称为多生物特征融合验证(Multi-biometrics Fusion Verification,简称MFV),支持人脸和声纹的 1:1 单一验证,1:1 融合验证,1:N 鉴别。需下载使用对应的身份验证SDK。

    MFV目前提供的功能组合:

    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)。

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

    子业务操作组合:

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

    在 1:1 的首次验证前,需要先指定用户 ID 进行注册。组鉴别前,需要先创建组,然后把用户 ID 加入到组中;在组鉴别时,指定组 ID,上传数据(音频或图片)后,将返回组内最匹配的几个用户 ID 及相似度。目前仅提供10个鉴别组进行开发调试。

    • 业务类型(MFV_SST)
    • 用户 ID(AUTH_ID)
    • 验证模式(MFV_VCM)

    在声纹注册时,需要先获取密码,密码结果通过 listener 中的回调获取。

    然后进行注册:

    注册人脸时,只要上传一张图片即可;而声纹注册时,则可能需要多次写入音频数据。注册结果状态通过 listener 的回调获取。

    1.2. 验证

    验证时,可通过 MFV_VCM 指定验证模式为单一(人脸或声纹),还是混合(人脸+声纹)。在混合模式下,需要分别写入图片和音频数据。

    鉴别与验证的过程相似,不过鉴别需要设置组 ID,以指定要鉴别的组。清参考身份识别中1:N检索部分。

    1.4. 模型和组管理

    声纹模型目前支持的操作有查询(query)、删除(delete)、密码下载(download)3种。人脸模型目前支持删除(delete)操作。组管理包括创建,查询,加入和删除。

    多生物特征融合验证平台的参数分为两种,分别为MFV主参数和子业务参数。

    MFV主参数通过 IdentityVerifier.setParameter(String key, String value) 方法进行设置,参数下表所示。

    注意:

    • scenes 和 vcm 必须组合使用:例如指定 vcm 为 sin 则 scenes 只可以选择 ifr 或者 ivp 单独业务,vcm 选择 mix 则 scenes 只可以选择 ifr|ivp。另:agi(灵活)模式可以设置 sences=ifr|ivp,在当次会话只发送一种业务数据,服务端保留验证结果,如在设置的时间间隔内再传入另外的业务数据即可做到混合验证。
    • 支持服务端回调通知业务。当用户进行了注册、验证操作后,讯飞服务端发送结果消息给开发者的业务服务器,如需此服务请联系:msp_support@iflytek.com
      子业务参数以String格式的键-值对在调用 IdentityVerifier.writeData(String ssub, String params, byte[] data, int offset, int length) 写入,子业务特征数据调用 IdentityVerifier.execute(String ssub, String cmd, String params, IdentityListener listener) 执行模型操作时传入,对应于params参数。详见 Demo。
    子业务名称说明取值默认值
    ivp(声纹)rgn注册次数。2-9。5(建议使用默认值,效果最好)
    ivp(声纹)ptxt密码文本,指定声纹密码注册时使用的声纹密码内容。由服务端下发,比如数字密码所需的数字串。无,必须指定
    ivp(声纹)pwdt密码类型,指定声纹密码注册时使用的声纹密码类型。3(数字密码)注:其他类型暂不支持。无,必须指定
    ifr(人脸)暂无
    ipt(组管理)auth_id用户id设备id,必须指定
    ipt(组管理)scope操作对象group(组)person(成员)无,必须指定
    person(成员)group_name创建的组名称无,必须指定
    person(成员)group_id加入的组id无,必须指定

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

    1.6. 安全性问题

    从前面模型和组管理的章节可以看到,在身份验证时,除在注意在声纹密码和人脸识别章节提到的安全性问题外(参考对应的章节内容),还需要注意对组 ID 的保密。在组管理中,通过指定组 ID,即可查询到所有组员的 AUTH_ID,当他人同时也获取到 libmsc.so (通过 APK 解压等)以及 APPID 时,通过 group_id 查到所有组员 auth_id,便可直接修改对应 auth_id 的模型。应用可以对展示给用户的组 ID 进行映射,例如可以让展示界面显示的,只是一个组的昵称等。

    从组 ID 需要保密可以知道,为了安全性,组管理并未提供通过 APPID 查询其所有组 ID 的功能——因为这样获取到 libmsc.so 和 APPID 的人就会获取到所有组 ID,从而获取到所有组员的 AUTH_ID,继而修改其模型。所以,应用在创建组后,需要保存组 ID,以在组管理和鉴别时使用。