// 开始注册,当得到注册结果时,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);