// 開始注冊,當(dāng)?shù)玫阶越Y(jié)果時,SDK 會將其封裝成 VerifierResult 對象,回調(diào) VerifierListener 對象 listener 的 onResult 方法進(jìn)行處理,處理方法詳見 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() {}
};
注意,當(dāng) auth_id 為空時(匿名用戶) ,將使用設(shè)備的設(shè)備 ID 來標(biāo)識注冊的聲紋模型。 由于設(shè)備 ID 不能跨設(shè)備,
而且不同的設(shè)備所獲取到的設(shè)備 ID 也有可能相同,推薦的作法是在注冊模型的時為app 的每個用戶都指定一個唯一的
auth_id。auth_id 的格式為:6-18個字符,為字母、數(shù)字和下劃線的組合且必須以字母開頭,不支持中文字符,不能包含空格。
3.2 聲紋驗證聲紋驗證過程與聲紋注冊類似,不同之處僅在于 ISV_SST 需要設(shè)置為”verify”,且不用設(shè)置 ISV_RGN 參數(shù),其他參數(shù)的設(shè)置、驗證結(jié)果的處理過程完全可參考上一節(jié)。
另外, 為了達(dá)到較好的效果, 請在聲紋注冊與驗證過程中盡量與麥克風(fēng)保持同樣的距離(建議的最佳距離是 15 厘米左右) 。如果距離差距較大的話,可能會對驗證通過率產(chǎn)生較大影響。
3.3 模型操作聲紋注冊成功后,在語音云端上會生成一個對應(yīng)的模型來存儲聲紋信息,聲紋模型的操作即對模型進(jìn)行查詢和刪除。
// 首先設(shè)置聲紋密碼類型
mVerify.setParameter(SpeechConstant. ISV_PWDT , "" + pwdType);
// 對于文本和數(shù)字密碼,必須設(shè)置聲紋注冊時用的密碼文本,pwdText 的取值為“芝麻開門”或者是從云平臺拉取的數(shù)字密碼。自由說略過此步
mVerify.setParameter(SpeechConstant. ISV_PWD , pwdText);
// 特別地,自由說一定要設(shè)置采樣頻率為 8000,其他密碼則不需要
mVerify.setParameter(SpeechConstant. SAMPLE_RATE , “8000”);
// 設(shè)置待操作的聲紋模型的 vid
mVerify.setParameter(SpeechConstant. ISV_VID , vid);
// 調(diào)用 sendRequest 方法查詢或者刪除模型, cmd 的取值為“que”或“del”, 表示查詢或者刪除, auth_id 是聲紋對應(yīng)的用戶標(biāo)識,操作結(jié)果以異步方式回調(diào) SpeechListener 類型對象listener 的 onBufferReceived 方法進(jìn)行處理,處理方法詳見 Demo 示例
mVerify.sendRequest(cmd, auth_id, listener);