基于讯飞“声纹识别”的本地登录的实现

  // 开始注册,当得到注册结果时,SDK 会将其封装成 VerifierResult 对象,回调 VerifierListener 对象 listener 的 onResult 方法进行处理,处理方法详见 Demo 示例

  mVerify.startListening(mRegisterListener);

  VerifierListener mRegisterListener = new VerifierListener() {

  public void onVolumeChanged( int volume, byte [] data) {}

  public void onResult(VerifierResult result) {

  public void onEvent( int eventType, int arg1, int arg2, Bundle obj) {}

  public void onError(SpeechError error) {}

  public void onEndOfSpeech() {}

  public void onBeginOfSpeech() {}

  };

  注意,当 auth_id 为空时(匿名用户) ,将使用设备的设备 ID 来标识注册的声纹模型。 由于设备 ID 不能跨设备,

  而且不同的设备所获取到的设备 ID 也有可能相同,推荐的作法是在注册模型的时为app 的每个用户都指定一个唯一的

  auth_id。auth_id 的格式为:6-18个字符,为字母、数字和下划线的组合且必须以字母开头,不支持中文字符,不能包含空格。

  3.2 声纹验证声纹验证过程与声纹注册类似,不同之处仅在于 ISV_SST 需要设置为”verify”,且不用设置 ISV_RGN 参数,其他参数的设置、验证结果的处理过程完全可参考上一节。

  另外, 为了达到较好的效果, 请在声纹注册与验证过程中尽量与麦克风保持同样的距离(建议的最佳距离是 15 厘米左右) 。如果距离差距较大的话,可能会对验证通过率产生较大影响。

  3.3 模型操作声纹注册成功后,在语音云端上会生成一个对应的模型来存储声纹信息,声纹模型的操作即对模型进行查询和删除。

  // 首先设置声纹密码类型

  mVerify.setParameter(SpeechConstant. ISV_PWDT , "" + pwdType);

  // 对于文本和数字密码,必须设置声纹注册时用的密码文本,pwdText 的取值为“芝麻开门”或者是从云平台拉取的数字密码。自由说略过此步

  mVerify.setParameter(SpeechConstant. ISV_PWD , pwdText);

  // 特别地,自由说一定要设置采样频率为 8000,其他密码则不需要

  mVerify.setParameter(SpeechConstant. SAMPLE_RATE , “8000”);

  // 设置待操作的声纹模型的 vid

  mVerify.setParameter(SpeechConstant. ISV_VID , vid);

  // 调用 sendRequest 方法查询或者删除模型, cmd 的取值为“que”或“del”, 表示查询或者删除, auth_id 是声纹对应的用户标识,操作结果以异步方式回调 SpeechListener 类型对象listener 的 onBufferReceived 方法进行处理,处理方法详见 Demo 示例

 

  mVerify.sendRequest(cmd, auth_id, listener);