一. 成果展示(以文本密碼為例)




二. 具體操作步驟 1. 預(yù)備工作
?、賹?dǎo)入聲紋識別 sdk 并新建一個 andriod 工程。
②將 IsvDemo 中 libs 目錄下的 Msc.jar 和 armeabi 復(fù)制到新建的 Android工程的 libs 目錄中,如下圖所示:

2. 添加用戶權(quán)限
> <uses-permission< p="">
> android:name="android.permission.INTERNET"/>
> <uses-permission< p="">
> android:name="android.permission.RECORD_AUDIO"/>
> <uses-permission< p="">
> android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission< p="">
> android:name="android.permission.ACCESS_WIFI_STATE"/>
> <uses-permission< p="">
> android:name="android.permission.READ_CONTACTS"/>
>
> <uses-permissionandroid:name="android.permission.write_external_storage">
3 調(diào)用聲紋識別的接口 3.1 聲紋注冊 現(xiàn)階段語音云平臺支持三種類型的聲紋密碼,即文本密碼、自由說和數(shù)字密碼,在注冊之前要選擇聲紋的類型。
// 首先創(chuàng)建 SpeakerVerifier 對象
mVerify = SpeakerVerifier. createVerifier ( this, null);
// 通過 setParameter 設(shè)置密碼類型,pwdType 的取值為 1、2、3,分別表示文本密碼、自由說和數(shù)字密碼
mVerify.setParameter(SpeechConstant. ISV_PWDT , "" + pwdType);
pwdType 的取值說明如下表所示:

除自由說外,其他兩種密碼需調(diào)用接口從云端獲取:
// 通過調(diào)用 getPasswordList 方法來獲取密碼。mPwdListener 是一個回調(diào)接口,當獲取到密碼后, SDK 會調(diào)用其中的 onBufferReceived 方法對云端返回的 JSON 格式)的密碼進行處理,處理方法詳見聲紋 Demo 示例。
mVerify.getPasswordList(SpeechListener mPwdListener);
SpeechListener mPwdListenter = new SpeechListener() {
public void onEvent(int eventType, Bundle params) {}
public void onBufferReceived(byte[] buffer) {}
public void onCompleted(SpeechError error) {}
};
獲取到密碼后,接下來進行聲紋注冊,即要求用戶朗讀若干次指定的內(nèi)容,這一過程也稱為聲紋模型的訓(xùn)練。
// 設(shè)置業(yè)務(wù)類型為訓(xùn)練
mVerify.setParameter(SpeechConstant. ISV_SST , "train");
// 設(shè)置密碼類型
mVerify.setParameter(SpeechConstant. ISV_PWDT , "" + pwdType);
// 對于文本密碼和數(shù)字密碼, 必須設(shè)置密碼的文本內(nèi)容, pwdText 的取值為“芝麻開門”或者是從云端拉取的數(shù)字密碼(每 8 位用“-”隔開,如“62389704-45937680-32758406-29530846-
58206497”)。自由說略過此步
mVerify.setParameter(SpeechConstant. ISV_PWD , pwdText);
// 對于自由說,必須設(shè)置采樣頻率為 8000,并設(shè)置 ISV_RGN 為 1。其他密碼可略過此步
mVerify.setParameter(SpeechConstant. SAMPLE_RATE , "8000");
mVerify.setParameter(SpeechConstant. ISV_RGN , "1");
// 設(shè)置聲紋模型對應(yīng)的 AUTH_ID,它是用戶的唯一標識,為空時表示這是一個匿名用戶
mVerify.setParameter(SpeechConstant. AUTH_ID , auth_id);